论文阅读|一阶段的目标检测器EfficientDet

论文相关信息

1.论文题目:EfficientDet: Scalable and Efficient Object Detection

2.发表时间:201911

3.文献地址:https://arxiv.org/abs/1911.09070

4.论文源码:https://github.com/google/automl/tree/master/efficientdet

介绍

当前先进的模型大多聚焦于精度提高,但是其模型往往太大且计算量很大,使得模型无法部署到一些硬件条件较差的设备上,如机器人和无人车等。尽管已经有one-stage的anchor-free 的检测器能够提高模型的效率,但是往往这些都是通过牺牲精度换取效率,模型还都只是聚焦于某个特定的或很小范围的资源条件下的,无法适应不同资源条件的设备。

于是本文提出要构建一个具有高精度和高效率的可缩放的检测架构,能够适应一个较大范围的资源限制。论文系统的学习了检测器架构的各种设计选择,在评估骨干网、特征融合、以及head(class/box) network之后提出当前存在的两大挑战:

挑战1:高效的多尺度融合。 以往的特征融合网络结构如FPN、PANet、NAS-FPN等在融合不同的输入特征时,往往只是对这些特征图进行无差别地简单相加,然而不同的输入特征图有不同的分辨率,它们对最终融合的贡献也是不等的。因此,作者提出一种简单高效的weighted bi-directional feature pyramid network (BiFPN)(加权双向特征金字塔网络),该网络引入了可学习的权重来学习不同输入特征图的重要性,同时重复的应用自上而下和自下而上的多尺度特征融合 。

挑战2:模型的缩放。之前的网络通过更大的骨干网和更大的输入图片尺寸来获得更高的精度,而本文观察到通过缩放特征网络和头部预测网络对于精度和效率的提高也是很关键的,于是提出一种混合缩放方法(compound scaling)来缩放目标检测器,能够关联的缩放backbone、neck、head三部分网络的分辨率/深度/宽度。

最终,基于这些优化(BiFPN 和compound scaling)以及更好的backbone(EfficientNets),得到了一个新的one-stage目标检测器家族——EfficientDet,它能够适应不同的资源限制条件,在比较少的参数和浮点运算(FLOPs)条件下取得比以往检测器更高的检测精度。其中Efficient-D7在单个模型和单个测试尺度下,在COCO数据集上得到的SOTA的表现,且只有77M参数和410B FLOPs,可见下图。只要少许的修改,模型就能够应用到实例分割上且性能很好。
在这里插入图片描述

Related Work

One-Stage Detectors: 检测器根据是否有个步骤提出感兴趣区域可划分为two-stage和one-stage。two-stage往往精度更高,one-stage在基于预定义号的anchor下更具简单些和高效性。本文的EfficientDet属于one-stage,通过优化网络架构实现了更好的效率和更高的精度。

Multi-Scale Feature Representations: 目标检测的一个主要难题是高效的表示和处理多尺度特征。FPN提出了top-down的连接方式来实现特征融合,随后PANet继承该思想增加了down-top的连接来聚合特征。STDL提出了一个尺度变换模块来探索跨尺度特征。M2det提出U型模块融合特征。然后最近的与讴歌NAS-FPN提出neural architecture search(神经结构搜索)来自动的设计特征网络(neck network)的拓扑结构,虽然该方法能够获得更好的性能,但是其计算量太大,且最终网络不规则缺少解释性。

Model Scaling: EfficientNets关联的缩放网络的宽度、深度、分辨率显著提高了图像分类的效率,本文提出的目标检测器的混合缩放方法主要是受该方法启示。

BiFPN

连接方式

本节首先分析当前多尺度特征融合存在的问题,然后介绍BiFPN的主要思想:高效的双向跨尺度连接和加权特征融合。下图是四个多尺度特征融合网络的示意图。

在这里插入图片描述

PANet比FPN和NAS-FPN的精度更高,但是其有更多参数和更大的计算量,因此成本更大。为了提高效率,本文提出了针对PANet的几种优化策略:

一、移除只有一个输入的节点。动机是认为一个节点只有一个输入而没有融合,那么它对融合不同尺度的特征作用不大。

二、对于在同一层的原始输入节点和最终输出节点上加一个连接,这样能够融合更多特征但是又不增加过多的成本。

三、把每一个双向的路径视作一个特征网络层(如上图中d的虚线框部分),然后重复同样的层多次来实现高水平的特征融合。使用混合缩放方法来决定对于特定的资源条件下该层重复多少次。

Weighted Feature Fusion

不同分辨率的特征图对融合的输出特征图的贡献是不等的,因此,应该给每一个输入特征图加上一个可学习的权重,让网络来学习不同特征图的重要性。有以下的三种加权方式:

Unbounded fusion(无限融合): O =\sum_iw_i· I_i ,其中w_i 是可学习的权重,可以是一个标量(针对每个特征图),也可是一个向量(针对特征图每个通道),还可以是一个多维的张量(针对每个像素)。我们要寻找一个合适的权重比例使其能达到和其他方法相差不多的精度。但是由于权重是无线的,可能会造成不稳定, 因此需要使用权重归一化来限制每个权重的值。

Softmax-based fusion(基于Softmax的融合)😮 =\sum_i\frac{e{w_i}}{\sum_je{w_j}}· I_i .一个直接的想法是对每个权重应用softmax,这样所有权中的值就归一化到0到1之间,表示每个输入特征图的重要性。然而,引入了softmax后使得在GPU上的运算速度下降,为了减少额外的延迟代价,提出了一个快速融合的方式。

