一.Abstract
- two-stage
- lightweighted backbone for object detection
- efficient rpn and detection head design
- To generate more discriminative feature representation, we design two efficient architecture blocks, Context Enhancement Module and Spatial Attention Module.
- 在ARM平台上达到了24.1 fps
二.Introduction
- 基于CNN的目标检测分为特征提取的backbone和检测部分。backbone部分:ResNet 101等大型和state-of-the art的轻量级的目标分类backbone。存在问题:detection和分类有诸多不同,目标检测需要大的感受野和低水平的特征去提升定位能力,而这些对于分类都不重要,这两种任务之间的gap阻碍了在不损失检测精度下的模型压缩
- Light-Head R-CNN实现了轻量级的检测,但是耦合了一个小的backbone时,Light-weighted R-CNN在检测部分消耗了比backbone部分更多的计算,这会导致a mismatch between a weak backbone and a strong detection par,这种不平衡不仅会导致很大的冗余,而且会使网络易于过度拟合。
- one-stage直接用一些layer产生预测,所以速度很快,但是精度欠缺
- 我们使用two-stage的网络,设计了一个轻量级的backbone叫做SNet,在检测部分,对于RPN和R -CNN的subnet做了进一步的压缩,为了降低小的backbone和featuremap所带来的效果降低,我们设计了两个高效的结构block,CEM和SAM。CEM整合多尺度的信息,包含局部和全局的信息,SAM 使用从RPN中学习到的信息去提炼ROI warping中的特征分布。
三.模型详解
模型整体结构如下:
1.backbone部分
backbone部分结构如下:
Input Resolution:
输入的尺度要与模型的容量相匹配,ThunderNet使用的输入大小为320×320
Backbone Networks
1.Receptive field
一个大的感受野可以利用更多上下文信息并更有效地编码像素之间的远程关系,这对物体的定位很重要,尤其是大物体的定位。
2.Early-stage and late-stage features
对于大的backbone,定位比分类更困难,而对于小的backbone,分类和定位同样重要。在shuffnet基础上提出SNet的backbone,一共提出三种SNet,SNet49为了更快的inference,SNet535为了更好的accuracy,SNet146更好的平衡了速度和精度。
2.Detection部分
2.1压缩RPN和detection head
two-stage的检测器通常的rpn和detection head都很大,而light-weighted rcnn使用了一个轻量级的detection head,但是其backbone很小,这就导致了backbone和detection head的不平衡,不仅额外消耗运算,而且还增加了过拟合的风险。
使用一个5×5的深度可分离卷积和256维的1×1卷积,替换原始RPN网络中的3×3的卷积。增加kernel size以扩大感受野并且编码更多的文本信息。五种尺度{32*32,64*64,128*128,256*256,512*512},五种比例{1:2,3:4,1:1,4:3,2:1}去产生anchors。在Lighted-Head中,输入roi warping的featuremap的channel大小为10*7*7=490,在ThunderNet中,运用PSRoI将其channel压缩为5*7*7=245,由于这个channel比较小,所以我们在R-CNN之后接了一个1024维的fc层。这种设计在不损失精度的情况下极大的降低了运算量。其次,由于小的featuremap,检测时所需roi的数量也降低了。
2.2Context Enhancement Module
Light-Head R-CNN运用GCN去产生thin featuremaps,提升了感受野,但是显著提升了计算量,本文中舍弃了GCN,然而,感受野小且在没有GCN的情况下网络很难提取到足够的可分辨的特征信息。 为了解决这个问题,本文使用了特征金字塔网络FPN,然而,原始的FPN结构涉及许多额外的卷积和多个检测分支,这增加了计算成本并且引起了巨大的运行时间延迟。因此,基于FPN,本文提出了Context Enhancement Module (CEM),如下:
CEM的关键思想是聚合多尺度局部信息和全局信息,以生成区分性更强的特征。在CEM中,合并三个尺度的特征图:C4,C5和Cglb(在C5上应用全局平均池化得到Cglb作为全局特征信息)。
- 尺度一:C4特征图上应用1×1卷积以将通道数量压缩为α×p×p = 245
- 尺度二:C5进行上采样 + C5特征图上应用1×1卷积以将通道数量压缩为α×p×p = 245
- 尺度三:Cglb进行Broadcast + Cglb特征图上应用1×1卷积以将通道数量压缩为α×p×p = 245
通过利用局部和全局信息,CEM有效地扩大了感受野,并细化了薄特征图的表示能力。与先前的FPN结构相比,CEM仅涉及两个1×1卷积和fc层,这更加计算友好。
2.3Spatial Attention Module
在roi wraping期间,我们期望背景的区域小一些,而前景的区域要大一些,但是,相比较大的模型,由于ThunderNet利用轻量级的backbones和小的输入尺度,而这些这些对于网络本身去学习一个合适的特征分布是困难的。所以设计了一个计算友好的SAM模块去在roi warping之前实现在空间维度上对于featuremap的权重调整。SAM的关键idea就在于使用RPN中的知识去提炼featuremap中的特征分布。因为训练RPN网络时,网络就是以前景目标作为监督来训练的。 因此,RPN网络中的特性可以用于区分前景特征和背景特征。
SAM有两个输入,分别来自于CEM和RPN,而输出如下公式所示:
这里θ(·)是一个尺寸变换,以匹配两组特征图中的通道数。 sigmoid函数用于限制值的大小位于[0,1]。 最后,通过生成的特征映射对,使得CEM进行重新加权,以获得更好的特征分布。 为了计算效率,我们将1×1卷积应用于θ(·),因此CEM的计算成本可以忽略不计。
SAM有两个作用:
- 通过加强前景特征,压缩背景特征来提炼特征分布。
- 稳定RPN的训练,因为SAM使得有了额外的梯度从R-CNN的子网络流向RPN,如下图所示:
也就是说R-CNN接受了额外的R-CNN子网络的监督,而这有助于训练RPN。
四.Experiments
实施细节:synchronized SGD,weight decay=0.0001,momentum=0.9,batchsize=16 per GPU,4GPU,每张图有2000个RoI for training,200个RoI for testing,输入图片大小320×320,多尺度的训练包含240, 320, 480三种尺度,由于输入图像很小,所以采用较强的数据增强,网络在VOC 数据集上那个训练62.5k,在coco上训练375k,学习率从0.01开始,在50%和75%迭代次数的时候分别下降0.1。使用了在线的hard example mining和soft nms,并且使用CGBN。
1.在VOC2007数据集上的结果
2.COCO数据集
3.AblationExperiments
small image + large backbone和large image + small backbone效果都不好,图片的大小与模型的容量应该相匹配。
3.1BackboneNetworks
- 5*5的深度可分离卷积比3*3的深度可分离卷积表现更好。5*5卷积提供了更大的有效感受野,而这对于目标检测很重要
- Increasing the channels in early stages encodes more detail information, which is beneficial for localization.
- Comparison with Lightweight Backbones
3.2Detection Part
3.2.1Baseline,RPN and R-CNN subnet,Context Enhancement Module,Spatial Attention Module
同时multi-scaletraining, CGBN, and Soft-NMS gradually improve the baseline by 1.4 AP (from 20.5 to 21.9 AP)。
3.2.2 BalancebetweenBackboneandDetectionHead
large-backbone-small-head design is better than the small-backbone-large-head design for lightweight two-stage detectors。
backbone和detection head的容量应该相互匹配。
3.3Inference speed
用proceedeing conv代替了BN以提升速度。
在arm平台上实现了目前最快的单线程性能。