原文链接:EfficientNet:模型设计新范式 | Hey~YaHei!
唔~2019年的图像特征提取方面似乎有了可喜的发展,大家不再盲目地堆大模型,而是寻找更加高效的特征提取结构,在显著减小参数量和计算量的同时模型的表现还能得到提升。同时我们可以看到深度可分离卷积及其变种几乎已经成为主流——
接下来我将分三次分别介绍今年Google Brain的几篇思路清奇的论文,首先是《EfficientNet: Rethinking Model Scaling for Convolutional Neural Networks(2019ICML)》。
该论文的主要贡献在于简化模型缩放流程,统合了宽度、深度、分辨率三个维度的缩放,建立起一个简单有效的联系。
模型缩放
在设计好模型结构的情况下,我们通常可以通过对模型的缩放,以增大模型的大小来换取模型表现的提升,或以牺牲模型表现为代价换取模型大小的减小。最常用的缩放维度有三个——深度、宽度和输入分辨率
- 深度
- 更深的网络往往能提取到更佳丰富和复杂的特征,并且有更强的泛化能力
- 但深层网络存在训练难的问题,尽管shortcut、BN等技术缓解了这一问题,但随着网络的加深边际收益依旧会明显变小
- 比如ResNet18、ResNet34、ResNet50、ResNet101、ResNet152,其数字代表的是模型中卷积层和全连接层数量(不考虑shortcut上用于downsample的卷积);VGG11、VGG13、VGG16、VGG19,其数字代表的是模型中卷积层和全连接层数量——这是一种典型的深度缩放
- 宽度
- 更宽的网络往往能提取更细粒度的特征,并且也更容易训练(同时足够宽的网络能够容许Dropout和BN技术兼容使用,比如WideResNet)
- 比如MobileNet1.0、MobileNet0.75、MobileNet0.5、MobileNet0.25,其数字代表的是模型中卷积通道数量的缩放因子,除此之外还有常见的WideResNet,这是一种典型的宽度缩放
- 输入分辨率缩放更为常见,通过增加输入图片的尺寸,可以保留更多信息,从而提升模型的表现
- 除此之外,下采样策略也是一种缩放维度,提前下采样可以缩小模型,反之则会增大模型
- 下采样策略可以看作更细粒度的输入分辨率缩放,它控制的是中间特征图的分辨率而非简单的模型输入分辨率
- 比如FD-MobileNet采用快速下采样策略并提升模型宽度,在保持模型大小几乎不变的情况下提高模型的特征提取能力
论文作者做了简单的实验,表明单一放大某一因素,其边际收益是不断减小的——
(其中,w, d, r分别表示宽度(Width)、深度(Depth)、分辨率(Resolution)的缩放因子)
混合缩放
此前已经有其他论文(如《Searching for Activation Functions(2017)》和《Regularized Evolution for Image Classifier Architecture Search(2019AAAI)》)讨论过多个缩放维度混合的模型缩放策略,而本文则是为深度、宽度、输入分辨率的缩放建立一个简单但有效的联系,从而简化缩放因子的选取过程。
其实思路非常简单,首先定义这三个缩放因子为 d d d, w w w, r r r,并且让他们同步增长
d = α ϕ