EfficientDet: Scalable and Efficient Object Detection
Abstract
-
在计算机视觉中,模型效率越来越重要。在本文中,本文系统地研究了目标检测的神经网络结构设计选择,并提出了几个关键的优化方法来提高效率。 -
首先,本文提出了一种加权双向特征金字塔网络(BiFPN),该网络实现了简单、快速的多尺度特征融合;其次,本文提出了一种复合缩放方法,统一缩放分辨率,深度和宽度的所有骨干网络,特征网络和框/类预测网络在同一时间。基于这些优化和更好的骨干,本文还开发了一个新的物体探测器家族,称为effentdet,在广泛的资源约束范围内始终实现比现有技术更好的效率。 -
特别是,在单模型和单尺度下,本文的EfficientDet-D7在COCO测试设备上使用77M参数和410B FLOPs实现了最先进的55.1 AP,比以前的检测器小4倍- 9倍,使用的FLOPs1比以前少13倍- 42倍。 -
代码可以在 https://github.com/google/automl/tree/master/efficientdet 上获得。 -
论文下载:[1911.09070] EfficientDet: Scalable and Efficient Object Detection (arxiv.org) -
Google Brain团队在 CVPR 2020 上发布了 EfficientDet目标检测模型, EfficientDet是一系列可扩展的高效的目标检测器的统称, 其精度与速度全面领先于YOLO V3, MaskRCNN, RentinaNet, NAS-FPN这些常见目标检测模型. EfficientDet-D7 的性能更是非常的惊人, 在 326B FLOPS, 参数量 52 M的情况下, COCO 2017 validation 数据集上取得了 51.0的 mAP, 当下最强. -
EfficientDet更重要的贡献是将EfficientNet复合缩放的思路进行延伸, 把架构决策明确化为可扩展的框架, 并且为不同的应用场景提供了 D0 到 D7 七种模型大小, 实现了速度和精度之间的均衡, 使用者无需复杂调参, 便能轻松应用于对象检测中的其他用例.
Introduction
-
近年来,在更精确的目标检测方面取得了巨大的进展;与此同时,最先进的物体探测器也变得越来越昂贵。例如,最新的基于amoebanet的NASFPN探测器需要167M的参数和3045BFLOPs(比retinanet多30倍)来实现最先进的精度。庞大的模型尺寸和昂贵的计算成本阻碍了它们在机器人和自动驾驶汽车等模型尺寸和延迟受到高度限制的实际应用中的部署。考虑到这些现实世界的资源约束,模型效率对于对象检测变得越来越重要。 -
之前已经有很多研究致力于开发更高效的检测器架构,如单级[SSD,Yolo9000,Yolov3,Focal loss for dense object detection]和无锚检测器[Cornernet,Objects as points,Fcos],或压缩现有模型[Rethinking the value of network pruning,Yolo-lite: a real-time object detection algorithm optimized for non-gpu computers]。虽然这些方法往往能获得更好的效率,但它们通常会牺牲准确性。此外,以前的大多数工作只关注特定的或一小部分资源需求,但现实世界中的各种应用程序(从移动设备到数据中心)通常需要不同的资源约束。 -
一个很自然的问题是:是否有可能在广泛的资源限制范围内(例如,从3B到300B的FLOPs)构建一个可伸缩的检测体系结构,同时具有更高的准确性和更高的效率?本文旨在通过系统地研究各种探测器结构的设计选择来解决这一问题。基于单级检测器范式,本文研究了主干网、特征融合和类/盒网络的设计选择,并确定了两个主要挑战:
-
挑战1:高效的多尺度特征融合——自[Feature pyramid networks for object detection]引入FPN以来,FPN已被广泛用于多尺度特征融合。近年来,PANet[Path aggregation network for instance segmentation]、NAS-FPN等研究发展了更多跨尺度特征融合的网络结构。以往的工作在融合不同输入特征的同时,大多是简单的总结,没有区别;然而,由于这些不同的输入特征具有不同的分辨率,本文观察到它们对融合输出特征的贡献通常是不均匀的。为了解决这一问题,提出了一种简单而高效的加权双向特征金字塔网络(BiFPN),该网络引入可学习的权值来学习不同输入特征的重要性,同时反复应用自顶向下和自底向上的多尺度特征融合。 -
挑战2:模型缩放——虽然以前的工作主要依靠更大的骨干网络[Focal loss for dense object detection,Faster r-cnn,Yolov3,Nas-fpn]或更大的输入图像尺寸[Mask r-cnn,Learning data augmentation strategies for object detection]来获得更高的精度,但本文观察到,在兼顾精度和效率时,对特征网络和框/类预测网络进行缩放也是至关重要的。受近期作品[Efficientnet]的启发,提出了一种目标检测器的复合缩放方法,该方法联合缩放所有主干、特征网络、框/类预测网络的分辨率/深度/宽度。 -
最后,本文还观察到最近引入的effentnets实现了比以前常用的骨干更好的效率。将effecentnet骨干网与本文提出的BiFPN和复合scaling相结合,本文开发了一个新的对象检测器家族,称为effentdet,它始终达到更好的精度,参数和FLOPs比以前的对象检测器要少得多。 -
下图显示了在COCO数据集上的性能比较。在类似的精度约束下,本文的EfficientDet使用的FLOPs次数比YOLOv3少28倍,比retinanet少30倍,比最近基于ResNet的NAS-FPN少19倍。特别是,在单模型和单测试时间尺度下,本文的EfficientDet-D7实现了最先进的55.1 AP,具有77M参数和410B FLOPs,比以前最好的检测器性能好4个AP,同时更小2.7倍,使用更少的7.4倍FLOPs。本文的effentdet在GPU/CPU上的速度也比以前的检测器快4到11倍。
-
通过简单的修改,本文还证明了本文的单模型单尺度的EfficientDet在Pascal VOC 2012语义分割中使用18B FLOPs实现了81.74%的mIOU准确率,在减少9.8倍FLOPs的情况下比DeepLabV3+的准确率高出1.7%。 -
EfficientNet的结构来源于神经体系结构搜索, 在给定一定数量的FLOPS的情况下, 神经体系结构搜索针对准确性进行了优化, 最终创建了EfficientNet的Baseline ConvNet B0 . 通过缩放搜索, 可以将EfficientNet-B0缩放到EfficientNet-B1-7.
Related Work
BiFPN
- 首先阐述了多尺度特征融合问题,然后介绍了本文提出的BiFPN的主要思想:高效的双向跨尺度连接和加权特征融合。
- BiFPN是EfficientDet的核心, 全称是"bidirectional feature network ", 也就是加权双向特征网络, 可轻松快速地进行多尺度特征融合.
Problem Formulation
-
https://zhuanlan.zhihu.com/p/208974735
-
在此之前人们普遍通过图像金字塔(featurized Image Pyramids)来构建不同尺度的特征金字塔, 从而解决不同场景图像中对象尺度差异很大的问题.传统的特征化图像金字塔的比例是不变的, 此属性使模型可以通过在位置和金字塔等级上扫描模型来检测大范围的对象, 即对象的比例更改可以通过在金字塔中移动其级别来抵消.
-
-
尽管此方法效果很好, 但在计算方面却非常昂贵, 不仅推理时间会大幅增加, 而且内存的占用也是巨大的, 往往只能在测试时使用, 但是网络只是针对某一特点的分辨率进行训练, 如果只是在测试和推理阶段使用图像金字塔的话, 可能导致训练和测试推理过程不匹配, 因此用图像金字塔的方式是无法训练端对端的网络模型的. -
随后人们开始使用CNN提取不同层在不同级别和比例下的特征图, 获取特征金字塔信息, 如Faster R-CNN中的RPN层就是利用单个高层特征图进行物体的分类和bounding box的回归(single feature map), SSD从网络高层开始构建特征金字塔(pyramidal fearure hierarchy). -
-
尽管在SSD中我们已经使用了特征金字塔, 但该金字塔中的所有要素都处于不同的比例, 并且由于网络中层的深度不同而存在巨大的语义鸿沟. 高分辨率地图具有低级语义特征, 而低分辨率地图具有较高的语义特征, 这会损害其对象识别的表示能力. 那如何才能同时使用这两种特征, 从而在不同规模下进行快速可靠的检测?为了解决这一问题, 何恺明在2017年推出了更快更准的Feature Pyramid Networks. -
-
FPN通过横向连接将自下而上的路径与自上而下的路径进行组合来实现高低层级特征的融合. 即首先对高阶特征进行上采样, 然后使用横向连接将其与低阶特征进行组合, 该横向连接基本上是1x1卷积, 然后进行求和, 然后在各个级别独立进行预测. -
谷歌大脑也提出了一种类似的神经架构搜索方法 NAS-FPN. 谷歌大脑借助神经架构搜索的优势, 使用增强学习选择最佳的交叉连接方式, 学习更好的目标检测特征金字塔网络架构 . NAS-FPN具有很高的准确率和延迟权衡. 但是问题在于这两种方式都难以解释或修改, 并且计算成本高, 对于NAS-FPN这种方式, 往往需要1000个小时的GPU / TPU小时才能确定最佳连接, 只有谷歌等少数计算资源很丰富的实验室才能做到. -
FPN在实际应用中会面临高层级特征和较低层级特征之间的路径长的问题. 如在大型Backbone 如Resnet-152中, FPN低层信息经过多层网络到高层的时候, 由于路径过长导致部分低层级特征丢失, 然而低层级的特征对于大型实例的识别其实是很有用的. 我们需要一个能缩短低层级信息到高层级通过路径的方法.
-
-
PANet(Path Aggregation Network)为我们提供了解决这一问题的方式. PANet路径聚合网络首先被用在实例分割中, 随后YOLO V4也使用了PANET作为特征网络, 该网络添加自下而上的路径以增强FPN中的自上而下的路径, 缩短了低层级信息传输到高层级的路径, 并使用自适应功能池来捕获所有级别的信息, 将高层级丰富的语义特征与位于较低层的高分辨率特征图中的准确定位信息相结合. 除此之外,它使用上采样层与原始Backbone中的特征图横向连接, 以产生语义丰富的特征, 保留空间信息. -
根据研究表明, PANET实际上在准确性上强于NAS-NET, 因此在应用领域, 更多人使用PANET, 但是PANET也有个问题, 它的计算成本也有点高, 为了实现优化的交叉链接, Efficient的作者对原始的PANET做了修改. -
-
多尺度特征融合是将不同分辨率的特征进行聚合。形式上,给定一列多尺度特征
P
i
n
=
(
P
l
1
i
n
,
P
l
2
i
n
,
…
)
{P}^{in} = (P^{in}_{l1}, P^{in}_{l2},…)
Pin=(Pl1in?,Pl2in?,…),其中P inli表示li层的特征,本文的目标是找到一个变换f,它可以有效地聚合不同的特征并输出一列新特征:~P out = f(~P in)。作为一个具体的例子,下图(a)展示了传统的自上而下的FPN。
-
它需要3-7级输入特性~P in = (P in3,…P in7),其中P ini表示特征层,分辨率为输入图像的1/2i。例如,如果输入分辨率是640x640,那么P in3代表分辨率为80x80的特征级别3(640/23 = 80),而P in7代表分辨率为5x5的特征级别7。传统的FPN以自顶向下的方式聚集多尺度特征:
-
P
7
o
u
t
=
C
o
n
v
(
P
7
i
n
)
P
6
o
u
t
=
C
o
n
v
(
P
6
i
n
+
R
e
s
i
z
e
(
P
7
o
u
t
)
)
.
.
.
P
3
o
u
t
=
C
o
n
v
(
P
3
i
n
+
R
e
s
i
z
e
(
P
4
o
u
t
)
)
P_7^{out}=Conv(P_7^{in})\\ P_6^{out}=Conv(P_6^{in}+Resize(P_7^{out}))\\ ...\\ P_3^{out}=Conv(P_3^{in}+Resize(P_4^{out}))
P7out?=Conv(P7in?)P6out?=Conv(P6in?+Resize(P7out?))...P3out?=Conv(P3in?+Resize(P4out?)) -
其中Resize通常是用于分辨率匹配的上采样或下采样操作,Conv通常是用于特征处理的卷积操作。
Cross-Scale Connections
-
传统的自顶向下FPN在本质上受到单向信息流的限制。为了解决这个问题,PANet额外增加了一个自底向上的路径聚合网络,如下图(b)所示。[Deep feature pyramid reconfiguration for object detection,Parallel feature pyramid network for object detection, M2det: A single-shot object detector based on multi-level feature pyramid network]进一步研究了跨尺度连接。
-
近年来,NAS-FPN利用神经体系结构搜索来搜索更好的跨尺度特征网络拓扑,但在搜索过程中需要数千个GPU小时,并且发现的网络是不规则的,难以解释和修改,如下图?所示。
-
通过研究这三种网络的性能和效率(下表),发现PANet比FPN和NAS-FPN具有更好的精度,但需要更多的参数和计算成本。
-
为了提高模型的效率,本文提出了几种跨尺度连接的优化方法:首先,去除只有一个输入边的节点;本文的直觉很简单:如果一个节点只有一条没有特征融合的输入边,那么它对融合不同特征的特征网络的贡献就会更小。这就形成了一个简化的双向网络;其次,在相同级别的输入输出节点上增加一条额外的边,在不增加成本的情况下融合更多的特征;第三,与PANet只有一个自上而下和一个自下而上的路径不同,本文将每个双向(自上而下和自下而上)路径作为一个特征网络层,并多次重复同一层,以实现更高层的特征融合。 -
后文将讨论如何使用复合缩放方法确定不同资源约束的层数。通过这些优化,本文将新的特征网络命名为双向特征金字塔网络(BiFPN),如下图所示。
-
-
EfficientDet architecture -
EfficientDet由 EfficientNet Backbone, BiFPN layer, Class 和 Box prediction net 四部分组成.EfficientDet和SSD, RetinaNet一样都属于single-shot detectors. 主干网中的3-7级{P3, P4, P5, P6, P7}特征会传递给特征网络, 并反复应用BiFPN(自上而下&自下而上)的双向特征融合. 这些融合的特征被馈送到类预测和边界框预测网络, 以分别生成对象类和边界框位置. 类和边界框网络权重在所有级别的功能之间共享. -
采用effentnet作为骨干网络,BiFPN作为特征网络,共享类/盒预测网络。根据不同的资源约束条件,对BiFPN层和类/箱网层进行多次重复,如下表所示。 -
-
Scaling configs for EfficientDet D0-D6 -
φ是控制所有其他尺度的复合系数;根据公式1、2、3分别对BiFPN、box/class net和输入规模进行了放大。
Weighted Feature Fusion
-
当融合不同分辨率的特征时,通常的方法是首先将它们调整到相同的分辨率,然后将它们相加。金字塔注意网络引入全局自注意上采样来恢复像素定位,[Nas-fpn]对此做了进一步的研究。以前的所有方法对所有输入特性一视同仁。 -
然而,本文观察到,由于不同的输入特征具有不同的分辨率,它们对输出特征的贡献通常是不平等的。为了解决这个问题,本文建议为每个输入添加额外的权重,并让网络学习每个输入特征的重要性。基于此思想,本文考虑三种加权融合方法: -
Unbounded fusion:
-
O
=
∑
i
w
i
?
I
i
O=\sum_iw_i·I_i
O=∑i?wi??Ii?,其中wi是一个可学习的权重变量,可以是标量(每个特征)、向量(每个通道)或多维张量(每个像素)。本文发现一种标尺能够以最小的计算成本达到与其他方法相当的精度。然而,由于标量权重是无界的,它可能会导致训练不稳定。因此,本文采用权值归一化的方法来限定各个权值的取值范围。
- w?是可学习的权重, 可以是特征标量也可以是通道矢量, 亦或是像素的多维张量. 但是由于这些权重是无界的, 因此可能导致训练不稳定.
-
Softmax-based fusion:
-
O
=
∑
i
w
i
∑
j
e
w
j
?
I
i
O=\sum_i\frac{w_i}{\sum_je^{w_j}}·I_i
O=∑i?∑j?ewj?wi???Ii?,直观的想法是对每个权重应用softmax,这样所有权重都被标准化为一个概率,其值范围从0到1,代表每个输入的重要性。然而,正如本文在后文的消融研究中所示,额外的softmax会导致GPU硬件的显著减速。为了最小化额外的延迟成本,本文进一步提出了一种快速融合方法。
- 在分类网络中我们了解到, 如果希望权重值在0-1的有界范围内, 最好的办法之一就是通过Softmax将这些值转换为概率分布, 其中的概率值代表权重的重要性. 但是Softmax的计算成本是高昂的, 那有没有更好的方式呢?
-
Fast normalized fusion:
-
O
=
∑
i
w
i
η
+
∑
j
e
w
j
?
I
i
O=\sum_i\frac{w_i}{\eta+\sum_je^{w_j}}·I_i
O=∑i?η+∑j?ewj?wi???Ii?,wi≥0是通过在每个wi之后应用Relu来确保的,并且
η
\eta
η= 0.0001是一个较小的值,以避免数值不稳定。类似地,每个归一化权重的值也落在0到1之间,但由于这里没有softmax操作,因此效率更高。本文的消融研究表明,这种快速融合方法具有与基于softmax的融合非常相似的学习行为和准确性,但在gpu上运行速度高达30%(下表)。 -
-
Relu是我们常用的激活函数, Relu的输出永远≥ 0, 再通过简单的正则化我们就可以将输出权重值控制在在0-1范围内. 这种方式相对前两种方式, 更加简单和高效, 因此EfficientDet中使用快速归一化融合特征网络. -
本文最终的BiFPN融合了双向跨尺度连接和快速归一化融合。作为一个具体的例子,这里本文描述了如下图(d)所示的BiFPN在第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
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_6^{td}=Conv(\frac{w_1·P_6^{in}+w_2·Resize(P_7^{in})}{w_1+w_2+\eta})\\ P_6^{out}=Conv(\frac{w_1'·P_6^{in}+w_2'·P_6^{td}+w_3'·Resize(P_5^{out})}{w_1'+w_2'+w_3'+\eta})
P6td?=Conv(w1?+w2?+ηw1??P6in?+w2??Resize(P7in?)?)P6out?=Conv(w1′?+w2′?+w3′?+ηw1′??P6in?+w2′??P6td?+w3′??Resize(P5out?)?) -
其中P td6是自顶向下路径第6级的中间特征,P out6是自底向上路径第6级的输出特征。所有其他特性都以类似的方式构建。值得注意的是,为了进一步提高效率,本文使用深度可分离卷积进行特征融合,并在每次卷积后加入批量归一化和激活。
EfficientDet
- 基于本文的BiFPN,本文开发了一个新的检测模型家族,称为effentdet。在本节中,本文将讨论网络架构和effentdet的一种新的复合缩放方法。
EfficientDet Architecture
- 上文图显示了effentdet的整体架构,它在很大程度上遵循单级检测器范式[SSD,Yolo9000,Feature pyramid networks for object detection,Focal loss for dense object detection]。本文采用imagenet预训练的effentnets作为骨干网。本文提出的BiFPN作为特征网络,从骨干网中提取3-7级特征{P3, P4, P5, P6, P7},反复应用自顶向下和自底向上的双向特征融合。将融合后的特征分别输入到类和框网络中,分别产生目标类和包围框预测。与[Focal loss for dense object detection]类似,类和框网络权重在所有级别的特性中共享。
Compound Scaling
-
为了优化精度和效率,本文希望开发一系列能够满足广泛资源约束的模型。这里的一个关键挑战是如何扩展基线的effentdet模型。 -
以前的工作主要是通过使用更大的骨干网(如ResNeXt或AmoebaNet),使用更大的输入图像,或堆叠更多的FPN层来扩大基线检测器。这些方法通常是无效的,因为它们只关注单个或有限的缩放维度。最近的工作[39]通过联合缩放网络宽度、深度和输入分辨率的所有维度,在图像分类方面表现出了显著的性能。受这些作品的启发[10,39],我们提出了一种新的目标检测复合缩放方法,该方法使用一个简单的复合系数φ来联合缩放骨干、BiFPN、类/盒网络和分辨率的所有维度。 -
与[Efficientnet]不同的是,目标探测器比图像分类模型具有更多的缩放维度,因此对所有维度进行网格搜索是非常昂贵的。因此,本文使用一种基于启发式的缩放方法,但仍然遵循联合缩放所有维度的主要思想。 -
Backbone network
- 本文重用effecentnet - b0到B6的相同宽度/深度缩放系数,这样本文就可以轻松地重用他们的imagenet预训练检查点。
-
BiFPN network
-
本文线性增加了BiFPN深度Dbif pn (#layers),因为深度需要四舍五入到小整数。对于BiFPN宽度Wbif pn (#channels),按照类似[efficientnet]的方式指数增长BiFPN宽度Wbif pn (#channels)。具体来说,本文对一个值列表{1.2,1.25,1.3,1.35,1.4,1.45}执行网格搜索,并选择最佳值1.35作为BiFPN宽度缩放因子。形式上,用以下公式对BiFPN宽度和深度进行缩放: -
W
b
i
f
p
n
=
64
?
(
1.3
5
Φ
)
,
D
b
i
f
p
n
=
3
+
Φ
,
(
1
)
W_{bifpn}=64·(1.35^{\Phi}),D_{bifpn}=3+\Phi,(1)
Wbifpn?=64?(1.35Φ),Dbifpn?=3+Φ,(1) -
Box/class prediction network
-
本文·固定它们的宽度始终与BiFPN相同(即,Wpred = Wbif pn),但使用公式线性增加深度(#layers): -
D
b
o
x
=
D
c
l
a
s
s
=
3
+
f
l
o
o
r
(
?
/
3
)
,
(
2
)
D_{box}=D_{class}=3+floor(\phi/3),(2)
Dbox?=Dclass?=3+floor(?/3),(2) -
Input image resolution
-
由于在BiFPN中使用了特征级别3-7,因此输入分辨率必须能被
2
7
=
128
2^7 = 128
27=128除尽,所以本文用方程线性增加分辨率: -
R
i
n
p
u
t
=
512
+
Φ
?
128
,
(
3
)
R_{input}=512+\Phi·128,(3)
Rinput?=512+Φ?128,(3) -
根据不同φ的公式1、2、3,本文得到了effentdet - d0 (φ = 0)到D7 (φ = 7),如上文表所示,其中D7和D7x具有相同的BiFPN和头部,但D7使用更高的分辨率,D7x使用更大的骨干网络和一个更多的特征级别(从P3到P8)。值得注意的是,本文的复合缩放是基于启发式的,可能不是最优的,但本文将展示这种简单的缩放方法比下图中的其他单维缩放方法可以显著提高效率。 -
-
通过对不同标度方法的比较,复合标度法具有更好的精度和效率。
Experiments
EfficientDet for Object Detection
-
本文使用118K训练图像在COCO 2017检测数据集上评估effecentdet。每个模型使用SGD优化器进行训练,动量为0.9,权重衰减为4e-5。学习率在第一个训练周期内从0线性增加到0.16,然后使用余弦衰减规则进行退火。每次卷积后加入同步的批范数,批范数衰减0.99和epsilon 1e-3。与[efficientnet]相同,本文使用SiLU (Swish-1)激活[8,15,31]和衰减0.9998的指数移动平均。 -
本文还采用了常用的focal loss,α = 0.25, γ = 1.5,长径比{1/2,1,2}。在训练过程中,本文应用水平翻转和缩放抖动[0.1,2.0],它在裁剪前在原始大小的0.1倍到2.0倍之间随机缩放图像。 -
本文使用soft-NMS进行eval。对于D0-D6,每个模型在32个TPUv3核上训练了300个epoch,总批大小为128,但为了突破极限,在128个TPUv3核上训练了600个epoch的D7/D7x。 -
下表比较了在不增加测试时间的单模型单尺度设置下,effentdet与其他对象检测器。本文报告了测试开发(20K测试图像,没有公共ground-truth)和val与5K验证图像的准确性。
-
值得注意的是,模型性能取决于网络架构和训练设置(见附录),但为了简单起见,本文只使用训练器再现了retinanet,并参考了他们论文中的其他模型。总的来说,本文的effentdet比以前的检测器实现了更好的效率,在广泛的精度范围或资源约束下,它比以前的检测器小4倍- 9倍,使用13x - 42x少的FLOPs次数。 -
在相对低精度的情况下,本文的EfficientDet-D0以少28倍的FLOPs次数达到了与YOLOv3相似的精度。与RetinaNet和Mask-RCNN相比,我们的EfficientDet以少8倍的参数和少21倍的失败次数达到了类似的精度。在高精度方面,本文的effentdet也始终优于最近的目标检测器[Nas-fpn,Learning data augmentation strategies for object detection],参数和故障更少。 -
特别是,本文的单模型单尺度的EfficientDet-D7x在测试开发上实现了新的最先进的55.1 AP,在准确性(+4 AP)和效率(FLOPs次数减少7倍)方面都大大优于现有技术。 -
此外,本文还比较了Titan-V FP32、V100 GPU FP16和单线程CPU上的推断延迟。值得注意的是,本文的V100延迟是端到端的,包括预处理和NMS后处理。下图展示了模型大小和GPU/CPU延迟的比较。
-
为了公平比较,这些数字只包括在同一台机器上使用相同设置测量的结果。与之前的检测器相比,EfficientDet模型在GPU上快了4.1倍,在CPU上快了10.8倍,这表明它们在现实世界的硬件上也很高效。
EfficientDet for Semantic Segmentation
-
虽然本文的effentdet模型主要是为对象检测设计的,但本文也对它们在其他任务(如语义分割)上的表现感兴趣。在[Panoptic feature pyramid networks]之后,本文修改effentdet模型以保持特性级别{p2, p3,…,但只使用p2进行最终的逐像素分类。 -
为了简单起见,这里只评估一个基于effentdet - d4的模型,该模型使用一个ImageNet预训练的effentnet - b4骨干(大小与ResNet-50相似)。将BiFPN的通道大小设置为128,分类头设置为256。BiFPN和分类头均重复3次。 -
下表显示了本文的模型与之前在Pascal VOC 2012上的DeepLabV3+之间的比较。值得注意的是,本文排除了集成、测试时间增强或COCO预训练的结果。在相同的单模型单尺度设置下,本文的模型比现有技术DeepLabV3+的FLOPs减少9.8倍,实现了1.7%的更高精度。这些结果表明,effentdet在语义分割方面也很有前景。
-
-
Pascal VOC语义分割的性能比较。
Ablation Study
- 在本节中,本文将介绍所提出的effentdet的各种设计选择。为了简单起见,这里所有的准确性结果都是COCO验证集的结果。
Disentangling Backbone and BiFPN
-
由于effentdet同时使用强大的主干和新的BiFPN,本文想要了解它们各自对准确性和效率的提高有多大贡献。下表比较了使用RetinaNet训练设置的backbone和BiFPN的影响。
-
从带有ResNet-50骨干网和自顶向下FPN的RetinaNet检测器开始,首先用effecentnetb3替换骨干网,它在参数和FLOPs略少的情况下提高了大约3个AP的准确性。通过进一步用提出的BiFPN取代FPN,以更少的参数和FLOPs获得额外的4个AP增益。这些结果表明,effecentnet骨干和BiFPN都是本文最终模型的关键。
BiFPN Cross-Scale Connections
-
下表显示了不同跨尺度连接的特征网络的精度和模型复杂度。
-
值得注意的是,原来的FPN和PANet只有一个自上而下或自下而上的流,但为了公平比较,这里将每个流重复多次,并将所有的convs替换为深度可分的convs,这与BiFPN相同。本文使用相同的骨干和类/框预测网络,并对所有实验使用相同的训练设置。 -
可以看到,传统的自顶向下FPN在本质上受到单向信息流的限制,因此精度最低。虽然重复FPN+PANet的精度略好于NASFPN,但它需要更多的参数和FLOPs。本文的BiFPN达到了与重复FPN+PANet相似的精度,但使用的参数和FLOPs次数要少得多。通过附加加权特征融合,本文的BiFPN进一步实现了以更少的参数和FLOPs获得最佳精度。
Softmax vs Fast Normalized Fusion
-
正如在前文中讨论的,提出了一种快速归一化特征融合方法,以利用昂贵的softmax,同时保留归一化权值的优点。下表比较了三种不同模型尺寸探测器上的softmax和快速归一化融合方法。
-
结果显示,本文的快速标准化融合方法获得了与基于softmax的融合相似的精度,但在gpu上运行速度要快1.26x - 1.31x。 -
为了进一步理解基于softmaxbased和快速归一化融合的行为,下图展示了从effecentdet - d3中BiFPN层中随机选取的三个特征融合节点的学习权重。
-
值得注意的是,归一化权重(例如,ewi/ P j ewj用于基于softmax的融合,和wi/(?+ pjwj)用于快速归一化融合)所有输入的和总是为1。有趣的是,在训练过程中,归一化权重变化很快,这表明不同的特征对特征融合的贡献是不平等的。 -
尽管变化很快,但对于所有三个节点,本文的快速标准化融合方法总是显示出与基于softmax的融合非常相似的学习行为。
Compound Scaling
Conclusion
- 本文系统地研究了面向高效目标检测的网络结构选择,提出了加权双向特征网络和自定义复合尺度方法,以提高检测精度和效率。基于这些优化,本文开发了一个新的探测器系列,名为effentdet,在广泛的资源约束范围内,它始终达到比现有技术更好的准确性和效率。尤其值得一提的是,与之前的对象检测和语义分割模型相比,本文缩放后的effentdet实现了最先进的精度,参数和FLOPs次数更少。
Appendix
Hyperparameters
Image Resolutions
|