EfficientDet: Scalable and Efficient Object Detection

论文地址:https://arxiv.org/pdf/1911.09070.pdf
模型效率在计算机视觉中越来越重要。本文系统地研究了用于目标检测的神经网络结构设计选择,并提出了几个关键的优化方法以提高效率。首先,提出了一种加权双向特征金字塔网络(BiFPN),该网络可以实现简单、快速的多尺度特征融合;提出了一种复合标度方法,该方法可以同时对所有主干网络、特征网络和box/class预测网络的分辨率、深度和宽度进行统一标度。基于这些优化和更好的主干,开发了一个新的对象检测器系列,称为EfficientDet,在广泛的资源限制范围内,它始终能够实现比现有技术更好的效率。

一、文章简介:

近年来,PANet、NAS-FPN等研究开发了更多的跨尺度特征融合网络结构。在融合不同的输入特征的同时,以往的工作大多只是简单地总结它们,然而,由于这些不同的输入特征有不同的分辨率,他们通常对融合输出特征的贡献是不相等的。为了解决这一问题,作者提出了一种简单而高效的加权双向特征金字塔网络(BiFPN),该网络引入可学习权值来学习不同输入特征的重要性,同时反复应用自顶向下和自底向上的多尺度特征融合。
以往的研究主要依靠更大的骨干网或更大的输入图像尺寸来获得更高的准确性,在考虑准确性和效率时,扩大特征网络和box/class预测网络也是至关重要的。本文提出了一种目标探测器的复合缩放方法,该方法集合缩放所有骨干网、特征网络、box/class预测网络的分辨率/深度/宽度。
EfficientNets比以前常用的骨干实现了更好的效率。将EfficientNet主干与BiFPN和复合缩放相结合,开发了一个新的对象检测器家族,名为EfficientDet,与以前的对象检测器相比,它在使用更少的参数和FLOPs的情况下始终能够实现更好的精度。在COCO数据集上的性能比较如下。在类似的精度约束下,EfficientDet使用的FLOPs比YOLOv3少28x,比RetinaNet少30x,比最近基于ResNet的NAS-FPN少19x。特别是,通过单模型和单测试时间尺度,EfficientDet-D7实现了最先进的55.1 AP, 77M参数和410B FLOPs,比之前最好的探测器高出4 AP,同时小了2.7倍,使用更少的FLOPs 。EfficientDet在GPU/CPU上也比以前的检测器快4到11倍。
在这里插入图片描述

二、实现细节:

(一)、BiFPN

多尺度特征融合的目的是聚合不同分辨率的特征。形式上,给定一个多尺度特征列表

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

i

n

P^{ in}

Pin表示级别为

l

i

l_i

li的特征,我们的目标是找到一个变换f,可以有效地聚合不同的特征,并输出一个新的特征列表:

P

o

u

t

=

f

(

P

i

n

)

P^{out} = f(P^{in})

Pout=f(Pin)
下图展示了传统的自顶向下FPN。
在这里插入图片描述
它采用3-7级输入特征

P

i

n

=

(

P

3

i

n

,

.

.

.

,

P

7

i

n

)

,

P^{ in} = (P_3^{in} ,...,P_7^{in}),

Pin=(P3in,...,P7in),

P

i

n

P^{ in}

Pin表示输入图像分辨率为

1

/

2

i

1/ 2i

1/2i的特征级别。例如,如果输入分辨率是640x640,那么

P

3

i

n

P_3^{ in}

P3in

(

640

/

2

3

=

80

)

(640/2^3 = 80)

(640/23=80),分辨率80x80,而

P

7

i

n

P_7^{ in}

P7in表示特征级别7,分辨率为5x5。传统的FPN以自上而下的方式聚集多尺度特征:
在这里插入图片描述
其中Resize通常是分辨率匹配的上采样或下采样操作,Conv通常是特征处理的卷积操作。
传统的自顶向下FPN本质上受到单向信息流的限制。为了解决这个问题,PANet增加了一个额外的自底向上路径聚合网络,如下所示。

在这里插入图片描述
NAS-FPN采用神经架构搜索来搜索更好的跨尺度特征网络拓扑,但搜索过程需要数千个GPU小时,发现的网络不规则且难以解释或修改,如下所示。
在这里插入图片描述

