文章目录
🚀🚀🚀摘要
📜论文链接:https://arxiv.org/abs/1905.11946
📌代码地址:https://github.com/tensorflow/tpu/tree/master/models/official/efficientnet
📗翻译
卷积神经网络(ConvNets)通常是在固定的资源预算下开发的,如果有更多的资源可用,则会扩大规模以获得更好的准确性。在本文中,我们系统地研究了模型缩放,并确定仔细平衡网络深度、宽度和分辨率可以带来更好的性能。基于这一观察,我们提出了一种新的缩放方法,使用简单但高效的复合系数均匀缩放深度/宽度/分辨率的所有维度。我们证明了这种方法在扩展MobileNets和ResNet上的有效性。
为了更进一步,我们使用神经架构搜索来设计一个新的基线网络(baseline network),并将其扩展以获得一系列称为EfficientNets的模型,这些模型比以前的ConvNets具有更好的准确性和效率。特别是,我们的EfficientNet-B7在ImageNet上实现了最先进的84.4% top-1 / 97.1% top-5准确率,同时比现有最好的ConvNet小8.4倍,推理速度快6.1倍。我们的EfficientNets在CIFAR-100(91.7%)、Flowers(98.8%)和其他3个迁移学习数据集上也能很好地迁移并达到最先进的准确度,参数数量级更少。
🔥精读
EfficientNet最开始提出是作为图像分类中特征提取网络backbone部分,传统的特征提取网络例如:VGG、AlexNet等在网络的深度进行改进,以此来提高图像分类的精度和速度,包括近些年很多研究人员在改进backbone特征提取网络部分都是从以下三个维度去考虑:
- 调整输入图像的大小
- 网络的深度 (卷积层数)
- 宽度(卷积通道数,也就是channel)
EfficientNet网络提出是有以下设想:设计一个标准化的卷积网络扩展方法,既可以实现较高的准确率 ,又可以充分的节省算力资源。即如何平衡分辨率 、深度和宽度这三个维度,来实现网络在效率和准确率上的优化。通过和其他网络对比可以发现EfficientNet网络不仅参数量小,内存占用少,而且更加适合轻量化移动部署,同时运算速度也更快。
一、1️⃣ Introduction—介绍
📗翻译
扩展ConvNets被广泛用于实现更高的准确性。例如,ResNet 可以通过使用更多的层从ResNet-18扩展到ResNet-200;最近,GPipe通过将基线模型放大四倍,实现了84.3%的ImageNet top-1准确率。然而,扩展ConvNets的过程从未被很好地理解,目前有许多方法可以做到这一点。最常见的方法是按深度或者宽度扩展ConvNets,另一种不太常见但越来越受欢迎的方法是通过图像分辨率按比例放大模型。在以前的工作中,通常只缩放三个维度中的一个-----深度,宽度和图像大小。虽然可以任意缩放二维或三维,但任意缩放需要繁琐的手动调整,并且通常会产生不太好的精度和效率。
在本文中,我们想研究和重新思考扩展ConvNets的过程。特别是,我们研究了一个中心问题:是否有一种原则性的方法来扩展ConvNets,以实现更好的准确性和效率? 我们的实证研究表明,平衡网络宽度/深度/分辨率的所有维度是至关重要的,令人惊讶的是,这种平衡可以通过简单地以恒定的比例缩放每个维度来实现。基于这一观察,我们提出了一个简单而有效的复合尺度方法。与任意缩放这些因素的传统做法不同,我们的方法使用一组固定的缩放系数统一缩放网络宽度,深度和分辨率。例如,如果我们想要使用
2
N
2^{N}
2N倍的计算资源,然后我们可以简单地将网络深度增加
α
N
\alpha^{N}
αN,宽度增加
β
N
β^{N}
βN,图像大小增加
γ
N
γ^{N}
γN,其中
α
,
β
,
γ
α,β,γ
α,β,γ是通过原始小模型上的小网格搜索确定的常数系数。图2说明了我们的缩放方法与传统方法之间的差异。
直观地说,复合缩放方法是有意义的,因为如果输入图像更大,那么网络需要更多的层来增加接受域,需要更多的通道来捕获更大图像上的更细粒度的模式。事实上,之前的理论和实证结果都表明网络宽度和深度之间存在一定的关系,但据我们所知,我们是第一个对网络宽度、深度和分辨率这三个维度之间的关系进行实证量化的人。
我们证明了我们的缩放方法在现有的mobilenet上工作得很好和ResNet 。值得注意的是,模型缩放的有效性严重依赖于基线网络;更进一步,我们使用神经架构搜索开发一个新的基线网络,并将其扩展以获得一系列模型,称为EfficientNets。
图1总结了ImageNet的性能,其中我们的EfficientNets明显优于其他ConvNets。特别是,我们的EfficientNet-B7超过了现有的最佳GPipe精度,但使用的参数减少了8.4倍,推理速度提高了6.1倍。与广泛使用的ResNet相比,我们的EfficientNet-B4在FLOPS相似的情况下,将top-1的准确率从ResNet-50的76.3%提高到82.6%。除了ImageNet之外,EfficientNets在8个广泛使用的数据集中的5个数据集上也能很好地传输并达到最先进的精度,同时比现有的ConvNets减少了高达21倍的参数。
二、2️⃣Related Work—相关工作
ConvNet精度:自从AlexNet 赢得2012年ImageNet比赛以来,卷积神经网络通过变大变得越来越准确:2014年ImageNet获胜者GoogleNet 使用约6.8M个参数实现了74.8%的top-1精度,而2017年ImageNet获胜者SENet 使用145M个参数实现了82.7%的top-1精度。最近,GPipe使用557M个参数进一步将最先进的ImageNet top-1验证精度提高到84.3%:但是它太大了,只能通过划分网络并将每个部分扩展到不同的加速器来使用专门的管道并行库进行训练。虽然这些模型主要是为ImageNet设计的,但最近的研究表明,更好的ImageNet模型在各种迁移学习数据集和其他计算机视觉任务(如目标检测)上也表现更好。虽然更高的精度对许多应用程序至关重要,但我们已经达到了硬件内存限制,因此进一步的精度增益需要更好的效率。
ConvNet效率:深度卷积常被过度参数化。模型压缩是一种通过以准确性换取效率来减少模型大小的常用方法。随着手机变得无处不在,手工制作高效的移动尺寸 ConvNet 也很常见,例如SqueezeNets ,MobileNets 和ShuffleNets 。最近,神经架构搜索在设计高效的移动级卷积网络方面变得越来越流行,通过广泛调整网络宽度、深度、卷积核类型和大小,实现了比手工制作的移动卷积网络更好的效率。然而,目前尚不清楚如何将这些技术应用于具有更大设计空间和更昂贵的调优成本的大型模型。在本文中,我们的目标是研究超过当前精度的超大型卷积网络的模型效率。为了实现这一目标,我们采用模型缩放。
模型缩放:有许多方法可以根据不同的资源限制来扩展ConvNet: ResNet 可以通过调整网络深度(#layers)来缩小(例如ResNet-18)或扩大(例如ResNet-200),而WideResNet 和MobileNets 可以根据网络宽度(#channels)进行缩放。众所周知,更大的输入图像尺寸将有助于提高精度,但是会增加FLOPS的开销。尽管之前的研究已经表明,网络深度和宽度对卷积神经网络的表达能力都很重要,但如何有效地扩展卷积神经网络以获得更好的效率和准确性仍然是一个悬而未决的问题。我们的工作系统地和经验地研究了网络宽度、深度和分辨率的所有三个维度的ConvNet缩放。
三、3️⃣Compound Model Scaling—复合模型缩放
在本节中,我们将阐述缩放问题,研究不同的方法,并提出我们的新缩放方法。
3.1 🎓 问题表述
ConvNet Layer
i
i
i可以定义为一个函数:
Y
i
=
F
i
(
X
i
)
Y_{i}=\mathcal{F}_i(X_i)
Yi=Fi(Xi),其中
F
i
\mathcal{F}_i
Fi为算子,
Y
i
Y_{i}
Yi为输出张量,
X
i
X_{i}
Xi为输入张量,张量形状为
⟨
H
i
,
W
i
,
C
i
⟩
\langle H_{i},W_{i},C_{i}\rangle
⟨Hi,Wi,Ci⟩,其中
H
i
H_{i}
Hi和
W
i
W_{i}
Wi为空间维度,
C
i
C_{i}
Ci为通道维度。卷积神经网络
N
\mathcal{N}
N可以用一个组合层的列表来表示:
N
=
F
k
⊙
.
.
.
⊙
F
1
⊙
F
1
(
X
1
)
=
⊙
j
=
1...
k
F
j
(
X
1
)
\mathcal{N}=\mathcal{F}_{k}\odot...\odot\mathcal{F}_{1}\odot\mathcal{F}_{1}(X_{1})=\odot_{j=1...k}\mathcal{F}_{j}(X_{1})
N=Fk⊙...⊙F1⊙F1(X1)=⊙j=1...kFj(X1)。在实践中,ConvNet层通常被划分为多个阶段,每个阶段的所有层都共享相同的架构:例如,ResNet 有五个阶段,每个阶段的所有层都具有相同的卷积类型,除了第一层执行下采样。因此,我们可以将ConvNet定义为:
N
=
⨀
i
=
1...
s
F
i
L
i
(
X
⟨
H
i
,
W
i
,
C
i
⟩
)
(
1
)
\mathcal{N}=\bigodot\limits_{i=1...s}\mathcal{F}_i^{L_i}\left(X_{\langle H_i,W_i,C_i\rangle}\right)\quad(1)
N=i=1...s⨀FiLi(X⟨Hi,Wi,Ci⟩)(1)
式中
F
i
L
i
\mathcal{F}_i^{L_i}
FiLi,
i
i
i表示第
F
i
F_{i}
Fi层在第i阶段重复
L
i
L_{i}
Li次,
⟨
H
i
,
W
i
,
C
i
⟩
\langle H_{i},W_{i},C_{i}\rangle
⟨Hi,Wi,Ci⟩表示第
i
i
i层输入张量
X
X
X的形状。图2(a)展示了一个具有代表性的卷积神经网络,其中空间维度逐渐缩小,通道维度逐层扩展,例如,从初始输入形状
⟨
224
,
224
,
3
⟩
\langle224,224,3\rangle
⟨224,224,3⟩到最终输出形状
⟨
7
,
7
,
512
⟩
\langle7,7,512\rangle
⟨7,7,512⟩。
与常规的ConvNet设计不同,模型缩放试图扩展网络长度(
L
i
Li
Li)、宽度(
C
i
Ci
Ci)或分辨率(
H
i
,
W
i
Hi,Wi
Hi,Wi),而不改变基线网络中预定义的
F
i
Fi
Fi。通过固定
F
i
Fi
Fi,模型缩放简化了新资源约束下的设计问题,但对于每一层探索不同的
L
i
,
C
i
,
H
i
,
W
i
Li, Ci,Hi,Wi
Li,Ci,Hi,Wi仍然有很大的设计空间。为了进一步缩小设计空间,我们限制所有层必须以恒定比例均匀缩放。我们的目标是在任何给定的资源约束下使模型精度最大化,这可以表述为一个优化问题,如下公式(2):
max
d
,
w
,
r
A
c
c
u
r
a
c
y
(
N
(
d
,
w
,
r
)
)
s
.
t
.
N
(
d
,
w
,
r
)
=
⨀
i
=
1...
s
F
^
i
d
⋅
L
^
i
(
X
⟨
r
⋅
H
^
i
,
r
⋅
W
^
i
,
w
⋅
C
^
i
⟩
)
\begin{aligned}&\max_{d,w,r}\quad Accuracy\big(\mathcal{N}(d,w,r)\big)\\&s.t.\quad\mathcal{N}(d,w,r)=\bigodot_{i=1...s}\hat{\mathcal{F}}_{i}^{d\cdot\hat{L}_{i}}\big(X_{\langle r\cdot\hat{H}_{i},r\cdot\hat{W}_{i},w\cdot\hat{C}_{i}\rangle}\big)\end{aligned}
d,w,rmaxAccuracy(N(d,w,r))s.t.N(d,w,r)=i=1...s⨀F^id⋅L^i(X⟨r⋅H^i,r⋅W^i,w⋅C^i⟩)
M
e
m
o
r
y
(
N
)
≤
t
a
r
g
e
t
_
m
e
m
o
r
y
F
L
O
P
S
(
N
)
≤
t
a
r
g
e
t
_
f
l
o
p
s
\begin{aligned}&\mathrm{Memory}(\mathcal{N})\leq\mathrm{target\_memory}\\&\mathrm{FLOPS}(\mathcal{N})\leq\mathrm{target\_flops}\end{aligned}
Memory(N)≤target_memoryFLOPS(N)≤target_flops
式中,
w
、
d
、
r
w、d、r
w、d、r为缩放网络宽度、深度和分辨率的系数;
F
^
i
,
L
^
i
,
H
^
i
,
W
^
i
,
C
^
i
\hat{\mathcal F}_{i},\hat{L}_{i},\hat{H}_{i},\hat{W}_{i},\hat{C}_{i}
F^i,L^i,H^i,W^i,C^i是基线网络中的预定义参数,示例见表1。
表1:EfficientNet-B0基线网络----每行描述了一个阶段
i
i
i,有1个
L
^
i
\hat{L}_{i}
L^i层,输入分辨率
⟨
H
^
i
,
W
^
i
⟩
\langle\hat{H}_{i},\hat{W}_{i}\rangle
⟨H^i,W^i⟩,输出通道
C
^
i
\hat{C}_{i}
C^i,符号采用公式2。
3.2 ✨缩放尺寸
问题2的主要难点在于最优的 d 、 w 、 r d、w、r d、w、r相互依赖,且在不同的资源约束条件下其值是变化的。由于这个困难,传统的方法主要是在以下一个维度上缩放卷积神经网络:
深度(d):缩放网络深度是许多卷积网络最常用的方法。直觉是,更深层次的卷积神经网络可以捕获更丰富、更复杂的特征,并且可以很好地泛化新任务。然而,由于梯度消失问题,更深层的网络也更难以训练。尽管跳跃连接和批处理归一化等几种技术缓解了训练问题,但非常深的网络的精度增益减少了:例如,ResNet-1000具有与ResNet-101相似的精度,尽管它具有更多的层。图3(中)显示了我们对不同深度系数d的基线模型进行缩放的实证研究,进一步表明了非常深的卷积神经网络的精度回报递减。
图3:不同网络宽度(w)、深度(d)和分辨率®系数的基线模型的放大。更大的网络,具有更大的宽度、深度或分辨率,往往可以获得更高的精度,但精度增益在达到80%后很快饱和,这表明了单维度缩放的局限性。基线网络如表1所示。
宽度(w):缩放网络宽度,通常用于小尺寸模型。更广泛的网络往往能够捕获更多细粒度的特征,并且更容易训练。然而,极宽但较浅的网络往往难以捕获更高级的特征。我们在图3(左)中的经验结果表明,当网络变得更宽,
w
w
w更大时,准确性很快饱和。
分辨率( r ):通过更高分辨率的输入图像,ConvNets可以捕获更细粒度的模式。从早期ConvNets的224x224开始,现代ConvNets倾向于使用299x299 或331x331以获得更好的精度。最近,GPipe 在480 × 480分辨率下实现了最先进的ImageNet精度。更高的分辨率,如600x600,也广泛用于目标检测卷积神经网络。图3(右)显示了缩放网络分辨率的结果,其中更高的分辨率确实提高了精度,但对于非常高的分辨率,精度增益会降低(r = 1.0表示分辨率 224x224, r = 2.5表示分辨率 560x560)。
通过以上分析,我们得出了第一个结论:
观察1----放大网络宽度、深度或分辨率的任何维度都可以提高精度,但对于更大的模型,精度增益会降低。
3.3 ⭐️复合缩放
📗翻译
我们凭经验观察到,不同的缩放维度不是独立的。直觉上,对于更高分辨率的图像,我们应该增加网络深度,这样更大的感受野可以帮助捕获类似的特征,包括更大图像中的更多像素。相应的,我们也应该在分辨率较高时增加网络深度,以便在高分辨率图像中以更多的像素捕获更细粒度的图案。这些直觉表明,我们需要协调和平衡不同的缩放维度,而不是传统的单一维度缩放。
为了验证我们的直觉,我们比较了不同网络深度和分辨率下的宽度缩放,如图4所示。如果我们只缩放网络宽度
w
w
w而不改变深度(
d
=
1.0
d=1.0
d=1.0)和分辨率(
r
=
1.0
r=1.0
r=1.0),则精度很快饱和。在相同的FLOPS成本下,在更深(
d
=
2.0
d=2.0
d=2.0)和更高的分辨率(
r
=
2.0
r=2.0
r=2.0)下,宽度缩放可以获得更好的精度。这些结果将我们引向第二个观察结果:
图4:不同基线网络的网络宽度缩放。每条线上的每个点代表一个具有不同宽度系数(w)的模型。所有基线网络均来自表1。第一个基线网络(d=1.0, r=1.0)有18个卷积层,分辨率为224x224,而最后一个基线(d=2.0, r=1.3)有36个卷积层,分辨率为299x299。
观察2 —为了追求更好的精度和效率,在ConvNet缩放过程中,平衡网络宽度、深度和分辨率的所有维度是至关重要的。
事实上,之前的一些工作已经尝试任意平衡网络宽度和深度,但它们都需要繁琐的手动调优。
本文提出了一种新的复合缩放方法,利用复合系数
ϕ
\phi
ϕ对网络宽度、深度和分辨率进行有原则的均匀缩放,如下公式(3):
d
e
p
t
h
:
d
=
α
ϕ
w
i
d
t
h
:
w
=
β
ϕ
resolution:
r
=
γ
ϕ
s
.
t
.
α
⋅
β
2
⋅
γ
2
≈
2
α
≥
1
,
β
≥
1
,
γ
≥
1
\begin{aligned} \mathrm{depth:}& d=\alpha^{\phi} \\ \mathrm{width:}& w=\beta^{\phi} \\ \text{resolution:}& r=\gamma^{\phi} \\ \mathrm{s.t.}& \alpha\cdot\beta^{2}\cdot\gamma^{2}\approx2 \\ &\alpha\geq1,\beta\geq1,\gamma\geq1 \end{aligned}
depth:width:resolution:s.t.d=αϕw=βϕr=γϕα⋅β2⋅γ2≈2α≥1,β≥1,γ≥1
其中 α , β , γ α, β, γ α,β,γ 是可以通过小网格搜索确定的常数。直观地说, ϕ \phi ϕ是一个用户指定的系数,它控制有多少资源可用于模型缩放,而 α , β , γ α, β, γ α,β,γ 分别指定如何将这些额外的资源分配给网络宽度,深度和分辨率。值得注意的是,常规卷积运算的FLOPS 与 d d d, w 2 w^{2} w2, r 2 r^{2} r2 成正比,即网络深度加倍会使FLOPS加倍,但网络宽度或分辨率加倍会使FLOPS增加四倍。由于卷积运算通常在卷积网络的计算成本中占主导地位,因此用公式3缩放卷积网络将使总FLOPS大约增加了 ( α ⋅ β 2 ⋅ γ 2 ) ϕ \begin{pmatrix}\alpha\cdot\beta^2\cdot\gamma^2\end{pmatrix}^\phi (α⋅β2⋅γ2)ϕ。在本文中,我们约束 α ⋅ β 2 ⋅ γ 2 ≈ 2 \alpha\cdot\beta^{2}\cdot\gamma^{2}\approx2 α⋅β2⋅γ2≈2,使得对于任何新的 ϕ \phi ϕ,总FLOPS将大约增加2 ϕ \phi ϕ
🔥精读
这里解释一下为什么常规卷积运算的FLOPS 与
d
d
d,
w
2
w^{2}
w2,
r
2
r^{2}
r2 成正比,会发现与宽度和维度的平方成正比,但是与网络的深度扩展的常数成正比。因为假设我们对一个基线网络模型分别增加
n
n
n倍的宽度、深度、和分辨率,那么模型的计算量分别增加
n
2
n^{2}
n2、
n
n
n、
n
2
n^{2}
n2倍,因为网络中是做卷积运算,增加网络的通道数和面积之后,都是呈平方倍增加,而网络深度则是呈线性增加。
四、EfficientNet Architecture—EfficientNet 网络架构
由于模型缩放不会改变基线网络中的层算子 F ^ i \hat{\mathcal{F}}_{i} F^i,因此拥有一个良好的基线网络也是至关重要的。我们将使用现有的卷积神经网络来评估我们的缩放方法,但为了更好地展示我们的缩放方法的有效性,我们还开发了一个新的移动尺寸基线,称为EfficientNet。
受(Tan et al., 2019:适用于移动设备的平台感知神经架构搜索)的启发,我们通过利用多目标神经架构搜索来开发基线网络,该搜索可优化准确性和FLOPS。具体来说,我们使用与该论文中相同的搜索空间。并使用
A
C
C
(
m
)
×
[
F
L
O
P
S
(
m
)
/
T
]
w
ACC(m)\times[FLOPS(m)/T]^{w}
ACC(m)×[FLOPS(m)/T]w作为优化目标,其中
A
C
C
(
m
)
ACC(m)
ACC(m)和
F
L
O
P
S
(
m
)
FLOPS(m)
FLOPS(m)分别表示模型
m
m
m的精度和FLOPS,
T
T
T为目标FLOPS, w=-0.07为控制精度和FLOPS之间权衡的超参数。不像(Tan等人,2019;Cai等人,2019),这里我们优化FLOPS而不是延迟,因为我们不针对任何特定的硬件设备。我们的搜索产生了一个高效的网络,我们将其命名为EfficientNet—B0。由于我们使用与(Tan等人,2019)相同的搜索空间,因此该架构类似于Mnas Net,只是由于FLOPS目标较大(我们的FLOPS目标为400M),我们的EfficientNet-B0略大一些。表1显示了EfficientNet-B0的体系结构。其主要构建模块是移动反向瓶颈MBConv,我们还添加了挤压和激励优化。
从基线EfficientNet-B0开始,我们采用复合扩展方法,分两个步骤进行扩展:
- 第一步:我们首先固定 ϕ \phi ϕ= 1,假设两倍以上的资源可用,并根据公式2和3对 α , β , γ α, β, γ α,β,γ进行小网格搜索。特别是,在 α ⋅ β 2 ⋅ γ 2 ≈ 2 α·β2·γ2≈2 α⋅β2⋅γ2≈2的约束下,我们发现EfficientNet-B0 的最佳值为 α = 1.2 , β = 1.1 , γ = 1.15 α = 1.2, β = 1.1, γ = 1.15 α=1.2,β=1.1,γ=1.15。
- 步骤2:然后我们将
α
,
β
,
γ
α, β, γ
α,β,γ固定为常数,并使用公式3缩放具有不同
ϕ
\phi
ϕ的基线网络,以获得EfficientNet-B1到B7(详见表2)。
表2.ImageNet上的EfficientNet性能结果(Russakovsky等人,2015年)。所有的EfficientNet模型都是使用公式3中的不同复合系数φ从我们的基线EfficientNet-B 0缩放的。具有相似的前1/前5精度的ConvNet被分组在一起以进行效率比较。与现有的ConvNets相比,我们的缩放EfficientNet模型始终将参数和FLOPS降低了一个数量级(参数减少高达8.4倍,FLOPS减少高达16倍)。
值得注意的是,通过在大型模型周围直接搜索 α , β , γ α, β, γ α,β,γ可以获得更好的性能,但是在大型模型上搜索成本会变得非常昂贵。我们的方法解决了这个问题,只在小的基线网络上做一次搜索(步骤1),然后对所有其他模型使用相同的缩放系数(步骤2)。
五、5️⃣5. Experiments—实验
在本节中,我们将首先在现有的ConvNets和新提出的EfficientNets上评估我们的缩放方法。
5.1 🎓 扩展MobileNets和ResNets
作为概念证明,我们首先将我们的缩放方法应用于广泛使用的MobileNets和ResNet。表3显示了以不同方式缩放它们的ImageNet结果。与其他单维缩放方法相比,我们的复合缩放方法提高了所有这些模型的精度,表明我们提出的缩放方法对一般现有ConvNets的有效性。
5.2 ✨EfficientNe的ImageNet结果
我们在ImageNet上训练我们的EfficientNet模型,使用类似的设置:RMSProp优化器,衰减0.9,动量0.9;批量范数动量0.99;权重衰减1e-5;初始学习率0.256,每2.4个epoch衰减0.97。我们还使用swish激活,固定自动增强策略和随机深度,下降连接比为0.3。众所周知,更大的模型需要更多的正则化,我们线性增加dropout比率从EfficientNet-B0的0.2到EfficientNet-B7的0.5。
🔥🔥🔥表2显示了从同一基线EfficientNet-B 0缩放的所有EfficientNet模型的性能。我们的EfficientNet模型通常使用的参数和FLOPS数量级比其他ConvNets少,具有相似的精度。特别是,我们的EfficientNet-B7在66 M参数和37B FLOPS的情况下实现了84.4%的top1 / 97.1%的top5精度,比之前最好的GPipe更精确,但小8.4倍。
图1和图5显示了代表性ConvNets的参数-精度和FLOPS-精度曲线,其中我们的缩放EfficientNet模型比其他ConvNets具有更少的参数和FLOPS,实现了更好的精度。值得注意的是,我们的EfficientNet模型不仅体积小,而且计算成本更低。例如,我们的EfficientNet-B3实现了比ResNeXt101更高的准确性,使用的FLOPS减少了18倍。
为了验证计算成本,我们还测量了真实CPU上的推理延迟,如表4所示,其中报告了20次运行的平均延迟。我们的EfficientNet-B1运行速度比广泛使用的ResNet-152快5.7倍,而EfficientNet-B7运行速度比GPipe快6.1倍,这表明我们的EfficientNets在实际硬件上确实很快。
5.3 ⭐️EfficientNet 的迁移学习结果
我们还在一系列常用的迁移学习数据集上评估了我们的EfficientNet,如表6所示。我们借用相同的训练设置,它采用ImageNet预训练的检查点并对新数据集进行微调。
表5示出了迁移学习性能:(1)与公共可用模型相比,例如NASNet-A和Inception-v4,我们的EfficientNet模型实现了更好的准确性,平均参数减少了4.7倍(高达21倍)。(2)与包括DAT,其动态地合成训练数据和GPipe(Huang等人,2018年),我们的EfficientNet模型仍然在8个数据集中的5个数据集中超过了它们的准确性,但使用的参数少了9.6倍。
图6比较了各种型号的精度-参数曲线。一般来说,我们的EfficientNets始终以比现有模型(包括ResNet)少一个数量级的参数实现更好的准确性、DenseNet,Inception和NASNet。
图6:模型参数与迁移学习准确性—所有模型均在ImageNet上进行预训练,并在新数据集上进行微调。
六、6️⃣Discussion—讨论
为了从EfficientNet架构中理清我们提出的缩放方法的贡献,图8比较了同一EfficientNet-B 0基线网络的不同缩放方法的ImageNet性能。在一般情况下,所有的缩放方法提高精度的成本更多的FLOPS,但我们的复合缩放方法比其他单一维度缩放方法可以进一步提高精度,高达2.5%,这表明我们提出的复合缩放的重要性。
为了进一步理解为什么我们的复合缩放方法比其他方法更好,图7比较了使用不同缩放方法的几个代表性模型的类激活图。
为了进一步理解为什么我们的复合标度方法比其他方法更好,图7比较了几个具有代表性的模型的类激活图,这些模型具有不同的标度方法。所有这些模型都是从相同的EfficientNet-B 0基线扩展的,其FLOPS比基线高出约4倍。图像是从ImageNet验证集中随机挑选的。如图所示,具有复合缩放的模型倾向于关注具有更多对象细节的更相关区域,而其他模型要么缺乏对象细节,要么无法捕获图像中的所有对象。
七、6️⃣Conclusion—结论
在本文中,我们系统地研究了ConvNet缩放,并发现仔细平衡网络宽度,深度和分辨率是一个重要但缺失的部分,这阻碍了我们提高准确性和效率。为了解决这个问题,我们提出了一种简单而高效的复合缩放方法,它使我们能够以更有原则的方式轻松地将基准ConvNet扩展到任何目标资源约束,同时保持模型效率。在这种复合缩放方法的支持下,我们证明了移动大小的EfficientNet模型可以非常有效地扩展,在ImageNet和五个常用的迁移学习数据集上,通过数量级更少的参数和FLOPS,超越了最先进的精度。