首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >​使用高斯过程回归指导网络轻量化

​使用高斯过程回归指导网络轻量化

作者头像
CV君
发布2020-11-06 11:25:47
6260
发布2020-11-06 11:25:47
举报

论文标题:Model Rubik's Cube:Twisting Resolution, Depth and Width for TinyNets(NeurIPS 2020)

论文地址:https://arxiv.org/pdf/2010.14819.pdf

本文亮点

1.全面分析了在减小网络计算量时,减小输入图片分辨率、减小宽度和减小深度对网络精度的影响程度。

2.通过实验表明按照EfficientNet中的方法减小网络计算量不一定是最优的方法。

3.在网络计算量的限制下,使用高斯过程回归的方法寻找最优的输入图片分辨率、网络宽度和深度。并通过实验证明了使用该方法做网络轻量化的有效性。

4.方法简单,具有通用性,不会引入AI加速器不支持的算子。

关键内容

为了探索在构建轻量化网络时,减小输入图片分辨率、减小宽度、减少深度对网络性能的影响,作者做了一个实验。

以EfficientNet-B0为baseline去做网络轻量化,使得目标网络的计算量为原来一半,即200M FLOPs左右。分别使用、表示目标网络和baseline的宽度比值和深度比值,使用表示目标网络和baseline网络的输入图片长度(或宽度)比值,所以目标网络和baseline网络的输入图片的面积比值为。

随机选取和,在网络计算量的限制下,根据选取的和可得到。按照此方法可以得到若干个网络。

在ImageNet-100数据集上训练这些网络,得到的结果如下图所示。图中的EfficientNet-B-1是指按照EfficientNet论文中的方法减小baseline得到的目标网络。

上面三个图分别描述了这些模型、和和性能的关系。由上图可得到如下结论:

  • 性能较好的网络,它们的、和大都在如下范围内:
0.8<r<1.4,0.5<d<2,w<1
  • 按照EfficientNet论文中的思想去减少EfficientNet-B0的计算量,得到的模型不是最优的。
  • 同等计算量下,适当增加图片分辨率能得到高性能的网络。

给定计算量为的baseline模型,要得到计算量为

的轻量化模型,就是要求取目标模型的、和,因此、和都是的函数,即:

若要得到高性能的轻量化目标模型,需要探索一个问题:不同计算量下,什么样的模型有高性能?

为了得到上述问题的答案,作者做了一个实验,在一定范围内随机选取、和的值,得到若干模型,保留计算量在和之间的模型,训练这些模型,并在验证集上测量精度,得到下图:

图中画出了这些模型的计算量和精度,可以发现,在相似计算量下,一些模型精度超过了使用EfficientNet方法得到的模型。

使用NSGA-III方法,选取兼具高性能和低计算量的20个模型,为了探索这些好模型的、和的特点,将选取的20个模型做图如下:

分别计算、和与的相关度,得到结论:好的模型,输入图像分辨率和计算量有很强的相关性,深度和计算量有较强的相关性,宽度和计算量有弱的相关性。

使用高斯过程回归分别对和、和之间的关系进行建模,将上图中的20个模型作为训练数据。

下面阐述对和之间关系的建模过程。

使用表示训练集中20个模型的值,使用表示训练集中20个模型的值,训练集可表示为。建立高斯过程模型:

r^{i}=g\left(c^{i}\right)+\epsilon^{i}, \quad i=1, \cdots, m

上式中是服从分布的随机噪声。根据高斯过程回归的理论,给定1个新的,要求得的与的联合高斯分布如下:

\left[\begin{array}{c}\vec{r} \\r_{*}\end{array}\right] \mid \vec{c}, c_{*} \sim \mathcal{N}\left(\overrightarrow{0},\left[\begin{array}{cc}K(\vec{c}, \vec{c})+\sigma^{2} I & K\left(\vec{c}, c_{*}\right) \\K\left(c_{*}, \vec{c}\right) & k\left(c_{*}, c_{*}\right)+\sigma^{2}\end{array}\right]\right)

上式中,,,,取RBF。可得到的概率分布如下:

r_{*} \mid \vec{r}, \vec{c}, c_{*} \sim \mathcal{N}\left(\mu_{*}, \Sigma_{*}\right)
\mu_{*}=K\left(c_{*}, \vec{c}\right)\left(K(\vec{c}, \vec{c})+\sigma^{2} I\right)^{-1} \vec{r}
\Sigma_{*}=k\left(c_{*}, c_{*}\right)+\sigma^{2}-K\left(c_{*}, \vec{c}\right)(K(\vec{c}, \vec{c})+\left.\sigma^{2} I\right)^{-1} K\left(\vec{c}, c_{*}\right)
\Sigma_{*}=k\left(c_{*}, c_{*}\right)+\sigma^{2}-K\left(c_{*}, \vec{c}\right)(K(\vec{c}, \vec{c})+\left.\sigma^{2} I\right)^{-1} K\left(\vec{c}, c_{*}\right)

和之间关系的建模与之类似。建模完成后,可得到与给定的某个(0<c<1)值对应的最好的r值和d值,则。

作者使用EfficientNet-B0为baseline,选取,得到TinyNet-A~TinyNet-E共5个轻量级模型。

这些模型在ImageNet-1000数据集的性能如下表所示,其中RA表示使用了论文《Randaugment:Practical automated data augmentation with a reduced search space》中数据增强的方法。

此外,作者按照EfficientNet中的思想减小网络计算量,设计了名为Efficient-B-3的网络结构,将其作为SSDLite的Backbone进行目标检测算法的训练;

使用TinyNet-D网络做SSDLite的Backbone,比较两种Backbone的性能,如下表所示,说明了TinyNet系列网络有较强的通用性。

代码(即将开源):https://github.com/huawei-noah/CV-Backbones/tree/main/tinynet

仅用于学习交流!

(本文为粉丝投稿)

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-11-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 我爱计算机视觉 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档