注:下述图片来自 Vardan Agarwal
● EfficientNet的基本结构和B0至B7的整体结构图示
目录
EfficientNet: Rethinking Model Scaling for Convolutional Neural Networks
I 摘要“卷积神经网络(ConvNets)通常是在固定资源预算下开发的,如果有更多资源可用,则会进行扩展以提高准确性。在本文中,我们系统地研究了模型缩放,并确定仔细平衡网络的深度,宽度和分辨率可以带来更好的性能。基于此观察结果,我们提出了一种新的缩放方法,该方法使用简单而高效的复合系数来均匀缩放深度/宽度/分辨率的所有维度。我们证明了此方法在扩大MobileNets和ResNet方面的有效性。
更进一步,我们使用神经体系结构搜索来设计一个新的基准网络,并对其进行扩展以获得称为EfficientNets的模型系列,该模型系列比以前的ConvNets具有更高的准确性和效率。特别是,我们的EfficientNet-B7在ImageNet上达到了最先进的84.3%top-1精度,同时比现有的最佳ConvNet缩小了8.4倍,推理速度提高了6.1倍。我们的EfficientNets还可以很好地传递并在CIFAR-100(91.7%),Flowers(98.8%)和其他3个传递学习数据集上达到最先进的精度,参数要少几个数量级。源代码位于此httpsURL上。”
通俗而言,模型优化无外乎 网络深度(depth)、网络宽度(width)和输入图像分辨率 (resolution)大小,在比赛或研究中也都是以这三方面的其中一方面进行优化调优。而EfficientNet全都考虑,最终的实验效果如下:
EfficientNet,迄今最强
2.1 头和尾
从EfficientNet B0-B7其模型结构的头和尾都如上图所示
2.2 躯干
但不同的是每个模型内部的躯干组成数量不同,但是躯干的基本元素却是相同的,都只有这五个部分:
- 模块 1— 子block的起点;
卷积 DC + 标准化 BN + 激活 - 模块 2 — 除第一个模块外的所有7个主要模块的第一个子block的起点;
平均池化GAP + 拉伸缩放 Rescal + 卷积卷积 - 模块 3 — 跳跃连接到所有的子block;
卷积 DC + 标准化 BN + 激活 + 填充Padding + 卷积 DC + 标准化 BN + 激活 - 模块 4 — 将跳跃连接合并到第一个子block中;
乘 + 卷积 + 标准化 BN - 模块 5 — 每个子block都以跳跃连接的方式连接到之前的子block,并使用此模块进行组合;
乘 + 卷积 + 标准化 BN + 输出
这些模块还可被组合成下述子模块
2.3 整体结构
2.3.1 B0
EfficientNet B0的模型结构如上图所示,x2代表重复两次
2.3.2 B1
2.3.3 B2
B2与B1相同,唯一的区别是特征图(通道)的数量不同,增加了参数的数量
2.3.4 B3
2.3.5 B4
2.3.6 B5
2.3.7 B6
2.3.8 B7
上述模型之间的差异就在于逐增子block的数量。