EfficientNet: 重新考虑卷积神经网络的缩放.

本文作者研究了卷积神经网络模型的缩放,即改变模型的深度、宽度和分辨率。通过均匀地缩放这三个维度,作者使用神经结构搜索设计了EfficientNet,在ImageNet数据集上获得 84.4% top-1 / 97.1% top-5的表现,并且比目前最好的卷积网络小8.4倍,速度快6.1倍。

宽度缩放是指改变每一层卷积层使用的卷积核数量(即特征通道数);深度缩放是指改变堆叠的网络层数;分辨率缩放是指改变输入图像的空间分辨率(高度和宽度)。

通常一个卷积神经网络可以划分成s个阶段,每个阶段的卷积层具有相同的结构;比如ResNet划分成5个阶段。若第i个阶段的特征X的空间尺寸为(Hi,Wi),通道数为Ci;第i个阶段重复堆叠Li个相同的卷积层Fi,则整个卷积网络N可以表示为:

N=i=1,...,sFiLi(X<Hi,Wi,Ci>)

使用缩放因子可以对模型的深度、宽度和分辨率分别缩放。通过r可以调整模型的特征分辨率,通过d可以调整模型的深度,通过w可以调整模型的宽度。作者旨在给定资源约束的条件下获得精度尽可能高的卷积网络,表述为一个优化问题:

maxd,w,rAccuracy(N(d,w,r))s.t.N(d,w,r)=i=1,...,sFidLi(X<rHi,rWi,wCi>)Memory(N)<target memoryFLOPS(N)<target flops

作者通过实验发现,单独增大网络的深度、宽度或分辨率都能够提高网络的精度,但是模型较大时精度的提升会趋于饱和。

网络的深度、宽度或分辨率并不是相互独立的。比如对于更大分辨率的输入图像,应该增加网络的深度以获得更大的感受野。同时应增加网络的宽度以捕捉更多像素的细粒度模式。作者通过实验发现,在不同的深度和分辨率系数下,改变网络的宽度会使网络收敛到不同的精度水平。因此平衡网络的深度、宽度或分辨率相当重要。

作者提出了一种复合缩放(compound scaling)方法,通过复合系数ϕ均匀地缩放网络的深度、宽度或分辨率:

depth:d=αϕwidth:w=βϕresolution:r=γϕs.t.αβ2γ22α1,β1,γ1

常规的卷积网络的FLOPS与网络的深度d成正比,与宽度的平方w2和分辨率的平方r2成正比。参数α,β,γ是通过网格搜索得到的常数,表示将可用的网络资源分配给深度、宽度和分辨率的程度。若约束αβ2γ22(初始可用资源为2倍),则用户指定复合系数ϕ后网络的FLOPS会增长2ϕ倍。

作者通过神经结构搜索设计了基线网络EfficientNet-B0,搜索目标是ACC×[FLOPS/T]0.07T为目标FLOPS,设置为400M。EfficientNet-B0的基本结构如下。其中基本模块采用MobileNetV3中的MBConvmobile inverted bottleneck)。

通过复合缩放,可以在EfficientNet-B0的基础上获得更大的模型。缩放步骤如下:

  1. 固定ϕ=1,假设可用资源为2倍,即αβ2γ22,通过网格搜索获得α,β,γ。本文搜索得到α=1.2,β=1.1,γ=1.15
  2. 固定α,β,γ,通过不同的ϕ获得不同的网络结构。本文得到的EfficientNet-B1B7如下。

实验表明EfficientNet实现了最先进的精度,并且具有更少的参数量和FLOPS。

作者随机展示了几张不同输入图像的类别激活图。图中显示具有复合缩放的模型倾向于同时关注更多的目标和更多细节。而其他模型要么缺乏目标的细节,要么无法捕获图中的所有目标。