EfficientNet原理详解:用智能缩放的卷积神经网络获得精度增益

自从Alex net在2012年ImageNet挑战赛中获胜后 , 卷积神经网络就在计算机视觉领域中无处不在 。 它们甚至在自然语言处理中也有应用 , 目前最先进的模型使用卷积运算来保留上下文并提供更好的预测 。 然而 , 与其他神经网络一样 , 设计cnn网络的关键问题之一是模型缩放 , 例如决定如何增加模型的尺寸 , 以提供更好的准确性 。
EfficientNet原理详解:用智能缩放的卷积神经网络获得精度增益文章插图
这是一个冗长的过程 , 需要手动命中和试验 , 直到产生一个足够准确的模型 , 满足资源约束 。 这个过程耗费资源和时间 , 并且常常产生精度和效率都不理想的模型 。
考虑到这一问题 , 谷歌在2019年发表了一篇论文 , 对一个新的CNNs家族i进行了处理 。 例如最新的EfficientNet 。 这些CNNs不仅提供了更好的准确性 , 而且通过减少参数和每秒浮点运算流形提高了模型的效率 。 本文的主要贡献是:
设计一个简单的移动设备大小的基线架构:efficient - net - b0
提供了一种有效的复合缩放方法来增加模型的尺寸 , 以达到最大的精度增益 。
EfficientNet原理详解:用智能缩放的卷积神经网络获得精度增益文章插图
该方法可以推广到现有的CNN体系结构 , 如移动网络和ResNet 。 然而 , 选择一个好的基线网络是获得最佳结果的关键 , 因为复合标度方法只是通过复制基网络的底层卷积操作和网络结构来提高网络的预测能力 。
为此 , 作者利用神经结构搜索建立了一个高效的网络结构——efficient - net - b0 。 它在ImageNet上仅用5.3M参数和0.39B延迟就实现了77.3%的精度 。 (Resnet-50提供了26M参数和4.1B FLOPS 76%的准确性) 。
该网络的主要组成部分是附加了压缩激励优化的MBConv 。 MBConv类似于在MobileNet v2中使用的inverted residual blocks 。 这些在卷积块的开始和结束之间形成了快捷连接 。 首先使用1x1卷积扩展输入激活映射 , 以增加特征映射的深度 。 接下来是3x3 Depth-wise和Point-wise的卷积 , 减少了输出feature map中的通道数量 。 快捷连接连接狭窄的层 , 而较宽的层之间存在跳跃连接 。 这种结构有助于减少所需操作的总体数量以及模型大小 。
EfficientNet原理详解:用智能缩放的卷积神经网络获得精度增益文章插图
from keras.layers import Conv2D, DepthwiseConv2D, Adddef inverted_residual_block(x, expand=64, squeeze=16):block = Conv2D(expand, (1,1), activation=’relu’)(x)block = DepthwiseConv2D((3,3), activation=’relu’)(block)block = Conv2D(squeeze, (1,1), activation=’relu’)(block)return Add()([block, x])缩放比例
EfficientNet原理详解:用智能缩放的卷积神经网络获得精度增益文章插图
模型扩展 。 (a)是一个基线网例;(b)-(d)是只增加网络宽度、深度或分辨率一维的常规缩放 。 (e)是我们提出的以固定比例均匀缩放三个维度的复合缩放方法 。
卷积神经网络可以在三个维度上缩放:深度、宽度和分辨率 。 网络的深度与网络的层数相对应 。 宽度与层中神经元的数量相关联 , 或者更确切地说 , 与卷积层中滤波器的数量相关联 。 分辨率就是输入图像的高度和宽度 。 上面的图2更清晰地展示了跨这三个维度的缩放 。
通过叠加更多卷积层来增加深度 , 可以让网络学习更复杂的特征 。 然而 , 更深层次的网络往往受到梯度消失的影响 , 变得难以训练 。 尽管批处理标准化和跳转连接等新技术在解决这个问题上很有效 , 但经验研究表明 , 仅通过增加网络的深度 , 实际的准确率就会很快达到饱和 。 例如 , Resnet-1000提供了与Resnet-100相同的精度 , 尽管有很多额外的层 。
缩放网络的宽度可以让各层了解更多细粒度的特征 。 这一概念在广泛的ResNet和Mobile Net等工作中得到了广泛的应用 。 然而 , 随着深度的增加 , 宽度的增加会阻碍网络学习复杂的特征 , 从而导致精度增益减少 。
较高的输入分辨率提供了图像的更多细节 , 从而增强了模型推理较小物体和提取更精细模式的能力 。 但就像其他缩放维度一样 , 它本身也提供了有限的精度增益 。
EfficientNet原理详解:用智能缩放的卷积神经网络获得精度增益文章插图
采用不同的网络宽度(w)、深度(d)和分辨率(r)系数对基线模型进行缩放 。
这引出了一个重要的观察结果:
1:增大网络宽度、深度或分辨率的任何维度都会提高精度 , 但对于较大的模型 , 精度增益会减小 。
EfficientNet原理详解:用智能缩放的卷积神经网络获得精度增益文章插图
根据不同的基线网络工程调整网络宽度 。