文章目录
EfficientDet: Scalable and Efficient Object Detection
第一次写,可能存在许多误读误解,多多包涵,谢谢!
论文 EfficientDet: Scalable and Efficient Object Detection
论文地址:
https://openaccess.thecvf.com/content_CVPR_2020/papers/Tan_EfficientDet_Scalable_and_Efficient_Object_Detection_CVPR_2020_paper.pdf
https://arxiv.org/abs/1911.09070v7
导入
论文通过改进 FPN 中多尺度特征融合的结构和借鉴 EfficientNet模型缩放方法,提出了一种模型可缩放且高效的目标检测算法 EfficientDet。
Abstract
模型效率在CV中变得越来越重要。论文系统地研究了用于目标检测的神经网络结构设计选择,提出了几种提高效率的关键方案。首先论文提出了加权双向特征融合网络(weighted bi-directional feature pyramid network,BiFPN)。第二,论文提出了混合缩放(compound scaling)方法,可以同时对所有的主干网络、特征网络、box/class预测网络的分辨率、深度、宽度进行均匀缩放。基于这些优化和更好的主干网,论文开发了一个新的目标检测,命名为EfficentDet,它在广泛的资源限制条件下,始终比之前方法获得更好的效率。特别的,单模型、单比例中,论文的EfficentDet-D7在COCO测试集上实现了最先进的55.1AP,parameters是77M,FLOPs是410B,比之前的检测器小4-9倍,FLOPs少13-42倍。论文代码地址是https://github.com/google/automl/tree/master/efficientdet。
Introduction
作者在introduction中首先引入模型的效率对于目标检测越来越重要。一些模型能够获得更高的效率,然而通常都牺牲了精度,诸如基于one-stage的SSD,Yolo9000,Yolov3和基于anchor-free一些模型。作者提到以往的模型仅关注与特定的,小的资源需求的范围,在实际中存在着从移动设备到数据中心的不同资源限制的情况。然后引入论文的主要解决问题:能不能构建一种可扩展(scale)的网络,兼顾高精度和高效率,并且来适应更广泛的资源约束(3B到300B FLOPs)呢?作者基于one-stage检测器的范例,对主干网络、特征融合方式、边界框/类别预测网络等几个方面的设计进行选择,发现两大挑战:
Challenge 1: ***高效的多尺度特征融合(efficient multi-scale feature fusion)***。关于不同输入特征的融合,之前的大多数研究都是不进行区分,简单的汇总加和起来。然而,这些不同的输入特征往往是不来自于不同分辨率下的,它们对于输出特征的贡献程度应该是不相等的。
基于此,作者提出了一种简单而高效的加权双向特征融合网络(weighted bi-directional feature pyramid network,BiFPN),该模型引入了可学习的权重,用于学习不同输入特征的重要性,同时重复使用自下而上(bottom-up)和自上而下(top-down)的多尺度特征融合。
Challenge 2:***模型缩放(model scaling)***。为了获得高准确率,之前的研究主要依赖于比较大的主干网络(back bone network)和尺寸较大的输入图像。作者注意到,考虑到准确性和效率,扩展特征网络和边界框/类预测网络也很关键。
基于此,作者对于目标检测的问题提出了一种混合缩放的方法,该方法可以对网络主干网、特征网络、边界框/类别预测网络的分辨率、深度、宽度进行统一缩放。
最后,作者还发现最近提出的文献EfficientNet相较于之前普遍使用的ResNets、ResNetXt和AmoebaNet等主干结构更加高效。因此,作者将提出的BiFPN和混合缩放与EfficientNet结构相结合,命名为EfficentDet。
Related Work
BiFPN
该节首先阐述了多尺度特征融合问题(multi-scale feature fusion problem),然后介绍了BiFPN的主要思想:高效的双向跨尺度连接和加权特征融合(efficient bidirectional cross-scale connections and weighted feature fusion)。
Problem Formulation(问题描述)
多尺度特种融合目标是聚合不同分辨率的特征。通常来说给定一组多尺度特征 P i n = ( P l 1 i n , P l 2 i n , . . . ) P^{in}=(P_{l_1}^{in}, P_{l_2}^{in}, ...) Pin=(Pl1in,Pl2in,...), P l i i n P_{l_i}^{in} Pliin表示第 i i i层上的特征。论文目标是寻找一个转换函数 f f f能够聚合特征并输出高一个新的特征 P o u t = f ( P i n ) P^{out}=f(P^{in}) Pout=f(Pin),比如说图中FPN,输入是 P i n = ( P l 1 i n , P l 2 i n , . . . ) P^{in}=(P_{l_1}^{in}, P_{l_2}^{in}, ...) Pin=(Pl1in,Pl2in,...),其中 P l i i n P_{l_i}^{in} Pliin表示尺度为输入图片分辨率的 1 / 2 i 1/2^i 1/2i。FPN采用自顶向下的方法聚合多尺度特征:
P o u t 7 = C o n v ( P i n 7 ) P_{out}^7 = Conv(P_{in}^7) Pout7=Conv(Pin7)
P o u t 6 = C o n v ( P i n 6 + R e s i z e ( P o u t 7 ) ) P_{out}^6 = Conv(P_{in}^6 + Resize(P_{out}^7)) Pout6=Conv(Pin6+Resize(Pout7))
. . . ... ...
P o u t 3 = C o n v ( P i n 3 + R e s i z e ( P o u t 4 ) ) P_{out}^3 = Conv(P_{in}^3 + Resize(P_{out}^4)) Pout3=Conv(Pin3+Resize(Pout4))
R e s i z e Resize Resize通常表示上采样或者下采样函数, C o n v Conv Conv是卷积操作。
Cross-scale connections(跨尺度连接)
传统自顶向下FPN的单向信息流方式存在固有的限制。如上图 b b b,应对这个问题,PANet增加了自底向上的路径。跨尺度连接在M2det等也有进一步的研究。最近的NAS-FPN采用神经网络结构搜索来寻找更好的跨尺度特征网络拓扑结构,但在搜索过程中需要数千个GPU小时,并且网络不规则,难以解释或修改,如上图 c c c。
通过对这三个模型表现和效率的研究,论文发现PANet精度比FPN和NAS-FPN精度高,但是参数和计算量更大(见表5)。为了提高效率,论文提出了几种针对跨尺度连接的优化方法:
1、移除了那些只有一条边的节点。它们没有发生特征融合,对于以特征融合为目标的特征网络贡献较低。这样就有了一个简单的双向网络。
2、增加了同层上输入到输出的边。这样可以在不增加消耗的情况融合更多的特征。
3、第三,与PANet只有一条自顶向下和一条自底向上的路径不同,论文将每个双向(自顶向下和自底向上)路径视为一个特征网络层,并多次重复同一层以实现更高层次的特征融合。
下一节讨论如何使用复合缩放方法确定不同资源约束下的层数。通过这些优化,论文将新特性网络命名为加权双向特征融合网络(weighted bi-directional feature pyramid network,BiFPN)。
Weighted Feature Fusion(权重特征融合)
在融合不同分辨率的特征时,通常是把他们分辨率调整相同,然后相加。金字塔注意力网络(Pyramid attention network)引入全局自注意上采样来恢复像素点的定位,在Nas-fpn中有进一步的研究。以前所有的方法都对所有的输入特征一视同仁。然而,论文观察到,由于不同的输入特征在不同的分辨率下,它们对输出特性的贡献通常是不相等的。应对该问题,论文为每个输入增加一个额外的权重,并让网络学习每个输入特征的权重。基于这一思想,论文考虑三种加权融合方法:
- Unbounded fusion: O = ∑ i w i ∗ I i O = \sum_i w_i * I_i O=∑iwi∗Ii。其中, w i w_i wi是学习的权重,这个权重可以是针对每个feature的(per-feature),也可以是针对通道的(per-channel),还可以是针对像素的(per-pixel)。由于权值不受限,会造成训练的不稳定。因此,采用权值归一化的方式限定每个权重的范围。
- Softmax-based fusion: 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 Softmax Softmax会导致计算变慢。
- Fast normalized fusion: O = ∑ i w i ε + ∑ j w j ∗ I i O= \sum_i \frac{w_i}{\varepsilon + \sum_j w_j} * I_i O=∑iε+∑jwjwi∗Ii。 w i > = 0 , ε = 0.0001 w_i >= 0, \varepsilon = 0.0001 wi>=0,ε=0.0001。这种快速融合方法与基于softmax的融合方法具有非常相似的学习行为和准确性,但在GPU上运行速度快了30%(见表6)。
我们最终的BiFPN集成了bidirectional crossscale connections和fast normalized fusion。举一个具体的例子,我们在这里描述了图5中所示6层的的两个融合特征:
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^{td}_6 = Conv (\frac{w_1 * P^{in}_6 + w_2 * Resize(P^{in}_7)}{w_1 + w_2 + \epsilon}) P6td=Conv(w1+w2+ϵw1∗P6in+w2∗Resize(P7in))
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^{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 + \epsilon}) P6out=Conv(w1′+w2′+w3′+ϵw1′∗P6in+w2′∗P6td+w3′∗Resize(P5out))
其中 P 6 t d P^{td}_6 P6td是自底向上第6层的中间特征, P 6 o u t P^{out}_6 P6out是自底向上第6层的输出特征,其余输出特征计算方法类似。值得注意的是,为了进一步提高效率,我们使用深度可分离卷积进行特征融合,并在每次卷积后添加批量归一化和**函数。
EfficientDet
基于BiFPN,论文设计了新的目标检测模型EfficientDet。
EfficientDet Architecture
模型基本上遵循one-stage目标检测范式,其使用ImageNet的预训练EfficientNets作为主干网络,论文提出的BiFPN重复多次作为特征网络,输入是从主干网络中提取3-7层的特征{ P 3 , P 4 , P 5 , P 6 , P 7 P_3, P_4, P_5, P_6, P_7 P3,P4,P5,P6,P7},这些融合的特征喂给class\box网络,分别产生分类预测和边框回归预测。class\box网络的权值是共享的。
Compound Scaling(复合缩放)
以优化精度和效率为目标,论文设计开发一系列能够满足各种资源限制的模型。这里的一个关键挑战是如何放大baseline EfficientDet。以往放大baseline的方法有:使用更大的主干网、使用更大的输入和堆叠更多的FPN。这些方法往往不具备高效性,因为他们只关注单一有限的放大维度。最近的研究表明(指Efficientnet),通过联合扩展网络宽度、深度和输入分辨率的所有维度,在图像分类方面表现出显著的性能。受这些工作的启发,论文提出了一种新的目标检测的复合尺度方法,它使用一个简单的复合系数 ϕ \phi ϕ,联合放大主干网、BiFPN、class/box网络和分辨率的所有维度。与Efficientnet不同的是,图像分类模型相比目标检测模型具有更大的缩放维度,因此所有维度的网格搜索代价高昂。因此,论文使用基于启发式的缩放方法,但仍然遵循联合放大所有维度的主要思想。
- Backbone network 论文重用EfficientNet-B0到B6的相同宽度/深度缩放系数,这样论文可以直接重用它的ImageNet预训练模型。
- BiFPN network 论文线性增加BiFPN的深度 D b i f p n D_{bifpn} Dbifpn,因为这需要四舍五入为小整数。BiFPN的宽度 W b i f p n W_{bifpn} Wbifpn和EfficientNet同样,呈现指数增长。具体地说,我们对 { 1.2 、 1.25 、 1.3 、 1.35 、 1.4 、 1.45 } \{1.2、1.25、1.3、1.35、1.4、1.45\} {1.2、1.25、1.3、1.35、1.4、1.45}执行网格搜索,并选择最佳值1.35作为BiFPN宽度缩放因子。BIFFN宽度和深度按以下公式缩放:
W b i f p n = 64 ∗ ( 1.3 5 ϕ ) W_{bifpn} = 64 * (1.35^{\phi}) Wbifpn=64∗(1.35ϕ)
D b i f p n = 3 + ϕ D_{bifpn} = 3 + \phi Dbifpn=3+ϕ
- Box/class prediction network 我们将它们的宽度固定为始终与BiFPN相同(即 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 ⌋ D_{box} = D_{class} = 3 + \lfloor \phi / 3 \rfloor Dbox=Dclass=3+⌊ϕ/3⌋
- Input image resolution 由于BiFPN中使用特征级别3-7,输入分辨率必须除以 2 7 = 128 2^7=128 27=128,因此我们使用以下等式线性增加分辨率:
R i n p u t = 512 + ϕ ⋅ 128 R_{input} = 512 + \phi \cdot 128 Rinput=512+ϕ⋅128
根据上述公式,论文设计了EfficientDet-D0 ( ϕ = 0 \phi=0 ϕ=0) 到 D7 ( ϕ = 7 \phi=7 ϕ=7)表1,其中D7和D7x具有相同的BIFFN和head,但D7使用更高的分辨率,D7x使用更大的主干网和一个更多的功能级别(从 P 3 P_3 P3到 P 8 P_8 P8)。值得注意的是,论文的复合缩放是基于启发式的,可能不是最优的,但是这种简单的缩放方法可以显著提高效率,而不是图6中的其他一维缩放方法.
Experiments
EfficientDet for Object Detection
在COCO 2017检测数据集使用118K训练图像评估EfficientDet。
使用动量值为0.9(momentum 0.9)和权重衰减为4e-5(weight decay 4e-5)的SGD优化器训练每个模型。
在第一个训练时期,学习率从0线性增加到0.16,然后使用余弦衰减规则进行退火。
在每次卷积之后添加同步批量范数(Synchronized batch norm),其中批量范数衰减为0.99(batch norm decay 0.99),epsilon 为1e-3。
使用SiLU(Swish-1)**函数;衰退率为0.9998的指数移动平均数(exponential moving average with
decay 0.9998)。
采用了常用的焦损(focal loss): α = 0.25 \alpha = 0.25 α=0.25, γ = 1.5 \gamma = 1.5 γ=1.5,宽高比为 1 / 2 , 1 , 2 {1/2,1,2} 1/2,1,2
在训练过程中,我们应用水平翻转(horizontal flipping)和缩放抖动(scale jittering)[0.1,2.0],在裁剪之前将图像随机调整为原始大小的0.1x到2.0x。
采用soft-NMS进行评估。
对于D0-D6,每个模型在32个TPUv3核上训练300 epochs,总batch size为128个,但为了突破极限,我们在128个TPUv3核上训练600个时期的D7/D7x。
表2比较了在单模型单尺度设置下,不增加测试时间的情况下的效率。论文报告了test-dev(20K)和val(5K)上的精度。值得注意的是,模型性能取决于网络结构和训练设置(见附录),但为了简单起见,我们只使用我们的训练器复制RetinaNet,并参考他们论文中的其他模型。
总的来说,论文的EfficientDet在广泛的精度或者资源限制上,比以前的检测器精度更好,模型更小(4-9分之一),FLOPs更少(13-42分之一)。在相对较低精度的范围,论文的EfficientDet-D0在与YOLOv3相似精度的情况下FLOPs只有28分之一。在达到相似精度的情况下,与RetinaNet 和Mask-RCNN相比,EfficientDet模型参数只有8分之一,FLOPs只有26分之一。在高精度任务中,论文的模型同样超过NAS-FPN,并且参数量和FLOPs更少。特别是,论文的单模型单标度EfficientDet-D7x在test-dev上达到了55.1 AP,在精度 (+4 AP) 和效率(7x fewer FLOPs)方面都优于现有技术。
此外,我们还比较了Titan-vfp32、v100gpufp16和单线程CPU的推理延迟。值得注意的是,我们的V100延迟是端到端的,包括预处理和NMS后处理。图4说明了模型大小和GPU/CPU延迟的比较。为了公平比较,这些数字仅包括在同一台机器上使用相同设置测量的结果。与以前的检测器相比,EfficientDet模型在GPU上的速度提高了4.1倍,在CPU上提高了10.8倍,这表明它们在真实环境硬件上也很有效。
EfficientDet for Semantic Segmentation
虽然我们的EfficientDet模型主要是为目标检测而设计的,但我们也对它们在其他任务(如语义分割)中的表现感兴趣。参考【19,Panoptic feature pyramid networks. CVPR, 2019.】,我们修改了我们的EfficientDet模型,以保持BiFPN中的特征级 P 2 , P 3 , … , P 7 {P_2,P_3,…,P_7} P2,P3,…,P7,但仅使用 P 2 P2 P2进行最终的每像素分类。为了简单起见,这里我们只评估EfficientDet-D4的模型,它使用ImageNet预训练的EfficientNet-B4主干(大小与ResNet-50相似)。我们将BiFPN的通道设置为128,分类大小为256。BiFPN和classification head重复3次。
表3]显示了我们的模型与之前在Pascal VOC 2012上的DeepLabV3+的比较。值得注意的是,我们用集合、测试时间增加或COCO预训练排除了这些结果。在相同的单模型单标度设置下,我们的模型比现有的DeepLabV3+低9.8x,精度提高1.7%。这些结果表明,EfficientDet在语义分割方面也有很大的应用前景。
Ablation Study(消融研究)
实际上ablation study就是为了研究模型中所提出的一些结构是否有效而设计的实验。
比如你提出了某某结构,但是要想确定这个结构是否有利于最终的效果,
那就要将去掉该结构的网络与加上该结构的网络所得到的结果进行对比,这就是ablation study
Disentangling Backbone and BiFPN
由于EfficientDet同时使用了一个强大的主干网和一个新的BiFPN,我们想了解它们对提高精度和效率的贡献有多大。表4比较使用RetinaNet的训练参数的主干网和BiFPN影响。从带有ResNet-50的主干网和自上而下的FPN的RetinaNet检测器开始,我们首先用EfficientNet-B3代替主干,在参数和FLOPs稍微减少的情况下,精度提高了约3AP。通过进一步使用我们提出的BiFPN代替FPN,我们获得了额外的4AP的增益,而参数和FLOPs要少得多。这些结果表明,有效的网络主干和BiFPN对我们的最终模型都是至关重要的。
BiFPN CrossScale Connections(BiFPN跨尺度融合)
表5显示了图2中列出的具有不同跨尺度融合网络的精度和模型复杂度。值得注意的是,原来的FPN和PANet只有一个自上而下或自下而上的路径,但为了公平比较,我们在这里重复它们多次,并将所有传统卷积替换为深度可分离卷积,这与BiFPN相同。我们使用相同的主干网和class/box预测网络,所有实验都使用相同的训练设置。正如我们所看到的,传统的自顶向下的FPN固有地受到单向信息流的限制,因此精度最低。虽然重复的FPN+PANet比NAS-FPN获得稍好的精度,但它也需要更多的参数和FLOPs。我们的BiFPN实现了与重复FPN+PANet类似的精度,但是使用的参数和FLOPs要少得多。通过附加的加权特征融合,我们的BiFPN进一步以更少的参数和更少的FLOPs达到最佳的精度。
Softmax vs Fast Normalized Fusion
上文提出了一种快速归一化特征融合方法,在保留归一化权值优点的同时,克服了代价高的softmax。表6在三种不同模型尺寸的目标检测模型上比较了softmax和快速归一化融合方法。结果表明,论文的快速归一化融合方法与基于softmax的融合方法具有相似的精度,但在gpu上运行速度快了1.26x-1.31x。
为了进一步了解基于softmax和快速归一化融合的行为,图5给出了在EfficientDet-D3中从BiFPN层中随机选取的三个特征融合节点的学习权值。值得注意的是,对于基于softmax的融合,规范化权重(\例如,
e
w
i
/
∑
j
e
w
j
e^{w_i}/\sum_{j}e^{w_j}
ewi/∑jewj,对于快速规范化融合,
w
i
/
(
ϵ
+
∑
j
w
j
)
w_i/(\epsilon + \sum_{j}w_j)
wi/(ϵ+∑jwj))对于所有输入始终总和为1。有趣的是,训练过程中归一化权值变化很快,说明不同的特征对特征融合的贡献是不均衡的。尽管变化很快,我们的快速归一化融合方法始终表现出与基于softmax的融合非常相似的学习行为。
Compound Scaling(Compound Scaling)
我们使用一种复合缩放方法来联合放大主干网、BiFPN和class/box预测网络深度/宽度/分辨率的所有维度。图6将我们的复合缩放与其他可选择的方法进行比较,这些方法可以放大分辨率/深度/宽度的单个维度。虽然从相同的目标检测baseline开始,我们的复合缩放方法比其他方法获得了更好的效率,这表明通过更好地平衡不同的架构维度来联合缩放的好处。
Conclusion
本文系统地研究了高效目标检测的网络结构设计选择,提出了一种加权双向特征网络和一种定制的复合缩放方法,以提高目标检测的准确性和效率。基于这些优化,我们开发了一个新的目标检测家族,命名为EfficientDet,在广泛的资源限制下,始终获得比现有技术更好的精度和效率。特别是,我们的EfficientDet实现了最先进的精确性,与以前的对象检测和语义分割模型相比,参数和FLOPs要少得多。
Appendix
Hyperparameters
神经网络结构和训练超参数是目标检测的关键。在这里,我们使用RetinaNet-R50和我们的efficientD-D1两个重要的超参数:raining epochs 和 multi-scale jittering。所有其他超参数与前文的相同.
Training Epochs
许多以前的工作只使用小的epochs:例如,Detectron2默认情况下为每个模型训练12个epoch(1x schedule),最多110个epoch(9x scachedule)。最近的工作表明,如果使用预先训练的主干网,训练时间过长是没有帮助的;但是,我们观察到训练时间过长可以显著提高我们设置的准确性。图7]显示不同训练伦次的结果比较。我们观察到:(1)在300轮次之前。两个模型都能持续提升表现;(2)较长的训练对EfficientDet尤其重要,可能是因为它的模型尺寸较小;(3)与默认的37 AP相比,RetinaNet使用我们的训练设置获得了更高的精确度(+2AP)。本文主要用300轮次以便于在训练次数和精度作出平衡。
Scale Jittering(尺度抖动)
数据增强的方法
一种常见的训练时增强数据的方法是先调整图像大小,然后将其裁剪成固定大小,称为尺度抖动。以前的目标检测通常使用小抖动,例如[0.8,1.2],随机采样原始图像大小的0.8x到1.2x之间的缩放大小。然而,我们观察到,如果训练时间较长,大的抖动可以提高准确性。图8显示了不同抖动的结果:(1)在30个周期的训练中,小抖动(如[0.8,1.2])表现相当好,而大抖动(如[0.1,2.0])实际上会损害准确性;(2)在300个周期的训练中,大抖动会持续提高准确性,这可能是因为规则化更强。本文对所有模型都使用了大尺度抖动[0.1,2.0]。
Image Resolutions
除了逐步增加图像大小的复合缩放外,论文还研究了固定图像分辨率下的精度-延迟权衡。图9比较固定和缩放分辨率下的FfficientDet-D1至D6。令人惊讶的是,它们的精度-延迟权衡非常相似,尽管它们有非常不同的偏好:在相似的精度约束下,与缩放分辨率的模型相比,具有固定分辨率的模型需要更多的参数,但**和峰值内存使用量要少得多。在固定的640x640尺寸下,EfficientDet-D6在34ms延迟下实现了实时47.9AP。
参考
[1] 论文阅记 EfficientDet: Scalable and Efficient Object Detection
[3] CNN 模型所需的计算力(flops)和参数(parameters)数量是怎么计算的?
[5] Keras 搭建自己的Efficientdet目标检测平台(Bubbliiiing 深度学习 教程)
[6] 优化方法总结:SGD,Momentum,AdaGrad,RMSProp,Adam
[8] focal loss焦点损失
[9] Synchronized-BatchNorm-PyTorch