文章目录
简介
E
f
f
i
c
i
e
n
t
D
e
t
{\rm EfficientDet}
EfficientDet是
2019
2019
2019年发表在
a
r
X
i
v
{\rm arXiv}
arXiv上的一篇基于神经架构搜索(
N
e
u
r
a
l
A
r
c
h
i
t
e
c
t
u
r
e
S
e
a
r
c
h
,
N
A
S
{\rm Neural\ Architecture\ Search,NAS}
Neural Architecture Search,NAS)的目标检测方法。 此前,论文作者提出的发表在
I
C
M
L
2019
{\rm ICML\ 2019}
ICML 2019上的图像分类方法
E
f
f
i
c
i
e
n
t
N
e
t
{\rm EfficientNet}
EfficientNet在速度、精度、参数量上均表现最佳。不得不说,虽然
N
A
S
{\rm NAS}
NAS得到的模型效果好,但同时需要昂贵的硬件资源。同样地,
E
f
f
i
c
i
e
n
t
D
e
t
{\rm EfficientDet}
EfficientDet在所有目标检测方法中达到
S
O
T
A
{\rm SOTA}
SOTA。
论文原文 源码
在介绍下一部分前,首先简要介绍
E
f
f
i
c
i
e
n
t
N
e
t
{\rm EfficientNet}
EfficientNet的相关工作。
E
f
f
i
c
i
e
n
t
N
e
t
{\rm EfficientNet}
EfficientNet是基于
N
A
S
{\rm NAS}
NAS得到的模型,这里以基于强化学习介绍
N
A
S
{\rm NAS}
NAS。作者注意到,合理的模型缩放能够显著增加其性能,但同时需要注意不平衡的缩放会降低模型性能。在计算资源有限的情况下,如何有效地增大模型的深度、宽度和分辨率是
E
f
f
i
c
i
e
n
t
N
e
t
{\rm EfficientNet}
EfficientNet关心的重点。论文提出一种的新的缩放方法,即使用一个复合系数均匀地增大模型的各个维度,基于
N
A
S
{\rm NAS}
NAS让模型自动学习最佳模块和缩放系数。下图是实验结果对比:
上图是在 I m a g e N e t {\rm ImageNet} ImageNet数据集上的实验结果。 E f f i c i e n t N e t B 0 ﹣ B 7 {\rm EfficientNet\ B0﹣B7} EfficientNet B0﹣B7是在 E f f i c i e n t N e t B 0 {\rm EfficientNet\ B0} EfficientNet B0的基础上使用不同复合系数得到。下面给出 E f f i c i e n t N e t B 0 {\rm EfficientNet\ B0} EfficientNet B0的网络结构:
其中 M B C o n v {\rm MBConv} MBConv指 M o b i l e I n v e r t e d B o t t l e n e c k {\rm Mobile\ Inverted\ Bottleneck} Mobile Inverted Bottleneck,来自于 M o b i l e n e t v 2 {\rm Mobilenetv2} Mobilenetv2,是一种轻量模块。具体可阅读这里。
0. Abstract
作者系统地利用
N
A
S
{\rm NAS}
NAS得到一个目标检测模型,并通过几个关键点对其优化。首先,提出一种新的特征融合方法,
B
i
F
P
N
{\rm BiFPN}
BiFPN;其次,提出一种复合缩放方法,涉及对模型分辨率、深度、宽度、分类网络、回归网络等的缩放。实验结果为在
M
S
C
O
C
O
{\rm MS\ COCO}
MS COCO数据集上的
A
P
{\rm AP}
AP为
52.2
52.2
52.2、参数量为
52
M
{\rm 52M}
52M、计算量为
325
B
{\rm 325B}
325B。
论文贡献:(一)提出一种新的目标检测模型家族,
E
f
f
i
c
i
e
n
t
D
e
t
{\rm EfficientDet}
EfficientDet;(二)提出新的带权特征融合模块,
B
i
F
P
N
{\rm BiFPN}
BiFPN;(三)将模型的复合缩放方法应用于目标检测任务中。
1. Introduction
针对是否能够在计算资源有限的情况下构建一个高精度、高效率、可扩展的目标检测模型的问题,论文提出了一系列针对
b
a
c
k
b
o
n
e
{\rm backbone}
backbone、特征融合、分类/回归网络优化的方法。
(1)高效的多尺度特征融合方法 此前,
F
P
N
{\rm FPN}
FPN是一种常用的多尺度特征融合方法。最近,
P
A
N
e
t
{\rm PANet}
PANet和
N
A
S
﹣
F
P
N
{\rm NAS﹣FPN}
NAS﹣FPN等提出一类混合尺度融合的方法。但由于不同尺度的特征图具有不同分辨率,对融合后的特征图贡献也有所不同,简单地对不同尺度相加并非最佳的方法。基于以上问题,论文提出一种双向特征金字塔网络(
B
i
F
P
N
{\rm BiFPN}
BiFPN),通过可学习权重融合不同尺度的特征;
(2)高效的模型缩放方法 此前,目标检测模型想要获得高性能,必须通过设计一个大型
b
a
c
k
b
o
n
e
{\rm backbone}
backbone或增大模型分辨率来提高其提取特征的能力。但这同样会带来计算速度的降低和模型参数量的增加。基于
N
A
S
{\rm NAS}
NAS的思想,论文提出一种复合缩放方法,对模型分辨率、深度、宽度、分类网络、回归网络进行优化;
(3)高效的骨干网络 基于
E
f
f
i
c
i
e
n
t
N
e
t
{\rm EfficientNet}
EfficientNet在分类任务上获得了优异的结果,论文提出新的目标检测模型家族,
E
f
f
i
c
i
e
n
t
D
e
t
{\rm EfficientDet}
EfficientDet。下图可视化了目标检测实验结果对比:
2. Related Work
相关工作部分首先介绍了一阶段检测方法和两阶段目标检测方法,并指出论文主要基于一阶段方法,在保证模型推理速度的前提下提高模型的精度;其次,介绍了特征融合的相关工作,包括 F P N {\rm FPN} FPN、 P A N e t {\rm PANet} PANet、 S T D L {\rm STDL} STDL、 M 2 d e t {\rm M2det} M2det、 G ﹣ F R N e t {\rm G﹣FRNet} G﹣FRNet、 N A S ﹣ F P N {\rm NAS﹣FPN} NAS﹣FPN等;最后,介绍了模型缩放的相关工作,包括 R e s N e t {\rm ResNet} ResNet、 R e s N e X t {\rm ResNeXt} ResNeXt等。论文主要基于 E f f i c i e n t N e t {\rm EfficientNet} EfficientNet设计模型缩放方法。
3. BiFPN
3.1 Problem Formulation
多尺度融合致力于将不同分辨率的特征图融合,给定一系列特征 P ⃗ i n = ( P l 1 i n , P l 1 i n , . . . ) \vec{P}^{in}=(P^{in}_{l_1},P^{in}_{l_1},...) Pin=(Pl1in,Pl1in,...),其中 P l i i n P^{in}_{l_i} Pliin表示第 l i l_i li层特征。设 f f f是一种特征融合方法,则 P ⃗ o u t = f ( P ⃗ i n ) \vec{P}^{out}=f(\vec{P}^{in}) Pout=f(Pin)。
3.2 Cross-Scale Connections
混合尺度融合致力于将多个不同分辨率的特征图信息融合。 P A N e t {\rm PANet} PANet将自上而下结构和自下而上结构结合,丰富融合后的特征图语义信息。而 N A S ﹣ F P N {\rm NAS﹣FPN} NAS﹣FPN基于神经架构搜索技术,得到一种混合尺度融合方法,但同时需要大量的计算运力。论文对混合尺度融合做了以下优化:去掉只含有一个输入的特征图;如果输入同输出位于同一尺度,则添加一个额外连接;多次使用融合自上而下结构和自下而上结构的模块以加强模型提取特征的能力。下图展示了以上提到的几种模块:
上图 ( a ) {\rm (a)} (a)的 F P N {\rm FPN} FPN结构中, P i {\rm P_i} Pi是通过 C N N {\rm CNN} CNN得到的自下而上的路径;然后通过上采样得到一条自上而下的路径;最后通过横向连接和上采样统一特征图分辨率,得到包含不同尺度语义信息的特征图。
上图 ( b ) {\rm (b)} (b)的 P A N e t {\rm PANet} PANet结构中,左边部分是一个 F P N {\rm FPN} FPN结构;右边再通过下采样得到一条自下而上的路径;最后通过横向连接和上采样统一特征图分辨率,得到包含不同尺度语义信息的特征图。
上图 ( c ) {\rm (c)} (c)的 N A S ﹣ F P N {\rm NAS﹣FPN} NAS﹣FPN结构中,在每个特征融合模块中包含了横向连接、上采样、下采样、跳跃连接等;最后模型中包含多个这样的特征提取模块。
上图 ( d ) {\rm (d)} (d)的 B i F P N {\rm BiFPN} BiFPN结构中,每个特征融合模块中包含了类似于 P A N e t {\rm PANet} PANet的结构;其中同样也加入了跳跃连接;最后模型中包含多个这样的特征提取模块。
3.3 Weighted Feature Fusion
带权特征融合方法主要包含以下三种:(1) O = ∑ i w i ⋅ I i O=\sum_{i}w_i·I_i O=∑iwi⋅Ii,其中权重通过融合特征图的分辨率确定,论文提出通过权重归一化约束其值范围以稳定训练过程;(2) O = ∑ i e w i ε + ∑ j e w j ⋅ I i O=\sum_{i}\frac{e^{w_i}}{ε+\sum_{j}e^{w_j}}·I_i O=∑iε+∑jewjewi⋅Ii,以 s o f t m a x {\rm softmax} softmax的形式确定各权重,但实验证明这种方式会将模型性能;(3) O = ∑ i w i ε + ∑ j w j ⋅ I i O=\sum_{i}\frac{w_i}{ε+\sum_{j}w_j}·I_i O=∑iε+∑jwjwi⋅Ii,这是论文使用的求带权特征融合权重的方法。如图 ( 5 ) {\rm (5)} (5)中的 ( d ) {\rm (d)} (d),以求自上而下的中间特征 P 6 t d P^{td}_6 P6td和自下而上的输出特征 P 6 o u t P^{out}_6 P6out为例: P 6 t d = C o n v ( w 1 ⋅ P 6 i n + w 2 ⋅ R e s i z e ( P 7 i n ) w 1 + w 2 + ε ) P 6 o u t = C o n v ( w 1 ′ ⋅ P 6 i n + w 2 ′ ⋅ P 6 t d + w 3 ′ ⋅ R e s i z e ( P 5 o u t ) w 1 ′ + w 2 ′ + w 3 ′ + ε ) P^{td}_6=Conv(\frac{w_1·P^{in}_6+w_2·Resize(P^{in}_7)}{w_1+w_2+ε})\\ \\ P^{out}_6=Conv(\frac{w_1^{'}·P^{in}_6+w^{'}_2·P^{td}_6+w^{'}_3·Resize(P^{out}_5)}{w_1^{'}+w^{'}_2+w^{'}_3+ε}) P6td=Conv(w1+w2+εw1⋅P6in+w2⋅Resize(P7in))P6out=Conv(w1′+w2′+w3′+εw1′⋅P6in+w2′⋅P6td+w3′⋅Resize(P5out))
P 6 t d P^{td}_6 P6td和 P 6 o u t P^{out}_6 P6out分别是 ( 5 ) {\rm (5)} (5)中的 ( d ) {\rm (d)} (d)中的两个蓝色位置。
4. EfficientDet
4.1 EfficientDet Architecture
下图是
E
f
f
i
c
i
e
n
t
D
e
t
{\rm EfficientDet}
EfficientDet的网络结构:
上图中 b a c k b o n e {\rm backbone} backbone部分沿用 E f f i c i e n t N e t {\rm EfficientNet} EfficientNet,然后接三个特征融合模块 B i F P N {\rm BiFPN} BiFPN;最后是分类和回归网络。
4.2 Compound Scaling
为了提高模型的精度和效率,本部分介绍使用混合缩放方法进行模型缩放。
B
a
c
k
b
o
n
e
N
e
t
w
o
r
k
{\rm Backbone\ Network}
Backbone Network,骨干网络部分沿用
E
f
f
i
c
i
e
n
t
N
e
t
{\rm EfficientNet}
EfficientNet中的模型缩放方法。
B
i
F
P
N
N
e
t
w
o
r
k
{\rm BiFPN\ Network}
BiFPN Network,论文采用线性增加
B
i
F
P
N
{\rm BiFPN}
BiFPN的深度
D
b
i
f
p
n
D_{bifpn}
Dbifpn和宽度
W
b
i
f
p
n
W_{bifpn}
Wbifpn的方法,经实验确定
1.35
1.35
1.35为最佳宽度缩放因子。得到:
W
b
i
f
p
n
=
64
⋅
(
1.3
5
φ
)
,
D
b
i
f
p
n
=
3
+
φ
(4.1)
W_{bifpn}=64·(1.35^{φ}),\ \ \ D_{bifpn}=3+φ\tag{4.1}
Wbifpn=64⋅(1.35φ), Dbifpn=3+φ(4.1)
B o x / C l a s s P r e d i c t i o n N e t w o r k {\rm Box/Class\ Prediction\ Network} Box/Class Prediction Network,固定分类网络和回归网络的宽度即 W p r e d = W b i f p n W_{pred}=W_{bifpn} Wpred=Wbifpn,然后增加其深度: D b o x = D c l a s s = 3 + ⌊ φ / 3 ⌋ (4.2) D_{box}=D_{class}=3+\lfloor{φ/3}\rfloor \tag{4.2} Dbox=Dclass=3+⌊φ/3⌋(4.2)
I n p u t I m a g e R e s o l u t i o n {\rm Input\ Image\ Resolution} Input Image Resolution,线性增加输入图像的分辨率: R i n p u t = 512 + φ ⋅ 128 (4.3) R_{input}=512+φ·128\tag{4.3} Rinput=512+φ⋅128(4.3)
下图展示使用不同的 φ φ φ值得到 E f f i c i e n t D e t B 0 ﹣ B 7 {\rm EfficientDet\ B0﹣B7} EfficientDet B0﹣B7:
5. Experiments
模型训练和测试过程中的细节请阅读原文,这里直接给出目标检测实验结果对比:
此外,论文还针对 b a c k b o n e {\rm backbone} backbone、 B i F P N {\rm BiFPN} BiFPN、权重方法、混合缩放等做了一系列消融实验,详细内容请阅读原文。
6. Conclusion
作者基于提出的高性能图像分类网络
E
f
f
i
c
i
e
n
t
N
e
t
{\rm EfficientNet}
EfficientNet,提出目标检测家族
E
f
f
i
c
i
e
n
t
D
e
t
{\rm EfficientDet}
EfficientDet。沿用前者在缩放网络中的复合缩放网络的方法,对
b
a
c
k
b
o
n
e
{\rm backbone}
backbone、特征融合、分类回归网络等提出优化。提出一种新的带权特征融合模块,
B
i
F
P
N
{\rm BiFPN}
BiFPN。最后,对模型中的各个模块进行缩放,得到不同的网络结构。在
M
S
C
O
C
O
{\rm MS\ COCO}
MS COCO数据集上的速度、精度、计算量均达到了
S
O
T
A
{\rm SOTA}
SOTA。
阅读本文的目的有:一来是想了解传统的目标检测方法(相比于
A
n
c
h
o
r
﹣
F
r
e
e
{\rm Anchor﹣Free}
Anchor﹣Free)的发展前沿;二来是了解基于
N
A
S
{\rm NAS}
NAS得到的目标检测模型与人为设计模型的异同;然后是了解模型缩放在目标检测任务中的应用;最后是
E
f
f
i
c
i
e
n
t
D
e
t
{\rm EfficientDet}
EfficientDet在公开数据集上达到了
S
O
T
A
{\rm SOTA}
SOTA。在逛到其他论坛时,发现其他人在复现论文模型时掉进很多坑,一是硬件要求;二是调参要求。如果没有硬件条件,可以直接使用文中得到的模型结构。具体内容可以参考官方提供的源码和[参考]中几位民间高手复现的结果。
由于没有阅读源码,本文只总结了 E f f i c i e n t D e t {\rm EfficientDet} EfficientDet的大体结构和信息,详细内容请阅读论文原文。
参考
- Tan M, Pang R, Le Q V. Efficientdet: Scalable and efficient object detection[J]. arXiv preprint arXiv:1911.09070, 2019.
- Tan M, Le Q V. Efficientnet: Rethinking model scaling for convolutional neural networks[J]. arXiv preprint arXiv:1905.11946, 2019.
- Liu S, Qi L, Qin H, et al. Path aggregation network for instance segmentation[C]//Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. 2018: 8759-8768.
- https://github.com/zylo117/Yet-Another-EfficientDet-Pytorch.
- https://github.com/toandaominh1997/EfficientDet.Pytorch.