一.论文概述
1.该论文发表于2019年5月,在这篇论文中,作者系统地研究了模型扩展,并认为谨慎地平衡网络的深度、宽度(channel数)和分辨率(feature map)三个维度可以得到更好的网络性能,这也是第一个同时探索深度、宽度和分辨率的影响的研究工作。
2.基于上述观察,作者提出了一种新的扩展方法,它使用一个简单而高效的复合系数来统一扩展深度、宽度以及分辨率这三个维度,并演示了该方法在扩展MobileNets和ResNet上的有效性。
3.作者提出了一种新的baseline network——EfficientNets,其精度和效率都优于之前的网络,EfficientNet-b7在ImageNet上实现了84.3%的top-1准确率,同时它的大小是比目前最先进的网络小8.4倍,推理速度快6倍。
二.论文提出的背景
2.1卷积神经网络的精度
自从AlexNet赢得2012年的ImageNet竞赛后,卷积神经网络通过不断增大来得到更好的精度。如下图所示:
注释:
- 上图只列举了部分神经网络,可以从图中看出,近几年来通过不断增大神经网络来得到更好的精度。
- GoogleNet的模型参数大约是AlexNet参数的1/10,主要是GoogleNet创新的采用了Inception模块。
2.2卷积神经网络的效率:
- 深度卷积神经网络通常是过参数化的,而模型压缩是一种用精度换取效率的方式来减小模型尺寸。
- 随着移动端设备的快速发展,基于移动端的高效神经网络也在蓬勃发展,如:SqueezeNets、MobileNets以及ShuffleNets等。
- 最近,神经架构搜索技术逐渐流行于设计高效的移动端卷积神经网络,并通过广泛调整网络宽度、深度以及卷积核类型和大小,实现了比手工制作的移动端卷积神经网络更好的效率。但是如何将这项技术应用到具有更大设计空间和更加昂贵调优成本的大型模型中还不明确。
2.3模型扩展
- 在过去的工作中,往往可以通过扩大模型的深度或宽度以及输入模型的图像分辨率来提升网络的精度。但是如何有效的扩展卷积神经网络以得到更好的精度和效率,这仍然是一个开放性问题。
总结:
卷积神经网络通过不断增大模型来得到更好的精度,更大的网络的弊端也很明显:难以训练、速度慢、需要更好的硬件等。尽管对很多应用程序来说,精度是至关重要的,但是同时我们也不得不关注网络的效率。移动端模型通常是在给定计算资源的情况下来得到高效的模型,但是对于拥有更多计算资源的大模型来说(大模型的调优成本也更加的昂贵),如何最大发挥模型的性能?这尚不明确!
在上述背景下,作者通过系统地研究同时扩展卷积神经网络的深度、宽度以及输入图像的分辨率来进一步提升卷积神经网络的效率和精度。
三.论文中的模型扩展
在论文中提出了一种新的扩展方法——复合模型扩展。
3.1将扩展问题公式化
首先,作者将一个卷积神经网络N定义为如下公式,在论文中为公式1:
其中Fi定义为卷积神经网络N的第i层,它可以抽象为一个函数。
因此,这里给出模型扩展的概念:
-
模型扩展不像常规的卷积神经网络设计是为了寻找最好的网络层结构Fi。它是在不改变baseline network中预定义的网络层结构Fi的情况下,尝试去扩展网络的深度、宽度以及分辨率。
-
所以将论文中的优化问题公式化为如下形式,在论文中为公式2:
注释:d,w,r分别表示深度、宽度和分辨率。 -
如图给出模型扩展的图例:
3.2扩展维度问题
作者通过过去的工作以及实证研究得到两个结论
- 深度:增加网络的深度能够得到更加丰富、复杂的特征并且能够很好的应用到其他任务中。但网络的深度过深会面临梯度消失、退化以及训练困难的问题。
- 宽度:增加网络的宽度能够获得更加细粒度的特征并且也更容易训练,但对于宽度很大深度较浅的网络往往很难学习到更深层次的特征。
- 分辨率:增加输入网络的图像分辨率能够潜在地获得更高细粒度的特征模板,但对于非常高的输入分辨率,准确率的增益也会减小,并且大的分辨率图像也会增加计算量。
从图中可以看出,对于更大深度、更大宽度或者更大分辨率的网络往往可以取得更高的精度,但是精度的增益在达到80%就会快速的饱和
结论一:扩大网络的深度、宽度以及分辨率的任何维度都可以提高精度,但是对于更大的模型,精度的增益会减小。
- 从直觉上来说,对于更高分辨率的图像,我们应该增加网络深度,这样更大的感受野可以帮助捕获相似的特征,在更大的图像中包含更多的像素。相应地,当分辨率较高时,我们也应该增加网络宽度为了在高分辨率图像中使用更多像素捕获更细粒度的模式。
- 从这些直觉表明:我们需要协调和平衡不同扩展维度而不是传统的在单个维度上进行扩展。
- 作者随后进行实证研究,扩展网络的宽度,如下图。图中线条中的每个点表示一个不同宽度的模型。
结论二:为了获得更好的精度和效率,在对卷积神经网络进行扩展时,平衡网络的宽度、深度和分辨率是至关重要的。
3.3提出本文的复合扩展方法
作者提出了一个新的复合扩展方法,通过一个复合系数φ来统一扩展网络的深度、宽度和分辨率,公式如下,在论文中为公式3:
注释:
1.α,β,γ是确定的常数。
2.φ是一个用户指定的系数,它控制有多少资源可用于模型缩放,而α、β、γ则分别指定如何将这些资源分配给网络宽度、深度和分辨率。
3.FLOPs与深度、宽度以及分辨率成比 例,其中与深 度成正比,与宽度的平方以及分辨率的平方成正比。
3.4证明复合扩展方法的有效性
作者通过三个方法比较了所提出扩展方法的有效性,分别是将复合扩展方法用于广泛使用的现有网络、将复合扩展方法用于新提出的网络(在表2得到结果)、将复合扩展方法得到的模型的类激活映射与其他扩展方法得到模型的类激活映射进行对比。种种结果都显示了复合扩展方法的有效性。
3.4.1
为了证明该方法的有效性,作者通过该方法来扩展被广泛使用的MobileNets和ResNets网络。下表为实验对比:
注释:
通过上表可以看出:与其他扩展一个维度的方法相比,作者的复合扩展方法提高了所有这些模型的精度,表明了复合扩展方法对现有的一般卷积神经网络的有效性
3.4.2
下图比较了使用不同扩展方法得到的模型的类激活映射:
注释:
如上图所示,复合扩展模型倾向于关注更相关的区域,更多的对象细节,而其他模型要么缺乏对象细节,要么无法捕捉到图像中的所有对象。
四.EfficientNet网络
因为提出的复合扩展方法并会不改变baseline network中预定义的网络层结构Fi,所以作者认为拥有一个好的baseline network也是至关重要的。作者使用现有的卷积神经网络来评估复合扩展方法(在3.4中给出结果),但为了更好地演示复合扩展方法的有效性,作者还开发了一个新的baseline network,称为EfficientNet。
- EfficientNet的Building Block(MBConv)如下图所示:
上图转自:https://blog.csdn.net/qq_37541097 - EfficientNet-B0的网络框架:
从上述的EfficientNet-B0网络开始,通过两个步骤应用复合扩展方法得到B1-B7网络:
1.第一步:固定φ=1,假设有两倍的资源可用,基于公式2和3,采用small grid search得到α,β,γ。
2.第二步:固定第一步搜索到α,β,γ后,在公式3下,使用不同的φ扩展baseline network得到EfficientNet-B1到EfficientNet-B7。
得到的网络细节如下表:
注释:
具有相似top-1/top-5精度的卷积神经网络被分组在一起进行效率比较。与现有的卷积神经网络相比,我们扩展得到的高效网络模型始终将参数和FLOPS降低了一个数量级(最高可达8.4倍的参数减少和16倍的FLOPS减少),通过B0-B7的性能对比,可以看出复合扩展方法的有效性
五.EfficientNet网络性能
5.1精度对比
从下面两张图可以观察到:扩展得到的高效网络模型在比其他卷积神经网络更少的参数和FLOPS下实现了更好的精度。值得注意的是,我们的高效网模型不仅很小,而且计算成本更低。
注释:
经典卷积神经网络的参数-精度曲线图
注释:
经典卷积神经网络的FLOPS-精度曲线图
5.2延迟对比
为了验证延迟,作者测量了在CPU上几个经典卷积神经网络的推断延迟,如下表所示:
注释:
1.这里使用的是超过20次运行的平均延迟。
2.从上表可以看出:EfficientNet-B1比广泛使用的ResNet-152快5.7倍,EfficientNet-B7比GPipe快6.1倍,表明了EfficientNet在实际硬件上确实快。
5.3迁移学习的性能对比
注释:
1.与NASNet-A 和Inception-v4 等模型相比,EfficientNet模型获得了更好的精度,平均参数减少了4.7x(最多21x) 。
2.与最先进的模型DAT和GPipe相比,EfficientNet模型在8个数据集中,有5个数据集仍然超过了它们的精度,但使用的参数少了6.6倍。
**注释:**在各种数据集下,各种模型的参数-精度曲线。总体而言,EfficientNet比现有模型更少参数数量级的情况下始终获得更好的精度,这些模型包括ResNet、DenseNet 、Inception 和NASNet 。
六.总结
本文的创新点:
1.提出了一种简单而高效的复合扩展方法来同时扩展网络的深度、宽度和分辨率,它使我们能够以更有效的方式轻松地将网络扩展到任何目标资源约束,同时保持模型效率。
2.提出了一种新的网络模型——EfficientNet,其精度和效率都优于之前的网络。