EfficientDet论文阅读解析【精】公式纯手打
小白解读论文
论文 EfficientDet: Scalable and Efficient Object Detection
查看代码,这是官方版本,当然民间有许多pytorch版本,请大家自己选择。
1、引言
近年来,在更精确的物体检测方面取得了巨大的进步。 同时,最新的物体检测器也变得越来越昂贵。 例如,最新的基于AmoebaNet的NASFPN检测器[45]需要167M参数和3045B FLOP(比RetinaNet [24]多30倍)才能达到最新的精度。 巨大的模型尺寸和昂贵的计算成本阻碍了它们在许多实际应用中的部署,例如机器人技术和无人驾驶汽车,在这些应用中,模型尺寸和延迟受到很大限制。 考虑到这些实际资源的限制,模型效率对于对象检测变得越来越重要。
以前有许多旨在开发更有效的检测器架构的工作,例如一阶段和不要框的检测器或者压缩现有模型,尽管这些方法往往会达到更高的效率,但它们通常会牺牲准确性。 此外,大多数以前的工作仅关注特定或较小范围的资源需求,但是从移动设备到数据中心的各种实际应用程序通常需要不同的资源约束。
一个自然的问题是:是否有可能在广泛的资源限制(例如从3B到300B FLOP)中构建具有更高准确性和更高效率的可扩展检测架构? 本文旨在通过系统地研究探测器架构的各种设计选择来解决这个问题。 基于单级检测器范例,我们检查了主干,特征融合和类/盒网络的设计选择,并确定了两个主要挑战:
挑战1: 有效的多尺度特征融合-自[23]中提出以来,FPN已被广泛用于多尺度特征融合,最近,PANet [26],NAS-FPN [10]和其他研究[20、18、42]已经开发出更多的用于跨尺度特征融合的网络结构。 在融合不同的输入功能时,大多数以前的作品只是对它们进行了总结而没有区别。 但是,由于这些不同的输入特征的分辨率不同,因此我们观察到它们通常对融合输出特征的贡献不均。 为解决此问题,我们提出了一个简单而高效的加权双向特征金字塔网络(BiFPN),该网络引入了可学习的权重以了解不同输入特征的重要性,同时反复应用自上而下和自下而上的多尺度特征融合。
挑战2: 模型缩放 -虽然先前的工作主要依赖于较大的主干网络[24、35、34、10]或较大的输入图像大小[13、45],以实现更高的准确性,但我们发现按比例放大特征网络和框/类预测,同时考虑准确性和效率时,网络也至关重要。 受近期工作的启发[39],我们提出了一种用于对象检测器的复合缩放方法,该方法可联合缩放所有骨干网,特征网络,盒子/类预测网络的分辨率/深度/宽度。
最后,我们还观察到,最近引入的EfficientNets [39]比以前的常用骨干网具有更高的效率。 通过将EfficientNet主干网与我们建议的BiFPN和复合缩放相结合,我们开发了一个名为EfficientDet的新对象检测器系列,与以前的对象检测器相比,它始终以更少的参数和FLOP达到更高的精度。 图1和图4显示了COCO数据集的性能比较[25]。 在类似的精度约束下,我们的EfficientDet使用的FLOP比YOLOv3 [34]少28倍,比RetinaNet [24]少30倍,而最近的基于ResNet的NAS-FPN [10]少19倍。 特别是,通过单模型和单一测试时间尺度,我们的EfficientDet-D7可实现具有77M参数和410B FLOP的最新55.1 AP,比之前的最佳检测器[45]高4 AP,而尺寸则小2.7倍 并减少了7.4倍的FLOP。 我们的EfficientDet在GPU / CPU上的速度也比以前的检测器快4到11倍。
通过简单的修改,我们还证明了我们的单模型单尺度EfficientDet在Pascal VOC 2012语义分段上具有18B FLOP时可达到81.74%mIOU精度,比DeepLabV3 + [6]高出1.7%,而FLOP则少9.8倍。
2、相关工作
一阶段检测器: 现有的对象检测器主要根据它们是否具有感兴趣区域建议步骤(两阶段[11、35、5、13])(一阶段[36、27、33、24])进行分类。 尽管两阶段检测器趋向于更灵活,更准确,但通过利用预定义的锚点,通常认为一级检测器更简单,更高效[17]。近期,一阶段检测器由于其效率和简单性,它们已经引起了广泛的关注[21、42、44]。 在本文中,我们主要遵循一级检测器设计,并且我们展示了通过优化的网络架构可以让检测器同时拥有更高的效率和更高的精度。
多尺度特征表示: 目标检测的主要困难之一是有效地表示和处理多尺度特征。较早的检测器通常基于从骨干网络提取的金字塔特征层直接进行预测。作为开拓性的作品之一,特征金字塔网络(FPN)[23]提出了一种自上而下的途径来组合多尺度特征。 按照这个想法,PANet [26]在FPN的基础上增加了一个额外的自下而上的路径聚合网络。 STDL [43]提出了一个尺度转移模块来利用跨尺度特征。 M2det [42]提出了一个U形模块来融合多尺度特征,而G-FRNet [2]提出了用于控制信息跨特征流动的门单元。 最近,NAS-FPN [10]利用神经网络架构搜索来自动设计特征网络拓扑。 尽管NAS-FPN具有更好的性能,但在搜索过程中需要数千个GPU小时,并且由此产生的特征网络不规则,因此难以解释。 本文旨在以一种更直观,更原则的方式来优化多尺度特征融合策略。
模型缩放: 为了获得更好的精度,通常通过采用更大的骨干网络来扩大基线检测器的规模(例如,从移动大小模型[38,16]和ResNet [14],到ResNeXt [41]和AmoebaNet [32] ),或增加输入图像尺寸(例如,从512x512 [24]到1536x1536 [45])。 最近的一些工作[10,45]表明,增加通道大小和重复特征网络也可以提高准确性。 这些缩放方法主要集中在单个或有限的缩放维度上。 最近,EfficientNet通过联合扩大网络的宽度,深度和分辨率,证明了图像分类的显著模型效率。 我们提出的用于对象检测的复合缩放方法主要是受到EfficientNet启发。
3、BiFPN
在本节中,文章首先提出多尺度特征融合问题,然后介绍他们提出的BiFPN的主要思想:有效的双向跨尺度连接和加权特征融合。
3.1、问题描述
多尺度特征融合旨在聚合不同分辨率的特征。通常,给定一个多尺度特征列表P〜in =(Plin 1; Plin 2;),其中Plin i代表级别li的特征,我们的目标是找到可以有效聚合不同特征的变换f,并输出新特征列表:P〜out = f(P〜in)。作为一个具体的例子,下图展示了一个传统的自顶向下的FPN,它采用3-7级输入特征P〜in =(P3in; ::: P7in),其中P in i代表输入图像分辨率为1 = 2i的特征水平。 例如,如果输入分辨率为640x640,则P in 3表示分辨率为80x80的功能级别3(640 = 23 = 80),而P7in则表示分辨率为5x5的功能级别7。 常规FPN以自顶向下的方式聚合多尺度特征:
其中Resize通常是用于分辨率匹配的上采样或下采样操作,而Conv通常是用于特征处理的卷积操作。
3.2、跨尺度连接
传统的自上而下的FPN固有地受到单向信息流的限制。为了解决这个问题,PANet添加了一个额外的自下而上的路径聚合网络,如上图(b)所示。在[20,18,42]中进一步研究了跨尺度连接。 最近,NAS-FPN [10]使用神经网络架构搜索来搜索更好的跨尺度特征网络拓扑,但是在搜索过程中需要数千个GPU小时,并且发现的网络是不规则的并且难以解释或修改,如图2(C)所示。通过研究这三个网络的性能和效率(表5),我们观察到PANet的精度比FPN和NAS-FPN更好,但是需要更多的参数和计算。为了提升模型效率,本文针对跨尺度连接提出了几种优化方法:
-
首先,我们删除那些只有一个输入边的节点。
我们的直觉很简单:如果一个节点只有一个输入边且没有特征融合,那么它将对旨在融合不同特征的特征网络贡献较小。这将导致简化的双向网络。 - 第二,如果原始输入与输出节点处于同一级别,我们将在原始输入和输出节点之间增加一条额外的边,以便在不增加成本的情况下融合更多功能;
-
第三,与PANet [26]仅具有一个自上而下和一个自下而上的路径不同,我们将每个双向(自上而下和自下而上)路径视为一个要素网络层,并重复相同的层多次以启用更多高级功能融合。
第4.2节将讨论如何使用复合缩放方法确定不同资源约束的层数。 通过这些优化,我们将新要素网络命名为双向要素金字塔网络(BiFPN),如图2和3所示。
3.3、加权特征融合
当融合具有不同分辨率的要素时,一种常见的方法是先将它们的大小调整为相同的分辨率,然后再对其求和。 金字塔注意力网络[22]引入了全局自注意力上采样以恢复像素定位,这在[10]中有进一步的研究。 所有先前的方法均等地对待所有输入特征,没有区别。
但是,我们观察到,由于不同的输入要素的分辨率不同,因此它们通常对输出要素的贡献不均。 为了解决这个问题,我们建议为每个输入增加一个额外的权重,并让网络学习每个输入功能的重要性。 基于此思想,我们考虑了三种加权融合方法:
- 无限制融合:,其中表示一个可学习的权重,可以是标量(每个特征),矢量(每个通道)或多维张量(每个像素)。我们发现量表可以以最小的计算成本达到与其他方法相当的精度。 但是,由于标量权重是无限的,因此可能会导致训练不稳定。 因此,我们采用权重归一化来限制每个权重的值范围。
- 基于Softmax的融合:,一个直观的想法是将softmax应用于每个权重,以便将所有权重归一化为一个概率范围,值的范围从0到1,代表每个输入的重要性。 但是,如我们在第6.3节中的消融研究所示,额外的softmax会导致GPU硬件显着减慢。 为了最小化额外的等待时间成本,我们进一步提出了一种快速融合方法。
- 快速归一化融合:,其中wi≥0是通过在每个之后应用Relu来确保的,并且= 0.0001是一个小数值,以避免数值不稳定。同样,每个归一化权重的值也都介于0和1之间,但是由于这里没有softmax运算,因此效率更高。 我们的消融研究表明,这种快速融合方法具有与基于softmax的融合非常相似的学习行为和准确性,但在GPU上的运行速度提高了30%(表6)。
我们最终的BiFPN集成了双向跨尺度连接和快速归一化融合。 作为一个具体示例,在这里我们描述了图2(d)所示的BiFPN在第6层的两个融合特征:
其中,是自顶向下路径上第6级的中间特征,是自下而上路径上第6级的输出特征,所有其他特征均以类似方式构造。 值得注意的是,为了进一步提高效率,我们使用深度可分离卷积[7,37]进行特征融合,并在每次卷积后添加批处理规范化和**。
4、EfficientDet
基于我们的BiFPN,我们开发了一个名为EfficientDet的新检测模型系列。 在本节中,我们将讨论网络架构和EfficientDet的新复合缩放方法。
4.1、EfficientDet结构
图3显示了EfficientDet的总体架构,该架构很大程度上遵循了一级检测器范例[27、33、23、24]。 我们采用ImageNet培训的EfficientNets作为骨干网络。 我们建议的BiFPN用作特征网络,该网络需要3-7级特征fP3; P4; P5; P6; 来自骨干网络的P7g反复应用自上而下和自下而上的双向功能融合。 这些融合的特征被馈送到类和盒网络,以分别生成对象类和边界盒预测。 类似于[24],类和盒网络权重在所有级别的功能之间共享。
4.2、复合缩放
为了优化准确性和效率,我们希望开发一系列可以满足各种资源限制的模型。 这里的主要挑战是如何扩展基准EfficientDet模型。
以前的工作大多通过采用更大的骨干网(例如ResNeXt [41]或AmoebaNet [32]),使用更大的输入图像或堆叠更多的FPN层来扩展基线检测器。 这些方法通常无效,因为它们仅关注单个或有限的缩放维度。 最近的工作[39]通过联合扩大网络宽度,深度和输入分辨率的所有维度,显示了在图像分类上的卓越性能。受这些工作的启发[10,39],我们提出了一种新的用于对象检测的复合缩放方法,该方法使用简单的复合系数来联合缩放主干,BiFPN,类/盒网络和分辨率的所有维度。 与文献[39]不同,对象检测器的缩放比例要比图像分类模型高得多,因此对所有尺寸进行网格搜索的代价是过高的。 因此,我们使用基于启发式的缩放方法,但仍然遵循共同扩大所有维度的主要思想。
- 基准网络: 我们重用了EfficientNet-B0到B6 [39]相同的宽度/深度缩放系数,因此我们可以轻松地重用ImageNet预训练的检查点。
- BiFPN network: 我们将线性增加BiFPN深度Dbifpn(#layers),因为深度需要四舍五入为小整数。 对于BiFPN宽度Wbifpn(#channels),与[39]类似,指数增长BiFPN宽度Wbifpn(#channels)。 具体来说,我们对值f1.2、1.25、1.3、1.35、1.4、1.45g的列表执行网格搜索,并选择最佳值1.35作为BiFPN宽度缩放因子。 正式地,BiFPN的宽度和深度通过以下公式缩放:
(1)
- 分类回归预测网络: 我们将其宽度固定为与BiFPN相同(),但是线性增加他的深度,使用下面的方程:
(2)
- 输入图片分辨率: 由于在BiFPN中使用了功能级别3-7,因此输入分辨率必须可除以27 = 128,因此我们可以使用以下公式线性提高分辨率:
(3)
如表1所示,根据具有不同的方程1,2,3,我们开发了EfficientDet-D0(= 0)至D7(= 7),其中D7和D7x具有相同的BiFPN和头,但D7使用更高的分辨率和D7x使用更大的骨干网和一个以上的功能级别(从P3到P8)。 值得注意的是,我们的复合缩放是基于启发式的,可能不是最佳选择,但是我们将证明,这种简单的缩放方法比图6中的其他一维缩放方法能更显着地提高效率。
实验部分不写了,下面放几张图。
5、结论
在本文中,我们系统地研究了用于有效目标检测的网络体系结构设计选择,并提出了加权双向特征网络和定制的复合缩放方法,以提高准确性和效率。 基于这些优化,我们开发了一个名为EfficientDet的新检测器系列,该检测器在广泛的资源限制范围内始终比现有技术具有更高的准确性和效率。 尤其是,与以前的对象检测和语义分割模型相比,我们扩展后的EfficientDet具有最新的准确性,并且参数和FLOP少得多。