本周看了论文ThunderNet:Towards Real-time Generic Object Detection,走向实时目标检测。是ICCV2019的一篇论文,在此做下总结。
一、动机:在移动设备上实现实时通用目标检测。
问题:移动设备在计算量方面会受到严格的限制,现有的基于CNN的检测器需要大量的计算量去实现理想的检测率,这会阻碍在移动场景下的实时推断。
本文提出了一个轻量级两阶段检测器,命名为ThunderNet,该网络相较于其它先前轻量级检测器在准确率和效率方面都有很大的提升。文中提出了一阶段检测器和两阶段检测器间存在的较大的准确率差距,就此提出问题:两阶段检测器在实时检测上是不是能超过一阶段检测器,本文提出了一个专注于效率的两阶段检测器。
二、ThunderNet网络架构
1、骨干部分:文中提出一个轻量级骨干命名为SNet。SNet是在ShuffleNetV2网络的基础上进行修改得到的。
(1)输入分辨率:本文网络采用320x320的输入分辨率。输入分辨率应该与骨干网络的能力相匹配。
(2)骨干网络:感受野:大的感受野可以利用更多的上下文信息并且编码更大范围的像素间的联系。
早期和后期特征:在骨干网络中,前期特征图比较大,有用于描述空间细节的轻量特征,后期特征图比较小,是高等级特征,具有区分性。而定位对低等级特征更敏感,高等级特征对于分类而言更加重要。对于极其小的骨干网络,弱的表示能力限制了在各个子任务上的准确率,所以,对其而言,早期特征和后期特征都很重要。作者认为轻量级网络ShuffleNet V1/V2限制了感受野。ShuffleNet V2和MobileNet V2限制了早期特征,所以对其进行改进。
SNet网络结构如图所示:
文中设计了三种结构,SNet49用于更快速的推断,SNet535是为了更高的准确率,SNet146能达到速度和准确率一个较好的平衡(其中49是指其FLOPs为49M)。将ShuffleNet V2网络中所有3x3深度可分离卷积层替换为5x5深度可分离卷积层,运行速度相似但是有效的增大了感受野。在SNet146和SNet535中,移除Conv5层,并在早期增加更多通道,这样设计是为了在不增加额外的计算量的情况下生成更多的低等级特征。在SNet49中,1024减半为512并增加早期的通道数,为了使低等级和高等级特征达到一个更好的平衡。如果移除Conv5,那么骨干部分不能获得足够的信息,如果保留1024维,低等级特征就会受限。
2、检测部分:
(1)Compressing RPN:使用5x5深度可分离卷积和一个256通道的1x1卷积替换原始的256通道的3x3卷积。
(2)Detection Head:本文使用Light-Head R-CNN中的检测头部,将R-CNN子网络中α减半为5,使用 PSRoI align改变通道。
为了消除由小骨干网络和小特征图引起的性能下降,本文设计了两个有效的构造块CEM和SAM。
(3)CEM文本增强模块:整合多尺度特征图去影响局部和全局特征,增强网络特征表达能力。
由于Light-Head R-CNN是在骨干网络之后利用全卷积网络GCN生成特征图,这能够增加感受野,但这种设计会产生大量的计算花费。但如果没有GCN网络从小的感受野中不能获取足够的上下文信息,所以文中提出采用特征金字塔网络解决这个问题。
CEM的关键思想是聚合多尺度局部信息和全局信息,以生成区分性更强的特征。通过利用局部和全局信息,CEM有效地扩大了感受野。在CEM中,合并了三个尺度的特征图。
c4,c5是stage3和stage4的最后输出特征值,cglb是在c5上应用一个全局平均池化产生的全局上下文特征向量。
(4)Spatial Attention Module空间注意模块:使用从RPN学到的信息去改善在RoI warping中的特征分布。
ThunderNet使用轻量级网络和小的输入图像,这对于网络去学习一个合适的特征分布是困难的。这个合适的特征分布是指我们希望在进行RoI操作的时候,背景区域中的特征不被关注,且前景物体的特征被强烈关注。SAM的关键思想是使用来自RPN学习到的知识来改善特征图的特征分布。
FRPN是来自RPN的中间特征图。这里θ(·)是一个维度变换(为了高效采用的1x1卷积),以匹配两组特征图中的通道数。CEM通过这个生成的特征映射进行重新加权,获得更好的特征分布。
RPN会获得来自R-CNN子网的额外监督,这有助于RPN的训练。
三、实验
1、在PASCAL VOC数据集上的结果
20个类,训练集为VOC 2007 trainval与VOC 2012 trainval的联合集
可以看到该网络与大目标检测器mAP结果差不多,但计算消耗大大减少。这体现了ThunderNet在准确率和效率上有一个比较好的平衡。
2、MS COCO数据集
80类 训练集:trainval 35k 验证集:minival
AP75表示我们的模型在定位上效果更好。AP75的提升大于AP50意味着我们的模型比其他检测器有更准确的边框。
4、消融实验
5x5深度可分离卷积能提供更大的有效的感受野,这对目标检测有重要意义。早期特征和后期特征证明了图像分类与目标检测的不同。
基准:压缩的Light-Head R-CNN和SNet146
可以看到,这是在ARM平台上第一个实时检测器并具有最快的单线程速度。
相关基础知识:
1、ARM平台:APM架构,一个32位精简指令集(RISC)处理器架构,多用于嵌入式设计。由于其节能的特点,非常适用于移动通讯领域。但ARM的存储、内存等性能扩展难以进行。
2、基于CNN的检测器
基于CNN的检测器通常被分成骨干部分和检测部分两部分。
骨干部分(The backbone)用于在图片中提取特征;检测部分(The detection) 检测图片中的目标实例。
骨干部分更倾向于使用大的分类网络和大的输入图片。虽然近期轻量级图像分类网络的进步促进了实时目标检测。但是问题是图像分类和目标检测有不同点。目标检测需要大的感受野和轻量级特征去提高定位能力,但是这对图像分类而言是不重要的。这个不平衡不仅会引起冗余,也会使网络更容易过拟合。因此,简单的将图像分类网络转换用于目标检测不是最优的选择。
在检测部分,通常被分为两阶段检测器和一阶段检测器。
两阶段检测器:两阶段多出来的stage就是Region Proposal过程
一阶段检测器:一阶段检测器直接预测边框和类别,由于不会产生RoI方向的特征提取和识别,它的结果相比于两阶段检测器更粗糙。
one-stage网络最终学习到的anchor很多,但只有少数anchor对最终网络的学习是有利的,而two-stage网络最终学习的anchor虽然不多,但是背景anchor也不会特别多。
为了解决one-stage网络背景anchor过多导致的不均衡问题:
(1)Focal Loss:将目标置信度这部分的损失换成focallos。(2)增大非背景anchor数量。(3)设置权重
3、候选区域(region proposal)
以Faster R-CNN为例,输入图片经过CNN特征提取,先经过RPN输出classification,这并不是判断物体究竟是哪一类,而是输出一个p值,只判断其是否为80类的某一类。RPN只需要将可能含有的物体的区域选出来即可,这些被选出来的区域即RoI(Region of Interests),同时也会在特征图上框定这些RoI的大致位置,即输出Bounding-box。
了解了two-stage:R-CNN、Fast R-CNN、Faster R-CNN、R-FCN的发展进程和工作原理,主要学习了RPN工作原理。
one-stage:YOLO、SSD
Light-Head R-CNN:对RoI warping、R-CNN子网这两部分的轻量化
轻量级深层神经网络ShuffleNet V2
之后详读相关经典论文时再对其详细描述。