Efficient NetV1V2,MnasNet, 2021-05-13

这篇论文探索了卷积神经网路模型在三个维度上的缩放对精度的影响,分别是深度(层数),宽度(通道数)以及分辨率(特征图的宽度和高度)。

参数越多, 模型精度越高,EfficientNet在同等参数下表现要比其他模型更好

它的主要贡献就是提出了一种在增加参数量时平衡模型的三个维度的方法,而这个方法就是简单的固定比例的缩放。先用神经结构搜索确定一个小尺寸的基础模型,再用一个复合系数控制,三个维度上增加和基础模型参数量,用这种策略得到的EfficientNet在各个级别的参数量上领先了当时的其他模型。

Model Scaling 和 FLOPS

先来看看作者在三个维度上进行缩放的实验,这里有一个让人迷惑的地方,大写S表示的是每秒浮点运算次数,小写s是运算次数,作者这里虽然写了大写S,但是指的应该是运算次数,单位是Billion。不过这个也不太重要,重点就是通过这个实验我们知道,单独在某一个维度上分配更多的计算资源,精确度都会上升但是很快达到饱和。

FLOPS = Floating point operations per second是理论上计算机可以在每秒钟执行的浮点运算次数,浮点就是指小数,运算就是基本的加减乘除,用来衡量。而FLOPs是floating point operations也就是浮点运算次数,用来衡量计算量。对于神经网络中的卷积层, 深度加倍,FLOPs加倍,但是如果宽度或者分辨率加倍,FLOPs增为四倍。

卷积的FLOPS公式:2HW(C_{in}K^2 + 1)C_{out}. (https://arxiv.org/pdf/1611.06440v2.pdf)

分别增加宽度,深度和分辨率,模型都会迅速达到饱和状态

但是用复合缩放的方法,表现就要再好很多。

红线表示复合缩放

复合缩放就是首先优化原始模型,用 \alpha, \beta, \gamma三个系数描述通过网格搜索确定的相对于原始模型的缩放。这样的话,这三个系数要满足这个限制条件\alpha \cdot \beta^2 \cdot \gamma^2约等于2,是根据三个维度对模型最终FLOps的影响确定的。这样FLOPs的增长倍数就可以表达为 2^{\phi}

然后三个系数就不变了,然后使用一个系数\phi来控制模型整体的缩放。

compound scaling method
EfficientNet的设计步骤

MnasNet

MnasNet: Platform-Aware Neural Architecture Search for Mobil
https://arxiv.org/pdf/1807.11626.pdf
这篇论文提出的是一种针对移动设备,用强化学习自动搜索高效模型的方法。EfficientNet的基础模型是通过这个方法确定的,不过优化目标是精度和运算量,而MnasNet参考的又是MobileNetV2。
MobileNetV2: https://arxiv.org/pdf/1801.04381.pdf

EfficientNet的搜索空间和MnasNet相同,蓝色为搜索过的内容。

EfficientNet的搜索空间和MnasNet一样,不过用的是精度和FLOPS作为优化目标。

MnasNet网络结构搜索示意
搜索结果MnasNet,MBConv是来源于MobileNetV2的卷积神经网络inverted bottleneck卷积

EfficientNet的基本模型通过multi-objective网络结构搜索同时优化精度和FLOPS确定的\alpha=1.5, \beta=1.1, \gamma=1.15。另外作者还使用了 squeeze-and-excitation 优化方法进一步提高表现。

SE方法,动力在于迫使神经网络学习各个通道的重要性。用来学习的额外的全连接层可以用一个缩减率超参数来平衡表现和计算量。
EfficientNet的基本模型

EfficientNet无论是在ImageNet上,还是通过迁移训练应用于其他数据集都能通过更少的参数达到优于其他方法的精确度,在参数量不上不下的地段尤为明显。

Class Activation Map把每个像素对结果的贡献用可视化表现了出来,可以看到右边通过复合缩放获得的模型可以更准确的定位到图片中关键的区域。

深度神经网络往往是参数冗余的,可以通过模型剪枝,知识蒸馏等技术删减参数,而EfficientNet从另一个角度在设计模型的时候就尽量通过平衡三个维度来保持一个比较高的性价比,虽然不一定是最优的但是实验证明,就是要比大部分一拍脑袋决定的设置要好一些,感觉在炼丹上很有借鉴意义。

EffNet V2

重点研究了 EfficientNet的训练时的瓶颈:

  • 浅层使用深度卷积会使训练很缓慢,因为虽然深度卷积参数量更小FLOPs更少,但是没有办法充分利用硬件加速。 fused MBConv,也就是用一个3*3卷积同时替代 把通道数扩充为4倍的1*1卷积 和 深度卷积。
对比 fused MBConv
对比使用MBConv和fused MBConv

根据实验结果,一到三层改用了 fused MBConv。

  • 自适应正则化:刚开始使用小的图片尺寸和弱的正则化,随着训练的进行,慢慢使用越来越大的图片尺寸和更强的正则化:更大的dropout rate和幅度更大的图片增强效果以及mixup ratio, 看下面的公式是按比例在像素级别上结合图片,然后对标签也用同样的比例结合。感觉这个想法还挺异想天开的。
正则化方法
progressive learning,慢慢使用越来越大的图片尺寸和更强的正则化
Progressive learning 精度小幅上升,训练时间大幅下降
  • 还有一点就是,三个维度不再是完全等比例放大,最后的阶段加入了更多层(深度占比变得稍大了一些)。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容