为了提高跨尺度连接的效率,本文提出了几种优化方法:
首先,去除那些只有一条输入边的节点;如果一个节点只有一个输入边,没有特征融合,那么它对以融合不同特征为目标的特征网络的贡献就会较小。这导致了一个简化的双向网络;
其次,在原输入节点和原输出节点处于同一层次时,在原输入节点和原输出节点之间增加一条额外的边,在不增加太多成本的情况下融合更多的特征;
第三,不像PANet只有一个自顶向下和一个自底向上的路径,我们将每个路径视为双向的(自顶向下&自底向上)路径作为一个特征网络层,并重复同一层多次,以实现更高级的特征融合。
通过这些优化,将新的特征网络命名为双向特征金字塔网络(BiFPN),如下所示:
在这里插入图片描述
当融合不同分辨率的特征时,一种常见的方法是先将它们调整到相同分辨率,然后将它们相加。金字塔注意网络(PANet)引入全局自注意上采样来恢复像素定位。所有以前的方法对所有输入特征一视同仁,没有区别。然而,由于不同的输入特征在不同的分辨率,他们通常对输出特征的贡献是不平等的。为了解决这个问题,作者提出为每个输入增加一个额外的权重,让网络学习每个输入特征的重要性。在此基础上,考虑了三种加权融合方法:
Unbounded fusion:
在这里插入图片描述
其中

w

i

w_i

wi是a个可学习的权重,可以是标量(每个特征)、向量(每个通道)或多维张量(每个像素)。一种尺度可以以最小的计算成本达到与其他方法相当的精度。然而,由于标量权值是无界的,它可能会导致训练不稳定。因此,通过权值归一化来约束每个权值的取值范围。
Softmax-based fusion:
在这里插入图片描述
一个直观的想法是将softmax应用于每个权重,这样所有权重都被归一化为一个值范围从0到1的概率,表示每个输入的重要性。然而额外的softmax会导致GPU硬件的显著放缓。为了减少额外的延迟代价,进一步提出了一种快速融合方法。
Fast normalized fusion:
在这里插入图片描述
其中

w

i

0

w_i≥0

wi0是通过在每个

w

i

w_i

wi后应用Relu来确保的,为了避免数值不稳定性,ε= 0.0001。同样,每个归一化权重的值也落在0到1之间,但由于这里没有softmax操作,因此效率更高。
BiFPN集成了双向交叉尺度连接和快速标准化融合。在这里描述了下图中所示的两种级别为6的BiFPN融合特征:在这里插入图片描述
在这里插入图片描述

P

6

t

d

P_ 6^{td}

P6td是自顶向下路径中第6层的中间特征,

P

6

o

u

t

P_6^{out}

P6out是自底向上路径中第6级的输出特征。所有其他特性都以类似的方式构造。值得注意的是,为了进一步提高效率,使用深度可分卷积进行特征融合,并在每次卷积后添加批量归一化和激活函数。

(二)、EfficientDet

在这里插入图片描述
上图显示了EfficientDet的总体架构,它在很大程度上遵循了单阶段检测器范式。我们采用imagenet预训练的EfficientNets作为骨干网。BiFPN作为特征网络,采用骨干网的3-7级特征{P3, P4, P5, P6, P7},反复采用自顶向下和自底向上的双向特征融合。将融合后的特征分别输入box/class网络,生成对象box/class预测。box/class网络权值在所有级别的特性中共享。
本文提出了一种新的复合尺度方法用于目标检测,该方法使用一个简单的复合系数φ来联合放大主干、BiFPN、box/class网络和分辨率的所有维度。目标检测器比图像分类模型有更多的缩放维度,因此对所有维度进行网格搜索非常昂贵。因此,使用基于启发式的缩放方法,但仍然遵循联合缩放所有维度的主要思想。
Backbone network:
重用了EfficientNet-B0到B6的相同的宽度/深度缩放系数,这样就可以很容易地重用imagenet预先训练的checkpoints。
BiFPN network:
线性增加了BiFPN深度

D

b

i

f

p

n

D_{bifpn}

