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

2020-11-06 11:25:47 浏览数 (2)

论文标题: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}=gleft(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 & Kleft(vec{c}, c_{*}right) \Kleft(c_{*}, vec{c}right) & kleft(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_{*}=Kleft(c_{*}, vec{c}right)left(K(vec{c}, vec{c}) sigma^{2} Iright)^{-1} vec{r}
Sigma_{*}=kleft(c_{*}, c_{*}right) sigma^{2}-Kleft(c_{*}, vec{c}right)(K(vec{c}, vec{c}) left.sigma^{2} Iright)^{-1} Kleft(vec{c}, c_{*}right)
Sigma_{*}=kleft(c_{*}, c_{*}right) sigma^{2}-Kleft(c_{*}, vec{c}right)(K(vec{c}, vec{c}) left.sigma^{2} Iright)^{-1} Kleft(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

仅用于学习交流!

(本文为粉丝投稿)

0 人点赞