EfficientDet学习笔记

EfficientDet学习笔记

EfficientDet: Scalable and Efficient Object Detection

Abstract

模型效率在计算机视觉中变得越来越重要。在本文中,我们系统地研究了用于目标检测的神经网络体系结构设计选择,并提出了几个关键的优化以提高效率。首先,提出了一种加权双向特征金字塔网络(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 Work

One-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

image-20221104170904934

多尺度特征融合的目的是聚合不同分辨率的特征。形式上,给定一个多尺度特征列表 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) P in=(Pl1in,Pl2in,),其中 P l i i n P_{l_{i}}^{i n} Pliin表示第 l i l_i li层的特征,我们的目标是找到一个变换f,它可以有效地聚合不同的特征,并输出一个新特征列表: P ⃗ out  = f ( P ⃗ i n ) \vec{P}^{\text {out }}=f\left(\vec{P}^{i n}\right) P out =f(P in)。举个具体的例子,图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) P in=(P3in,P7in),其中 P i i n P^{in}_i Piin表示分辨率为输入图像的 1 / 2 i 1/2^i 1/2i的特征级别。例如,如果输入分辨率为640x640,那么 p 3 i n p^{in}_3 p3in表示分辨率为80x80的特征级别3(640/23 = 80),而 p 7 i n p^{in}_7 p7in表示分辨率为5x5的特征级别7。传统的FPN以自顶向下的方式聚合多尺度特征:

image-20221104172741562

其中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所示。

image-20221105090514874

3.3. Weighted Feature Fusion

在融合具有不同分辨率的特征时,常见的方法是首先将它们调整为相同的分辨率,然后将它们相加。金字塔注意网络[22]引入全局自注意上采样来恢复像素定位,[10]对此进行了进一步研究。所有以前的方法都一视同仁地对待所有的输入特征。然而,我们观察到,由于不同的输入特征具有不同的分辨率,它们通常对输出特征的贡献是不相等的。为了解决这个问题,我们建议为每个输入增加一个额外的权重,让网络学习每个输入特征的重要性。基于这个想法,我们考虑了三种加权融合方法:

Unbounded fusion:

image-20221105090658748

其中 w i w_i wi是一个可学习权值,可以是一个标量(每个特征),一个矢量(每个通道),或多维张量(每个像素)。我们发现一个标度可以以最小的计算成本达到与其他方法相当的精度。然而,由于标量权值是无界的,它可能会导致训练不稳定。因此,我们采用权值归一化来限定每个权值的取值范围。

Softmax-based fusion:

image-20221105090850927

一个直观的想法是对每个权重应用softmax,这样所有的权重都被归一化为一个值从0到1的概率,表示每个输入的重要性。然而,正如我们在6.3节的烧蚀研究中所示,额外的softmax会导致GPU硬件的显著放缓。为了减少额外的延迟成本,我们进一步提出了一种快速融合方法。

Fast normalized fusion:

image-20221105091002784

其中,通过在每个wi之后应用Relu来确保wi≥0,并且$\epsilon $= 0.0001是一个较小的值,以避免数值不稳定。类似地,每个归一化权值也在0到1之间,但由于这里没有softmax操作,因此效率要高得多。我们的消融研究表明,这种快速融合方法与基于softmax的融合具有非常相似的学习行为和准确性,但在gpu上运行速度快30%(表6)。

我们最终的BiFPN集成了双向跨尺度连接和快速归一化融合。作为一个具体的例子,我们在这里描述如图2(d)所示的BiFPN的第6级的两个融合特征。

image-20221105091220802

其中 P 6 t d P^{td}_6 P6td是自顶向下路径上第6级的中间特征, P 6 o u t P^{out}_6 P6out是自底向上路径上第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的宽度和深度:

image-20221105095202008

Box/class prediction network

我们将它们的宽度固定为始终与BiFPN相同(即 W p r e d = W b i f p n W_{pred} = W_{bif pn} Wpred=Wbifpn),但是线性使用公式增加深度(#layers)

image-20221105095454336

Input image resolution

由于在BiFPN中使用特征级别3-7,输入分辨率必须能被 2 7 2^7 27 = 128整除,因此我们用式线性增加分辨率:

image-20221105095549478

根据不同φ的公式1,2,3,我们开发了EfficientDet-D0 (φ = 0)到D7 (φ = 7),如表1所示,其中D7和D7x具有相同的BiFPN和head,但D7使用更高的分辨率,D7x使用更大的骨干网和多一个特征级别(从P3到P8)。值得注意的是,我们的复合缩放是基于启发式的,可能不是最优的,但我们将在图6中展示这种简单的缩放方法可以显著提高效率,而不是其他一维缩放方法。

image-20221105095902686

5. Experiments

image-20221105100009779

image-20221105100030553

image-20221105100049333

image-20221105100100475

6. Ablation Study

image-20221105100110926

image-20221105100206837

image-20221105100231424

image-20221105100238596

7、Conclusion

本文系统研究了有效目标检测的网络体系结构设计选择,提出了一种双向加权特征网络和自定义复合缩放方法,以提高目标检测的准确性和效率。基于这些优化,我们开发了一个新的检测器家族,命名为efficient entdet,它在广泛的资源限制范围内始终比现有技术获得更好的准确性和效率。特别是,与以前的对象检测和语义分割模型相比,我们的缩放后的efficiency entdet以更少的参数和flop实现了最先进的精确度。

猜你喜欢

转载自blog.csdn.net/charles_zhang_/article/details/127700285