EfficientNet 《EfficientNet:Rethinking model scaling for convolutional neural networks》
作者想要达到算法准确度和效率的双重提升,一般提高准确度的方法主要是增加模型的深度或宽度,或者增加图像输入的分辨率。
在准确率方面,自从2012年AlexNet赢得了ImageNet的冠军,卷积神经网络变得越来越流行并且越来越大,2014年冠军GoogleNet有6.8M的参数,2017年的SENet有145M的参数,最新的GPipe有557M的参数量,GPipe这么 大的网络很难在普通的服务器上进行训练,所以也很难普及应用。
在计算效率方面,普遍采用模型压缩的方式,能够在移动设备端进行应用的如SequeezeNets、MobileNets、ShuffleNets.最近对于移动端应用的模型比较流行的方式是采用结构检索的方式。
深度学习模型结构的变化主要是深度、宽度和输入图像尺寸的变化,ResNet通过增加模型的深度从ResNet-18变为ResNet-200, WideResNet和MobileNet通过调整模型的宽度实现,在研究中发现输入图像大分辨率会提高准确率。
问题抽象
利用公式的形式来描述网络模型,将整个网络称为,网络的第
个卷积层的可以定义为函数:
其中为输出的张量,
为输入的张量,其张量的维度为
。在实际应用中,通常将多个结构相同的卷积层成为一个stage,以stage为单位可以将卷积网络表示为:
其中下标i表示stage的序号。
为了减小搜索空间,作者固定了网络的基本结构,而只变动上面提到的三个放缩维度,网络深度、网络宽度、输入分辨率。然而就算只搜索这三个维度,搜索空间也是很大,因此作者加了一个限制,网络的放大只能在初始网络的基础上乘上常数倍率,那么只需要优化这些倍率就可以,以此抽象出的数学模型为:
为了找到上面式子中d w r的最优解,作者引用了参数来对网络中的宽高和分辨率进行归一化,具体的规则如下:
作者分别讨论了改变模型的深度、宽度和输入图像分辨率对准确率的影响,具体的结果图如下:
EfficientNet结构
基础网络是EfficientNetB0,该网络结构与MnasNet相似,结构如下:
从基本的EfficientNetB0开始,扩增网络结构分为两步:
1.固定,基于公式2和3搜索
,
,
的最优解;
2.固定,
,
,在公式3中使用不同的
值,就可以获得EfficientNet-B1到B7的模型;