EfficientDet学习笔记EfficientDet: Scalable and Efficient Object DetectionAbstract模型效率在计算机视觉中变得越来越重要。在本文中我们系统地研究了用于目标检测的神经网络体系结构设计选择并提出了几个关键的优化以提高效率。首先提出了一种加权双向特征金字塔网络(BiFPN)实现了简单快速的多尺度特征融合;其次我们提出了一种复合缩放方法对所有骨干网、特征网络和盒/类预测网络的分辨率、深度和宽度进行统一缩放。基于这些优化和更好的主干我们开发了一个新的对象检测器家族称为efficient entdet它在广泛的资源限制范围内始终比现有技术获得更好的效率。特别是在单模型和单比例的情况下我们的EfficientDet-D7在COCO测试开发中实现了最先进的55.1 AP, 77M参数和410B FLOPs1比以前的探测器小4 - 9倍使用的FLOPs少13 - 42倍。代码 at https://github.com/google/automl/tree/master/efficientdet。1. Introduction近年来在更精确的目标检测方面取得了巨大进展;与此同时最先进的物体探测器也变得越来越昂贵。例如最新的基于amoebanet的NASFPN检测器[45]需要167M参数和3045B FLOPs(比retina anet[24]多30倍)才能达到最先进的精度。庞大的模型尺寸和昂贵的计算成本阻碍了它们在许多现实应用中的部署如机器人和自动驾驶汽车在这些应用中模型尺寸和延迟都受到高度限制。考虑到这些现实世界的资源约束模型效率对于目标检测变得越来越重要。以前有许多旨在开发更有效的检测器体系结构的工作例如one-stage[27, 33, 34, 24]和anchor-free detectors[21,44,40]或压缩现有模型[28,29]。尽管这些方法往往能获得更好的效率但它们通常会牺牲准确性。此外以前的大多数工作只关注特定的或小范围的资源需求但是从移动设备到数据中心的各种实际应用程序往往需要不同的资源约束。一个自然的问题是:是否有可能构建一个可伸缩的检测体系结构在广泛的资源约束范围内(例如从3B到300B FLOPs)具有更高的精度和更好的效率?本文旨在通过系统研究各种探测器架构的设计选择来解决这一问题。基于一级检测器范式我们研究了骨干网、特征融合和类/箱网络的设计选择并确定了两个主要挑战:Challenge 1:efficient multi-scale feature fusion——自[23]引入以来FPN已被广泛应用于多尺度特征融合。最近PANet[26]、NAS-FPN[10]等研究[20、18、42]为跨尺度特征融合开发了更多的网络结构。在融合不同输入特征的同时以往的大多数工作都只是简单地进行归纳没有区别;然而由于这些不同的输入特征具有不同的分辨率我们观察到它们通常对融合输出特征的贡献是不相等的。为了解决这一问题我们提出了一种简单而高效的加权双向特征金字塔网络(BiFPN)它引入了可学习的权重来学习不同输入特征的重要性同时反复应用自顶向下和自底向上的多尺度特征融合。Challenge 2:model scaling——尽管之前的工作主要依靠更大的骨干网[24,35,34,10]或更大的输入图像尺寸[13,45]来获得更高的精度但我们观察到在兼顾精度和效率时扩大特征网络和盒/类预测网络也很关键。受最近的研究成果[39]的启发我们提出了一种针对所有骨干网、特征网络、盒/类预测网络的复合缩放方法该方法联合放大了所有骨干网、特征网络、盒/类预测网络的分辨率/深度/宽度。最后我们还观察到最近引入的effecentnets[39]比以前常用的骨干实现了更好的效率。结合高效网骨干与我们提出的BiFPN和复合尺度我们开发了一个新的物体探测器家族名为efficiency entdet与以前的物体探测器相比它以更少的参数和flop实现了更好的精度。图1和图4显示了COCO数据集[25]上的性能比较。在相似的精度约束下我们的efficient entdet使用的flop比YOLOv3[34]少28倍比retina anet[24]少30倍比最近基于ResNet的NAS-FPN[10]少19倍。特别是在单模型和单测试时间尺度下我们的efficiency entdt - d7实现了最先进的55.1 AP, 77M参数和410B flop比之前最好的探测器[45]高出4 AP同时体积小2.7倍flop减少7.4倍。我们的effecentdet在GPU/CPU上的速度也比以前的检测器快4到11倍。通过简单的修改我们还证明了我们的单模型单尺度的efficiency entdet在Pascal VOC 2012语义分割上实现了81.74%的mIOU精度和18B FLOPs比DeepLabV3[6]的精度提高了1.7%FLOPs减少了8.8倍。2. Related WorkOne-Stage Detectors:现有的目标检测器大多根据它们是否有感兴趣区域提议步骤(两阶段[11,35,13])或是否有(单阶段[36,27,33,24])进行分类。虽然两级检测器往往更灵活、更准确但通过利用预定义的锚[17]一级检测器通常被认为更简单、更有效。近年来一级探测器因其高效、简单而受到广泛关注[21,42,44]。在本文中我们主要遵循一级检测器的设计我们表明通过优化网络架构可以实现更好的效率和更高的精度Multi-Scale Feature Representations目标检测的主要难点之一是如何有效地表示和处理多尺度特征。早期的检测器通常直接基于从骨干网提取的金字塔特征层次结构进行预测[4,27,36]。特征金字塔网络(FPN)[23]是一项开创性的工作提出了一种自顶向下的路径来组合多尺度特征。遵循这一思想PANet[26]在FPN之上增加了一个额外的自底向上路径聚合网络;STDL[43]提出了一个尺度传输模块来利用跨尺度特性;M2det[42]采用u型模块融合多尺度特征G-FRNet[2]引入栅极单元控制特征间的信息流。最近NAS-FPN[10]利用神经结构搜索来自动设计特征网络拓扑结构。尽管NAS-FPN实现了更好的性能但在搜索过程中需要数千个GPU小时并且生成的特征网络是不规则的因此很难解释。本文的目标是用一种更加直观和有原则的方法优化多尺度特征融合。Model Scaling:为了获得更好的精度通常可以通过使用更大的骨干网(例如从移动尺寸的模型[38,16]和ResNet[14]到ResNeXt[41]和AmoebaNet[32])或增加输入图像大小(例如从512x512[24]到1536x1536[45])来扩大基线检测器的规模。最近的一些研究[10,45]表明增加信道大小和重复特征网络也可以获得更高的精度。这些缩放方法大多集中在单一或有限的缩放维度上。最近[39]通过联合放大网络宽度、深度和分辨率展示了显著的图像分类模型效率。我们提出的目标检测的复合缩放方法主要是受到[39]的启发。3. BiFPN在本节中我们首先阐述了多尺度特征融合问题然后介绍了我们提出的BiFPN的主要思想:高效的双向跨尺度连接和加权特征融合。3.1. Problem Formulation多尺度特征融合的目的是聚合不同分辨率的特征。形式上给定一个多尺度特征列表P ⃗ i n ( P l 1 i n , P l 2 i n , … ) \vec{P}^{i n}\left(P_{l_{1}}^{i n}, P_{l_{2}}^{i n}, \ldots\right)Pin(Pl1​in​,Pl2​in​,…)其中P l i i n P_{l_{i}}^{i n}Pli​in​表示第l i l_ili​层的特征我们的目标是找到一个变换f它可以有效地聚合不同的特征并输出一个新特征列表:P ⃗ out f ( P ⃗ i n ) \vec{P}^{\text {out }}f\left(\vec{P}^{i n}\right)Poutf(Pin)。举个具体的例子图2(a)显示了传统的自上而下FPN[23]。它需要3-7级的输入特征P ⃗ i n ( P 3 i n , … P 7 i n ) \vec{P}^{i n}\left(P_{3}^{i n}, \ldots P_{7}^{i n}\right)Pin(P3in​,…P7in​)其中P i i n P^{in}_iPiin​表示分辨率为输入图像的1 / 2 i 1/2^i1/2i的特征级别。例如如果输入分辨率为640x640那么p 3 i n p^{in}_3p3in​表示分辨率为80x80的特征级别3(640/23 80)而p 7 i n p^{in}_7p7in​表示分辨率为5x5的特征级别7。传统的FPN以自顶向下的方式聚合多尺度特征:其中Resize通常是用于分辨率匹配的上采样或下采样操作而Conv通常是用于特征处理的卷积操作。3.2. Cross-Scale Connections传统的自上而下的FPN固有地受到单向信息流的限制。为了解决这个问题PANet[26]增加了一个额外的自底向上路径聚合网络如图2(b)所示。[20, 18, 42]进一步研究了跨尺度连接。最近NAS-FPN[10]采用神经结构搜索来搜索更好的跨尺度特征网络拓扑但在搜索过程中需要数千个GPU小时发现的网络是不规则的难以解释或修改如图2©所示。通过研究这三种网络的性能和效率(表5)我们观察到PANet比FPN和NAS-FPN获得了更好的精度但需要更多的参数和计算。为了提高模型效率本文提出了几种跨尺度连接的优化方法:首先我们删除那些只有一个输入边的节点。我们的直觉很简单:如果一个节点只有一条输入边没有进行特征融合那么它对旨在融合不同特征的特征网络的贡献就会变小。这导致了一个简化的双向网络;其次如果原始输入到输出节点处于同一层次我们在两者之间增加一条额外的边以便在不增加成本的情况下融合更多的特征;第三与PANet[26]只有一条自顶向下和一条自底向上路径不同我们将每个双向(自顶向下和自底向上)路径视为一个特征网络层并多次重复同一层以实现更高级的特征融合。第4.2节将讨论如何使用复合缩放方法确定不同资源约束的层数。通过这些优化我们将新的特征网络命名为双向特征金字塔网络(BiFPN)如图2和图3所示。3.3. Weighted Feature Fusion在融合具有不同分辨率的特征时常见的方法是首先将它们调整为相同的分辨率然后将它们相加。金字塔注意网络[22]引入全局自注意上采样来恢复像素定位[10]对此进行了进一步研究。所有以前的方法都一视同仁地对待所有的输入特征。然而我们观察到由于不同的输入特征具有不同的分辨率它们通常对输出特征的贡献是不相等的。为了解决这个问题我们建议为每个输入增加一个额外的权重让网络学习每个输入特征的重要性。基于这个想法我们考虑了三种加权融合方法:Unbounded fusion:其中w i w_iwi​是一个可学习权值可以是一个标量(每个特征)一个矢量(每个通道)或多维张量(每个像素)。我们发现一个标度可以以最小的计算成本达到与其他方法相当的精度。然而由于标量权值是无界的它可能会导致训练不稳定。因此我们采用权值归一化来限定每个权值的取值范围。Softmax-based fusion:一个直观的想法是对每个权重应用softmax这样所有的权重都被归一化为一个值从0到1的概率表示每个输入的重要性。然而正如我们在6.3节的烧蚀研究中所示额外的softmax会导致GPU硬件的显著放缓。为了减少额外的延迟成本我们进一步提出了一种快速融合方法。Fast normalized fusion:其中通过在每个wi之后应用Relu来确保wi≥0并且$\epsilon $ 0.0001是一个较小的值以避免数值不稳定。类似地每个归一化权值也在0到1之间但由于这里没有softmax操作因此效率要高得多。我们的消融研究表明这种快速融合方法与基于softmax的融合具有非常相似的学习行为和准确性但在gpu上运行速度快30%(表6)。我们最终的BiFPN集成了双向跨尺度连接和快速归一化融合。作为一个具体的例子我们在这里描述如图2(d)所示的BiFPN的第6级的两个融合特征。其中P 6 t d P^{td}_6P6td​是自顶向下路径上第6级的中间特征P 6 o u t P^{out}_6P6out​是自底向上路径上第6级的输出特征。所有其他特性都以类似的方式构造。值得注意的是为了进一步提高效率我们使用深度可分离卷积[7,37]进行特征融合并在每次卷积后添加批量归一化和激活。4. EfficientDet基于我们的BiFPN我们开发了一个新的检测模型家族名为efficient entdet。在本节中我们将讨论efficiency entdet的网络架构和一种新的复合缩放方法。4.1. EfficientDet Architecture图3显示了efficiency entdet的整体架构它在很大程度上遵循了一级检测器范式[27,33,23,24]。我们采用imagenet预处理的effecentnets作为骨干网。我们提出的BiFPN作为特征网络从骨干网中提取3-7级特征{P3, P4, P5, P6, P7}并反复应用自顶向下和自底向上双向特征融合。这些融合的特征被输入到类和盒网络中分别产生对象类和边界盒预测。与[24]类似类和框网络权重在所有级别的特性中共享。4.2. Compound Scaling为了优化准确性和效率我们希望开发一系列能够满足广泛资源约束的模型。这里的一个关键挑战是如何扩展基线的effecentdet模型。以前的工作大多是通过使用更大的骨干网(例如ResNeXt[41]或AmoebaNet[32])使用更大的输入图像或堆叠更多的FPN层[10]来扩大基线检测器。这些方法通常是无效的因为它们只关注单一或有限的缩放维度。最近的工作[39]通过联合放大网络宽度、深度和输入分辨率的所有维度在图像分类方面表现出了显著的性能。受这些工作的启发[10,39]我们提出了一种新的复合缩放目标检测方法该方法使用一个简单的复合系数φ来联合缩放骨干网、BiFPN、类/盒网络和分辨率的所有维度。与[39]不同的是目标检测器比图像分类模型有更多的缩放维度因此对所有维度的网格搜索非常昂贵。因此我们使用基于启发式的扩展方法但仍然遵循联合扩展所有维度的主要思想。Backbone network我们重用了 EfficientNet-B0 to B6[39]相同的宽度/深度缩放系数这样我们就可以很容易地重用它们的imagenet预先训练的检查点。BiFPN network我们线性增加了BiFPN深度D b i f p n D_{bif pn}Dbifpn​(#layers)因为深度需要四舍五入到小整数。对于BiFPN宽度W b i f p n W_{bif pn}Wbifpn​(#channels)将BiFPN宽度W b i f p n W_{bifpn}Wbifpn​(#channels)按类似[39]的值按指数增长。具体来说我们对一个值列表{1.2,1.25,1.3,1.35,1.4,1.45}执行网格搜索并选择最佳值1.35作为BiFPN宽度缩放因子。形式上用以下公式来表示BiFPN的宽度和深度:Box/class prediction network我们将它们的宽度固定为始终与BiFPN相同(即W p r e d W b i f p n W_{pred} W_{bif pn}Wpred​Wbifpn​)但是线性使用公式增加深度(#layers)Input image resolution由于在BiFPN中使用特征级别3-7输入分辨率必须能被2 7 2^727 128整除因此我们用式线性增加分辨率:根据不同φ的公式1,2,3我们开发了EfficientDet-D0 (φ 0)到D7 (φ 7)如表1所示其中D7和D7x具有相同的BiFPN和head但D7使用更高的分辨率D7x使用更大的骨干网和多一个特征级别(从P3到P8)。值得注意的是我们的复合缩放是基于启发式的可能不是最优的但我们将在图6中展示这种简单的缩放方法可以显著提高效率而不是其他一维缩放方法。5. Experiments6. Ablation Study7、Conclusion本文系统研究了有效目标检测的网络体系结构设计选择提出了一种双向加权特征网络和自定义复合缩放方法以提高目标检测的准确性和效率。基于这些优化我们开发了一个新的检测器家族命名为efficient entdet它在广泛的资源限制范围内始终比现有技术获得更好的准确性和效率。特别是与以前的对象检测和语义分割模型相比我们的缩放后的efficiency entdet以更少的参数和flop实现了最先进的精确度。