ThunderNet 论文笔记

前言

关于实时目标检测,作者提出two-stage和one-stage中存在的问题:

  • two-stage检测器倾向于使用特别复杂的detection head来达到更好的精度,这对于移动设备来说是可望不可及的。Light-Head R-CNN虽然采用了轻量级的detection head以实现实时检测,但它在head上的计算依然比在backbone上的计算要高出不少,这会造成巨大的计算冗余,并且会使网络过拟合。
  • one-stage的检测器在detection上虽然计算很少,但它由于没有实现RoI-wise的特征提取,导致提取的特征比较粗糙,因此检测精度不是很高。而这个问题在轻量级的检测器上更为严重:先前的轻量级one-stage检测器没有实现速度和精度之间的trade-off,它们的检测精度与two-stage相比相差太多,也不能在移动设备上实现实时检测。

由此作者提出,two-stage能否比one-stage更能胜任实时检测这一工作呢?

答案是肯定的。本文提出的ThunderNet就是一个轻量级的two-stage通用目标检测器。它的backbone是SNet,是基于ShuffleNetV2设计的。在detection部分中,参照了Light-Head R-CNN中的detection head的设计,并且对RPN和R-CNN子网进行压缩;同时为了消除压缩带来的small backbone和small feature maps导致的性能上的损失,设计了CEM(Context Enhancement Module)和SAM(Spatial Attention Module),CEM结合了不同尺度的特征图以利用语义和上下文信息,SAM引入RPN中的信息来优化特征的分布。ThunderNet的整体结构如下图所示:
在这里插入图片描述


backbone part

1. 输入图像的像素

two-stage检测器的输入像素通常都很大,虽然有优点,比如检测精度高,但也会造成庞大的计算量。为了提高inference时的速度,ThunderNet将输入像素统一为320×320。同时作者发现,输入像素的大小必须与backbone的能力相匹配。下表说明了小的图像输入到大的backbone里,或者大的图像输入到小的backbone里,都不能达到最优的检测结果。输入像素和backbone之间是有一个trade-off的:

  • 输入像素过低会导致特征图的像素也很低,会引入特征上的一些误差;
  • backbone过小是不能处理较大的输入图像的信息的。

为了使网络的表示能力和特征图的像素之间达到平衡,必须使backbone与输入像素相匹配。
在这里插入图片描述

2. backbone

backbone用于提取图像中的特征,提供了输入图像最基础的特征表示。基于CNN的检测器通常使用在ImageNet上经过预训练的分类网络作为backbone,但分类与检测从backbone中需要的属性是不同的,因此简单的在分类网络上训练检测网络并不能达到最优的效果。对于检测任务来说,backbone对检测结果的影响因素主要有以下几个方面:

  • 感受野。CNN只能获取在感受野之内的信息,因此一个较大的感受野可以利用更多的上下文信息,这对于定位任务是非常重要的,尤其是较大目标的定位。
  • early-stage和late-stage的特征。在backbone中,early-stage的特征图更大,包含更多空间信息,对定位更重要;late-stage的特征图更小,但辨识性更好,包含更多语义信息,对分类更重要。在较大的backbone中,定位比分类更难,这说明early-stage的特征更重要;在特别小的backbone中,由于网络低下的表示能力,同时对分类和定位的精度造成影响,这说明early-stage和late-stage的特征同等重要。

先前的轻量级backbone有以下几个缺点:

  • ShuffleNetV1/V2的感受野都不是很大(121像素/320像素);
  • ShuffleNetV2缺少early-stage的特征;
  • Xception在计算预算很低的情况下缺少深层特征。

基于以上这些内容,作者对ShuffleNetV2进行修改,建立了一个新的轻量级backbone,称为SNet。本文提出3种不同的SNet backbone: SNet49用于更快的inference,SNet535的检测精度更高,SNet146可以达到速度与精度之间更好的trade-off。

在修改时,首先用3×3的depthwise卷积层替换ShuffleNetV2所有的5×5的depthwise卷积层,将感受野从121像素扩大到193像素。然后根据3种不同的SNet backbone,修改的方法各有不同:

  1. SNet146和SNet535,移除它们的conv5,在网络早期阶段中增加更多通道。这可以在不增加额外计算的情况下生成更多浅层特征图;
  2. SNet49,将conv5的通道数从1024压缩到512,并且在网络早期阶段中增加更多通道,以达到浅层特征图和深层特征图之间的平衡。如果移除conv5,backbone无法获取充足的信息,会导致信息的损失;如果仍保留1024维的conv5,backbone会受到有限的浅层特征的影响。

