论文标题: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得到的目标网络。
上面三个图分别描述了这些模型、和和性能的关系。由上图可得到如下结论:
- 性能较好的网络,它们的、和大都在如下范围内:
- 按照EfficientNet论文中的思想去减少EfficientNet-B0的计算量,得到的模型不是最优的。
- 同等计算量下,适当增加图片分辨率能得到高性能的网络。
给定计算量为的baseline模型,要得到计算量为
的轻量化模型,就是要求取目标模型的、和,因此、和都是的函数,即:
若要得到高性能的轻量化目标模型,需要探索一个问题:不同计算量下,什么样的模型有高性能?
为了得到上述问题的答案,作者做了一个实验,在一定范围内随机选取、和的值,得到若干模型,保留计算量在和之间的模型,训练这些模型,并在验证集上测量精度,得到下图:
图中画出了这些模型的计算量和精度,可以发现,在相似计算量下,一些模型精度超过了使用EfficientNet方法得到的模型。
使用NSGA-III方法,选取兼具高性能和低计算量的20个模型,为了探索这些好模型的、和的特点,将选取的20个模型做图如下:
分别计算、和与的相关度,得到结论:好的模型,输入图像分辨率和计算量有很强的相关性,深度和计算量有较强的相关性,宽度和计算量有弱的相关性。
使用高斯过程回归分别对和、和之间的关系进行建模,将上图中的20个模型作为训练数据。
下面阐述对和之间关系的建模过程。
使用表示训练集中20个模型的值,使用表示训练集中20个模型的值,训练集可表示为。建立高斯过程模型:
上式中是服从分布的随机噪声。根据高斯过程回归的理论,给定1个新的,要求得的与的联合高斯分布如下:
上式中,,,,取RBF。可得到的概率分布如下:
和之间关系的建模与之类似。建模完成后,可得到与给定的某个(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
仅用于学习交流!
(本文为粉丝投稿)