EfficientDet论文阅读笔记

文章:https://arxiv.org/pdf/1911.09070.pdf

代码:https://github.com/google/automl/tree/master/efficientdet

一.摘要

文章提出了一个新的用于目标检测的网络结构,并且提出了几点优化方案去提升模型效率。第一,文章提出了一个双向特征金字塔网络(BiFPN)可以轻松快速的融合多尺度特征;第二,文章提出了一个复合放大方法,可以统一放大backbone、feature network以及box/class预测网络的分辨率,深度,和宽度。通过以上几点优化以及更好的backbone网络,构造了EfficientDet系列的目标检测模型,其通过更大范围的资源约束比之前的目标检测模型达到了更高的效率。需要特别说明的是,EfficientDet系列的目标检测模型中,EfficientDet-D7的在COCO test-dev上模型精度达到了state-of-the-art 55.1 AP,其参数量为77M,运算量为410B FLOPs均比之前的模型要小。下图给出了各种模型的对比可以看出EfficientDet的性能还是很客观的:

二.BiFPN

这部分主要解决多尺度特征的融合问题,并介绍文章提出的BiFPN的主要思想:高效的双向交叉尺度连接以及加权特征融合。

1.问题描述

多尺度特征融合的目标是要整合不同分辨率的特征。通常,会给定一系列的不同尺度的特征,或可以理解为网络的不同层输出的feature map,如下图所示:

 其中P_{li}^{in},i=1,2,....表示不同尺度的特征。多尺度特征融合的目的就是要找到一个转换函数f可以高效的整合不同尺度的特征,并将整合后的新的一系列特征输出,如下图所示:

下面举几个具体的例子:

上图(a)展示了一个传统的自上而下的FPN网络。其输入为级别3至级别7的输入特征,如下图所示:

