Sparse R-CNN论文汇报

文章目录

  • 一、目标检测领域发展现状
  • 二、Sparse R-CNN简介
  • 三、Sparse R-CNN结构
      • Backbone
      • Learnable proposal box
      • Learnable proposal feature
      • Dynamic instance interaction
      • Set prediction loss
  • 四、Sparse R-CNN性能比较

一、目标检测领域发展现状

目标检测是计算机视觉领域最重要也是最具有挑战性的分支之一。目标检测任务是找出图像或视频中人们感兴趣的物体,并同时检测出它们的位置和大小。不同于图像分类任务,目标检测不仅要解决分类问题,还要解决定位问题,是属于Multi-Task的问题。它在人们生活中得到了广泛的应用,如监控安全、自动驾驶、交通监控、无人机场景分析和机器人视觉等。随着用于检测任务的深度学习网络的快速发展,目标检测器的性能得到了极大的提高。

目前基于深度学习的目标检测方法主要分为一阶段(one stage)和二阶段(two stage)两种。二阶段检测算法将检测任务分为两部分,分别是候选样本的选取、对候选样本包含目标的分类及定位,具有较高的定位和目标识别精度,但速度相对较慢,代表性算法有Fast R-CNN、SPPNet、Faster R-CNN等;而一阶段检测器巧妙设计了网络结构和实现策略,能够实现从图像到检测结果端到端的目标检测,具有较高的推理速度,代表算法主要有YOLO、SSD、RetinaNet等。

二、Sparse R-CNN简介

Fast R-CNN算法利用选择性搜索(Selective Search)来进行region proposal,由于其计算量巨大且无法进行端到端的训练,因此在Faster R-CNN算法中提出了用RPN(Region Proposal Network)来取代选择性搜索算法,取得了巨大的成功。
但是,采用RPN的Faster R-CNN框架也存在一些缺点,它的超参数较多不容易调整,需要小心地平衡RPN和Fast R-CNN的训练过程,和大部分一阶段目标检测器一样,需要设置密集的anchor并通过复杂后处理和NMS(Non-Maximum Supression)来完成推理。
由下图可见,(a)、(b)分别是RetinaNet和Faster R-CNN的网络结构图,它们都需要预先设定密集的anchor作为目标选取的依据,而©图中的Sparse R-CNN结构并不需要这一操作。
Sparse R-CNN论文汇报_第1张图片
Sparse R-CNN主要有以下四个改进:
1)Sparse R-CNN最大的特点是在Faster R-CNN结构中去掉了RPN,换成了N个可学习的proposal box。为弥补这一操作带来的性能降低,更好地提取每个bbox实例的特征,还同时引入了可学习的proposal feature,相对于proposal box提供的粗糙的RoI(Region of Interest)信息,它可以进一步表征物体属性例如姿态和形状等。proposal feature需要和RoI特征进行动态交互来发挥作用,在原文中这一操作叫做dynamic instance interaction。proposal feature的作用类似于DETR中的object query。
2)Sparse R-CNN参考了DETR中的点集预测做法,在模型结构层面抑制对目标的重复预测;而且因为去掉了RPN模块,也就不需要设置anchor,这样就省去了复杂的后处理和NMS操作。
3)引入了自注意力(self attention)模块,用于捕捉各个目标之间的关联。
4)还引入了类似Cascade R-CNN中级联refine的思想,可以提高整体性能。由于Sparse R-CNN的稀疏特性,进行级联后并不会增加太多计算量。

三、Sparse R-CNN结构

Backbone

网络backbone采用基于ResNet的FPN(Feature Pyramid Network)架构,可以提供多尺度的融合特征。

Learnable proposal box

在经典的Faster R-CNN结构中,proposal box由RPN模块给出:RPN模块根据输入特征图,在anchor boxes基础上生成密集的预测边界框,再通过NMS进行过滤,最终得到proposal boxes。
在Sparse R-CNN中,去掉了RPN模块,proposal boxes直接由N×4(N=100)个可学习的参数表示,如下图所示。
Sparse R-CNN论文汇报_第2张图片
这些proposal boxes在训练过程中是可以不断学习并更新的,相对于RPN模块,这些边界框较为粗糙,它反映的是目标出现位置的统计信息。下图是这些边界框的可视化效果,可以看到它们倾向于填充满整个图像,且在中间位置较为密集,这与实际数据集中的目标分布有关。这样的边界框其实和人为设定的anchor box有些类似,不过这些边界框更加灵活,更符合深度学习方法端到端、自适应的优点。由于边界框可学习的特性,模型整体框架会更加灵活,很大程度上消除了初始化方法的不同对结果的影响。
Sparse R-CNN论文汇报_第3张图片

Learnable proposal feature

proposal box仅提供了目标的大致位置,并不能表征目标的细节信息,如目标的姿态和形状等。因此作者引入了learnable proposal feature这一概念,它是N个长度为d(d=256)向量,与N个proposal box一一对应,同样都是可学习的参数。这些proposal feature维度较高,可以编码丰富的实例特征,弥补边界框对目标描述的不足。

Dynamic instance interaction

上文提到的proposal feature需要和RoI特征进行动态交互来发挥作用,具体方法如下图所示。
N个RoI特征分别由N个proposal box通过RoIPool或RoIAlign在特征图中提取得到,然后这些RoI特征会分别和对应的proposal feature进行动态交互,最终被用于预测目标类别及位置。
作者还提出了Dynamic Instance Interactive Head这一概念,以上过程可以理解为每个RoI特征会分别进入到各自的head中,进行目标位置和类别的预测。这些head是动态的,分别在对应proposal feature的基础上产生,不同proposal feature会产生不同的head。
Sparse R-CNN论文汇报_第4张图片
下图为动态实例交互(dynamic instance interaction)的伪代码。
其输入为proposal features和roi features,形状分别为(N,C)和(N,S×S,C),一般情况下N=100,C=256,S为RoI特征图的大小。
首先proposal features会经过一个线性映射(linear projection),生成的向量作为动态的参数,与roi features进行交互;这里的交互形式是两个1×1卷积层,即之前生成的动态参数作为两个1×1卷积层的参数,对roi features进行卷积操作,根据1×1卷积的特点,这里会把roi feature中作用不大的channel滤除掉,突出有效位置;最后,再对输出进行一次线性映射得到object features,用于后续目标位置及类别预测。
这里的动态交互具体如何实现并不重要,但是为了提高效率需要支持并行操作。
Sparse R-CNN论文汇报_第5张图片

Set prediction loss

对于模型给出的N个(N=100)目标预测结果,首先要和真实结果之间进行双边匹配(bipartite matching)。定义匹配时的损失为下式,则可以利用匈牙利算法(Hungarian algorithm)寻找使损失最小的一种匹配方式。最后根据最佳匹配结果来计算本次预测的损失值用于反向传播,这里的损失和匹配时的损失可以不同。
在这里插入图片描述
Sparse R-CNN论文汇报_第6张图片

四、Sparse R-CNN性能比较

相对于其他方法,Sparse R-CNN精度更高且收敛更快
Sparse R-CNN论文汇报_第7张图片
COCO 2017 val,相对于DETR训练更加容易
Sparse R-CNN论文汇报_第8张图片

Iterative(借鉴Cascade R-CNN)结构和Dynamic Head对结果的影响
Sparse R-CNN论文汇报_第9张图片

Dynamic Head中self-attention模块和Instance interaction对结果的影响
Sparse R-CNN论文汇报_第10张图片

你可能感兴趣的:(神经网络,计算机视觉,目标检测)