Fast normalized fusion: O =\sum_i\frac{w_i}{\epsilon+\sum_jw_j}· I_i ,通过给每个w_i应用ReLU确保w_i\ge0,\epsilon=0.0001用于避免数值不稳定。每个权重任然会被归一化到0到1之间,但是由于没有使用softmax,所以更加高效。

最终的BiFPN整合了bidirectional cross-scale connections和fast normalized fusion。下面是一个其融合的例子,以上连接图中d的level6的两个融合为例:

P_6^{td}=Conv\left( \frac{w_1· P_6^{in}+w_2· Resize(P_7^{in})}{w_1+w_2+\epsilon}\right)

P_6^{out}=Conv\left( \frac{w_1’· P_6{in}+w_2’·P_6{td}+w_3’· Resize(P_5^{out})}{w_1’+w_2’+w_3’+\epsilon}\right)

其中P_6^{td} 指代第6层/level6的中间特征图,位于自上而下的连接上,P_6^{out}则是指的第6层的输出特征图,位于自下而上连接上。Resize指的是上采样或下采样的方式来使特征图的空间尺寸相同以便于相加,Conv指的是对特征图的处理。

需要注意的是,为了进一步提高效率,采用了可分离卷积来做特征融合,并且在每个卷积之后添加了batch normalization和activation。

EfficientDet

基于BiFPN提出了一个新的检测模型家族——EfficientDet,上文已经介绍了BiFPN,这节将介绍EfficientDet的网络架构和新的混合缩放方法。

EfficientDet Architecture

在这里插入图片描述

上图体现了EfficientDet的整体架构,可以看出是属于one-stage范式的。EfficientDet使用ImageNet-pretrained EfficientNets作为骨干网络,采用了其第3-7的特征层作为BiFPN特征融合网络的输入,并且不断的重复自上而下和自下而上的双向特征融和层。最终融合得到的输出送到head network 的class 和box分支分布生成目标类别和边框预测。和Focal loss一样,每层输出特征图共享head network 的参数(FCOS中则是不共享的)。

Compound Scaling(混合缩放)

为了同时优化网络的精度和效率,将网络应用到不同的资源限制的设备环境中,我们要解决的一个问题是如何缩放一个EfficientDet的基准模型。

受EfficientNets的启发,提出一种新的混合方法来做目标检测,其采用一个混合系数\phi来关联的缩放backbone、neck、head网络和分辨率。和图像分类不同的是检测有更多需要缩放的维度,使用grid search的方法代价太大,因此这里采用的是一种基于启发式的缩放方法。

Backbone network

沿用了EfficientNet-B0 到 B6的宽度/深度缩放系数,从而能够容易的使用他们预训练好的权重。

BiFPN network

线性的增加BiFPN的D_{bifpn}(#layer的数量),因为深度需要四舍五入到小的整数。对于BiFPN的宽度W_{bifpn},则是和EfficientNets一样采用的指数级的增长,在一系列值{1.2, 1.25, 1.3, 1.35, 1.4, 1.45},上执行grid search,然后选择最好的那个1.35作为宽度缩放因子。宽度和高度的缩放公式如下:

W_{bifpn}=64·(1.35^{\phi}),D_{bifpn}=3+\phi,(1)

Box/class prediction networ

将head network部分的宽度固定的和BiFPN一样,W_{pred}=W_{bifpn} ,但是使用下式来线性增加深度D_{pred}:

D_{box}=D_{class}=3+\left\lfloor\frac{\phi}{3}\right\rfloor,(2)

Input image resolution

特征图的3-7层用于特征融合,每层的分辨率为原图分辨率/2^i ,因此输入分辨率应该能够被2^7=128整除,所以使用下式线性的增加分辨率:

R_{input}=512+\phi·128,(3)

以不同的\phi带入上面的1,2,3等式我们就能得到EfficientDet-D0(\phi=0)到D7(\phi)。如下表所示,其中D7和D7x有相同的BiFPN和head,但是D7使用更高的分辨率,D7x使用更大的backbone network并且多了一个特征层(P_3到P_8)

在这里插入图片描述

值得注意的是,这种启发式的混合缩放方法是基于启发式的,或许不是最优,但是这种简单的缩放方法比起其它单维度的缩放方法,能够极大的提高效率。

Experiments

在这里插入图片描述

作者只复现了RetinaNet,其他模型都直接引用的相关论文中的数据。

实现细节提一下:

SGD优化器,momentum0.9,weight decay 4e-5,学习率第一个epoch从0到0.16线性增加,然后使用粗衰退法退火。每个卷积之后使用Synchronized batch norm,decay0.99,epsilon 1e-3.激活函数和EfficientNets一样使用SiLU(Swish-1),使用平均0.9998的衰退指数级的移动。使用常用的focal loss损失,α=0.25,γ=0.15。aspect ratio{0.5,1,2}。训练时使用水平翻转和尺度抖动[0.1,2].推断时使用soft-NMS。

总结

模型提出了一种加权的双向特征融合网络BiFPN和一种新的混合缩放方法,并且使用了更为强大的backbone(EfficientNets),基于以上优化开发了一个检测器家族——EfficientDet,该家族的检测器能够适应不同资源条件的设备环境,兼顾了效率和精度,在相同的参数量和浮点计算量条件下,表现达到SOTA!

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值