其中P_{i}^{in特征的分辨率为输入图像分辨率的\frac{1}{2^i},例如输入图像分辨率为(640,640),那么P_{3}^{in的分辨率为\frac{640}{2^3}=80,也就是(80,80)。图(a)的特征融合方式用数学表达式来表示如下图所示:

其中Conv表示卷积操作,Resize通常表示上采样或将采样操作。

2.交叉尺度连接

上部分中介绍图(a)部分的传统FPN,但是其存在固有的局限性,是因为其自上而下的单向信息流所导致。为了解决这个问题图(b)部分所展示的PANet构建了一条额外的自下而上的路径。图(c)部分的NAS-FPN采用了一种神经结构搜索的方式去搜索更好的交叉尺度特征网络结构,但是搜索过程耗时过长并且搜索出的网络结构不规则难以对其解释以及修改。通过对以上3中结构的效果对比发现PANet有着更好的精度,但是其参数量以及计算量更大。因此,为了提升效率,文章对PANet提出了几点优化措施:第一,移除了那些只有单条输入边的节点。这么做的原因也很简单,就是如果一个节点只有单条边输入而没有特征融合,那么他对于用于多尺度特征融合网络的贡献就很小。第二,添加同一层级的输入节点到输出节点的连接,这样做是为了在不增加其他成本的情况下尽量融合更多的特征;不像PANet只有一个自下而上以及一个自上而下的路径,文章将一个自上而下以及一个自下而上的路径看作是一个模块,或称之为特征网络的一层,如图(d)部分所示,整个特征网络是多个这样的模块或层的重复堆叠。新提出的特征网络叫做双向特征金字塔网络(BiFPN)。

3.加权特征融合

一般情况下,特征融合普遍方式为将不同尺度特征首先resize成相同分辨率,之后进行相加。但是所有的之前的方法都有一个缺陷就是,不同特征进行融合时,其所占权重都相同。但是,根据观察得知,不同分辨率的特征通常对于输出的贡献程度并不相同。因此,提出对于多个特征进行融合时,给每个特征一个权重,进行加权融合,并且权重也是可学习参数,即让网络自己去学习被融合的每一个特征的重要性。文章提出3中加权融合方式:

  • 无限制融合:如下图所示

w_i表示特征I_i对应的权重,可以是一个标量,对应的是每一个特征的权重;可以是一个向量,对应的是特征每一个channel的权重;可以是一个tensor,对应的是特征的每一个像素值的权重。但是这样的标量权重没有被限制,其取值范围可以从负无穷到正无穷,因此很容易造成训练的不稳定。因此需要对权重采取归一化操作从而限制权重的取值范围。

  • 基于softmax的融合:如下图所示

 

通过使用softmax的方式将权重限制在0到1之间,代表这特征的重要性,但是又发现采取softmax操作会因为指数运算而导致模型的速度变慢。

  • 快速归一化融合:如下图所示

权重通过ReLU确保取值大于等于0,之后通过上图中I_i的左边式子归一化到0到1之间,分母的\epsilon取值为0.0001是为了避免数值不稳定,这样操作相比于softmax来说速度更快,并且精度与softmax的融合方式相当。

最终,BiFPN结合了双向交叉尺度连接以及快速归一化融合方式,这里以图(d)部分的level6的两个节点的输入输出计算方式为例来进行说明,如下图所示:

其中P_6^{td}表示level6的地一个节点的输出,P_6^{out}为level6的第二个节点的输出,Conv表示卷积操作,卷积操作的输入是依照之前提到的快速归一化融合方式得到的融合结果。所有的其他节点都是采用这种方式进行融合,并且为了提升模型效率,在进行特征融合时,卷积操作采用的是深度可分离卷积,并且在每个卷积层后都带有BatchNormalization以及激活层。

三.EfficientDet

基于提出的BiFPN,提出了一个新的目标检测模型系列叫做EfficientDet。接下来主要说明EfficientDet的网络结构以及EfficientDet使用到的一个新的符合放大网络的方法。

1.EfficientDet结构

上图展示了EfficientDet的整体结构,主要还是遵循one-stage的检测方式。EfficientDet使用ImageNet预训练的EfficientNets作为backbone网络,提出的BiFPN作为特征网络,提取backbone网络的level3至level7的特征作为BiFPN的输入,BiFPN重复多个top-down和bottom-up双向特征融合。将融合后的特征送入class预测网络以及box预测网络,分别预测目标类别和目标的bounding box。

2.复合放大

为了同时优化精度和效率,文章想要构造一组模型,可以满足各种资源限制情况。一个关键因素就是如何放大一个baseline EfficientDet模型。

之前的模型通常通过使用更大的backbone网络或分辨率更高的输入图像或堆叠更多的FPN网络来扩大baseline目标检测模型。这些方法通常效率不高,因为这些方法只注重了单一或有限维度的放大。最近有文章提出了一种联合放大网络的宽度、深度以及输入分辨率的方法,这种方法在图像分类上产生了很好的效果。因此,受这个方法的启发针对目标检测模型提出了一种复合放大方法,利用一个预设的符合系数\phi去联合放大backbone网络、BiFPN、class预测网路、box预测网络以及输入图像分辨率的所有维度。与图像分类网络不同的是,目标检测模型有更多的可放大维度,因此针对目标检测模型使用网格搜索法去搜索各个维度的放大量会产生大量的计算及时间成本。因此这里采用一种启发式的放大方式,仍然遵循联合放大所有维度的想法。

  • Backbone网络:文章重用了EfficientNet-B0至B6相同的宽度/深度放大系数,那样就能够使用ImageNet预训练的模型。
  • BiFPN网络:BiFPN的深度(或层数)D_{bifpn}通过线性提升的方式来放大,这是因为深度需要为一个较小的整数;BiFPN的宽度(通道数)W_{bifpn}通过一种指数的方式进行放大。对放大因子(就是宽度放大时指数运算的底数)在{1.2, 1.25, 1.3, 1.35, 1.4, 1.45}候选值上进行了一个网格搜索得出最佳值1.35作为BiFPN网络的宽度放大因子,则BiFPN通过下图的方式对宽度和深度进行放大:

  • Box/class预测网络:控制Box/class预测网络的宽度和BiFPN保持一致,深度通过下图所示的线性增长的方式来计算:

  • 输入图像的分辨率:因为BiFPN网络的输入为Efficientnet的level3至level7输出的特征,而前面提到leveli的特征分辨率为输入图像的\frac{1}{2^i},而2^7=128,因此,输入图像的分辨率尺寸应当能够被128整除,所以通过如下方式提升输入图像分辨率:

对于BiFPN网络,Box/class预测网络以及输入图像分辨率中的不同的复合系数\phi,构建了EfficientDet-D0(\phi=0)至EfficientDet-D7(\phi=7),如下表所示:

表中D7以及D7x的BiFPN头相同,但是D7使用更高的输入图像分辨率,D7x使用更大的Backbone网络以及更多的feature level(p3至p8)。但是这里有个疑问就是,BiFPN的宽度通过上面公式计算B1时应当为64\times 1.35^1=86.4,但上表给出的为88,之后的不同放大尺度也有这样的问题。

四.实验结果

实验结果如下表所示:

从表中可以看到,模型参数量、运算量均小于其他模型,且精度要优于其他模型。

下表是EfficientDet用于语义分割与deeplabv3+的对比:

可以看到EfficientDet用于语义分割任务的平均iou要高于Deeplabv3+。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值