下表展示了backbone的整体结构:
在这里插入图片描述


detection part

在这里插入图片描述

1. 压缩RPN和detection head

two-stage检测器的RPN规模很大,并且detection head也很复杂,因此作者在Light-Head R-CNN的基础上对RPN进行压缩,具体来说就是,用5×5 depthwise + 256通道 1×1卷积代替原来的256通道 3×3卷积,用5种尺度{ 3 2 2 , 6 4 2 , 12 8 2 , 25 6 2 , 51 2 2 32^2,64^2,128^2,256^2,512^2 }和5种长宽比{ 1 : 2 , 3 : 4 , 1 : 1 , 4 : 3 , 2 : 1 1:2,3:4,1:1,4:3,2:1 }来生成anchor,其它超参数的设置和Light-Head R-CNN中的相同。

原本的Light-Head R-CNN在detection head中会生成通道数为 α × p × p \alpha×p×p 的特征图,其中 p p 是池化大小, α = 10 \alpha=10 ,然后再对特征图进行RoI warping操作。但是由于ThunderNet中的backbone和输入图像都更小一点,因此用PSRoI align进行RoI warping,将输出特征图的通道数减小到5。在经过PSRoI align之后的RoI feature只有245维,因此在R-CNN子网中添加一个1024维的全连接层。

2. CEM

为了融合多尺度特征,本文提出了CEM,其实就和FPN差不多,但作者认为FPN中有许多额外的卷积和detection分支,会增大计算量,因此CEM和FPN还是有些不同的,CEM的设计使得计算量更少一些。下图是CEM的结构:
在这里插入图片描述
CEM融合了 C 3 C_3 C 4 C_4 C g l b C_{glb} 这三个尺度的特征图,其中 C 3 C_3 C 4 C_4 分别是Stage3和Stage4输出的特征图, C g l b C_{glb} 是全局上下文的特征向量,是通过在 C 5 C_5 上应用全局平均池化得到的。

  • 尺度一:在 C 4 C_4 上应用1×1的卷积将通道数减小为 α × p × p = 245 \alpha×p×p=245
  • 尺度二:在 C 5 C_5 上应用1×1的卷积将通道数减小为245,然后进行2倍的上采样;
  • 尺度三:在 C g l b C_{glb} 上应用1×1的卷积将通道数减小为245,然后进行Broadcast

这样三个特征图的空间维度就相等了,然后把它们融合起来。通过利用局部和全局信息,CEM有效扩大了感受野,并优化了特征图的表示能力。同时由于CEM只采用1×1的卷积和全连接层,因此与FPN相比计算量更少。

3. SAM

在RoI warping中,最好的情况是背景区域的特征很弱,而前景区域的特征很强。但ThunderNet使用了轻量级的backbone,输入的图像也很小,因此对它来说学习特征的分布是很难的。因此本文提出SAM,在RoI warping之前re-weight特征图。SAM的结构如下图:
在这里插入图片描述

SAM的中心思想来自于RPN,RPN在gt的监督下被训练为可以识别前景区域,因此RPN中的中间特征可以用来区分前景区域和背景区域。SAM接受来自RPN和CEM的输入,其输出为:
在这里插入图片描述
其中 θ ( ) \theta(·) 是一个维度转换,使两个特征图的通道数能够匹配。sigmoid函数用来将值约束在[0,1]内。最终通过生成的特征图,来re-weight CEM,从而得到更好的特征分布。为了计算的效率,只将1×1的卷积应用于 θ ( ) \theta(·) ,从而CEM的计算可忽略不计。

SAM有两个作用:

  • 通过加强的前景特征和弱化的背景特征,来优化特征分布;
  • 稳固RPN的训练。因为SAM允许从RPN到R-CNN子网的额外的梯度流,如下式所示。也就是说,RPN接受了R-CNN子网额外的监督,从而帮助RPN的训练。
    在这里插入图片描述
发布了39 篇原创文章 · 获赞 1 · 访问量 1208

猜你喜欢

转载自blog.csdn.net/qq_30146937/article/details/104654463