Dbifpn (#layers),因为深度需要四舍五入到整数。对于BiFPN宽度

W

b

i

f

p

n

W_{bifpn}

Wbifpn (#channels),以类似的方式指数增长
。具体来说,对值{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_{bifpn}

Wpred=Wbifpn),增加深度(#layers)使用方程式:在这里插入图片描述
Input image resolution:
由于特征级别3-7在BiFPN中使用,输入分辨率必须能被

2

7

2^7

27=
128整除 ,所以使用方程线性增加分辨率:
在这里插入图片描述
φ与上述方程不同,EfficientDet-D0(φ= 0)D7(φ= 7)如下所示,在D7 D7x BiFPN和头部相同,但D7使用高分辨率、D7x使用较大的骨干网络并使用更多的特性的级别(从P3到P8)。
在这里插入图片描述

三、实验细节:

在这里插入图片描述
在相对低精度的情况下,EfficientDet-D0实现了与YOLOv3相似的精度,但FLOPs少28x。与retavanet和Mask-RCNN相比,EfficientDet实现了相似的准确性,参数少了8倍,FLOPs少了21倍。在高精度的情况下,EfficientDet在参数和FLOPs更少的情况下,单模型单尺度efficientdt - d7x在测试开发上实现了最新的55.1 AP。
在这里插入图片描述
由于EfficientDet使用了一个强大的主干和一个新的BiFPN,
上表比较了使用retanet训练设置的backbone和BiFPN的影响。从RetinaNet和ResNet-50骨干网开始,自上而下在FPN[23]中,我们首先用EfficientNetB3替换主干网,它提高了约3个AP的准确性,参数和FLOPs略少。通过进一步用我们提出的BiFPN替代FPN,我们用更少的参数和FLOPs实现了额外的4 AP增益。
在这里插入图片描述

上表显示了具有不同跨尺度连接的特征网络的精度和模型复杂度。值得注意的是,最初的FPN和PANet只有一个自顶向下或自底向上的流,但是为了进行公平的比较,这里将每个流重复多次,并将所有的卷积替换为深度可分卷积,这和BiFPN是一样的。使用相同的骨干网和box/class预测网络,所有实验使用相同的训练设置。传统的自顶向下FPN固有地受到单向信息流的限制,因此准确性最低。虽然重复FPN+PANet的精度略高于NASFPN,但它也需要更多的参数和FLOPs。BiFPN实现了与重复FPN+PANet相似的准确性,但使用了更少的参数和FLOPs。通过附加的加权特征融合,BiFPN在参数和FLOPs更少的情况下获得了最好的精度。
在这里插入图片描述
上表比较了三种不同模型尺寸的探测器的softmax和fast归一化融合方法。从结果中可以看出,快速归一化融合方法与基于softmax的融合方法具有相似的精度,但是在gpu上的速度要快1.26x - 1.31x。
在这里插入图片描述
有趣的是,在训练过程中,归一化权值变化很快,说明不同的特征对特征融合的贡献并不均衡。尽管变化很快,但快速归一化融合方法在所有三个节点上都表现出与基于softmax的融合非常相似的学习行为。
在这里插入图片描述
上图将复合缩放方法与其他按单个维度放大分辨率/深度/宽度的替代方法进行了比较。在相同的baseline detector上,复合缩放方法获得了比其他方法更好的效率,表明了通过更好地平衡不同架构维度来实现联合缩放的好处。

版权声明:本文为CSDN博主「小小小~」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_52302919/article/details/122956550

小小小~

我还没有学会写个人说明!

暂无评论

发表评论

相关推荐

Yolo(3)(项目)Yolo v3 目标检测(85分类)

目录 基础理论 一、 读取文件 二、神经网络初始化 1、搭建神经网络 2、GPU加速 三、打开摄像头、按帧读取图像 四、向神经网络输入 五、获取神经网络输出 1、获取各层名称 2、获取输出层名称 3、获取输出层图像&#xff

YOLOv3详解

1. 什么是YOLO ​  YOLO是“You Only Look Once”的简称,它虽然不是最精确的算法,但在精确度和速度之间选择的折中,效果也是相当不错。YOLOv3借鉴了YOLOv1和YOLO