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通过调整模型的宽度实现,在研究中发现输入图像大分辨率会提高准确率。

  问题抽象

    利用公式的形式来描述网络模型,将整个网络称为N,网络的第i个卷积层的可以定义为函数:Y{_{i}}=F{_{i}}(X{_{i}})

其中Y{_{i}为输出的张量,X{_{i}}为输入的张量,其张量的维度为<H{_{i}},W{_{i}},C{_{i}}>。在实际应用中,通常将多个结构相同的卷积层成为一个stage,以stage为单位可以将卷积网络表示为:

其中下标i表示stage的序号。

    为了减小搜索空间,作者固定了网络的基本结构,而只变动上面提到的三个放缩维度,网络深度、网络宽度、输入分辨率。然而就算只搜索这三个维度,搜索空间也是很大,因此作者加了一个限制,网络的放大只能在初始网络的基础上乘上常数倍率,那么只需要优化这些倍率就可以,以此抽象出的数学模型为:

EfficientNet 《EfficientNet:Rethinking model scaling for convolutional neural networks》_第1张图片

为了找到上面式子中d w r的最优解,作者引用了参数\phi来对网络中的宽高和分辨率进行归一化,具体的规则如下:

EfficientNet 《EfficientNet:Rethinking model scaling for convolutional neural networks》_第2张图片

  作者分别讨论了改变模型的深度、宽度和输入图像分辨率对准确率的影响,具体的结果图如下:

EfficientNet 《EfficientNet:Rethinking model scaling for convolutional neural networks》_第3张图片

EfficientNet结构

    基础网络是EfficientNetB0,该网络结构与MnasNet相似,结构如下:

EfficientNet 《EfficientNet:Rethinking model scaling for convolutional neural networks》_第4张图片

从基本的EfficientNetB0开始,扩增网络结构分为两步:

1.固定\phi =1,基于公式2和3搜索\alpha ,\beta ,\gamma,\beta,\gamma的最优解;

2.固定\alpha ,\beta ,\gamma,\beta,\gamma,在公式3中使用不同的\phi值,就可以获得EfficientNet-B1到B7的模型;

你可能感兴趣的:(深度学习,文献,深度学习)