目标检测论文阅读:Grid R-CNN算法笔记

标题:Grid R-CNN
会议:CVPR2019
论文地址:https://ieeexplore.ieee.org/document/8953602/
这篇文章理解起来并不难,但是具体是如何操作的,还是要结合代码来进一步理解。很多地方虽然可以get到作者的想法,但是有一种一知半解的感觉,不知道实现起来要怎么做。

Abstrct

这篇文章提出了一种非常新颖的、利用网格引导定位机制的目标检测框架,命名为Grid R-CNN。不同于传统的基于回归的方法,Grid R-CNN会使用位置敏感的全卷积结构来捕获空间信息。本文用多个网格点共同监督的方式来减少只用两个点定位(bbox的左上角和右下角)带来的预测误差影响。本文提出了一种两阶段的信息融合方式,将相邻网格点的特征图进行融合来充分利用网格点的相关信息。这种网格引导定位的方法可以很方便地嵌入到不同的主流目标检测模型中。实验证明,Grid R-CNN可以实现高质量的目标定位。

1. Introduction

经典的目标检测模型在bbox回归时都是类似的采用全连接层去预测要修正的坐标偏移。这篇文章将这些全连接层替换成了一种网格点引导的定位机制,用全卷积网络来预测位置的网格点。由于全卷积结构的位置敏感特性,Grid R-CNN可以在像素级别获得网格点位置。如图所示,只要确定了一些网格点,就能确定bbox。这种方法可以比基于回归的方法更精确地预测bbox,后者缺少空间信息的指导。
目标检测论文阅读:Grid R-CNN算法笔记_第1张图片
一个bbox有4个自由度,由两个点就足以实现定位(左上角和右下角)。然而,这两个点并不能很好地反映局部特征,因为这两个点的附近可能都是背景,并没有包含前景信息。所以可以用多个点共同指导bbox的位置,比如,右上角的点附近都是背景,可以用右中的点来进行修正边界,因为右中的点附近是有目标信息的。
此外,本文还提出了一种信息融合方式来使充分发挥网格点的相关性。对于每一个网格点,都有一组独立的特征图相对应,将它们与相邻网格点的特征图们进行融合就可以获得integrated feature map。这样,每个网格点都可以获得相邻网格点补充的空间信息,从而实现更加精确的检测。
本文在COCO数据集上做了大量实验来证明有效性,尤其是在IoU设置更加严苛的情况下,Grid R-CNN的提升更加明显。本文的主要贡献可以总结如下:

  1. 提出了Grid R-CNN,把传统方法中的全连接层替换成了全卷积层来充分保留空间信息。Grid R-CNN是第一个基于像素级网格点进行定位的两阶段目标检测模型。
  2. 设计了一种多点定位的方式来减少某些点预测不准带来的影响,并且提出了一种特征图融合的方式:合并在空间上具有相关性的网格点的特征,来校正网格点的位置。
  3. 证明了Grid R-CNN可以适用在不同网络中,并且都能获得提升。尤其是在更严格的IoU=0.75标准下,Grid R-CNN的表现更好,说明了其优越性。

2. Related Works

回顾了一些两阶段目标检测模型,并说明了Grid R-CNN和LocNet、CornerNet的不同之处。

3. Grid R-CNN

目标检测论文阅读:Grid R-CNN算法笔记_第2张图片
Grid R-CNN的整体结构如上所示,它使用网格引导定位机制来取代传统的回归偏移的方式。网络的预测分支采用全卷积网络,它输出一个空间分布概率热图,从中可以确定用来定位物体的、和bbox对齐的网格点。有了这些网格点,就可以通过特征图信息融合确定最终的bbox。

3.1 Grid Guided Localization

我们设计了一个N × N的网格形式的目标点对齐在目标的bbox中,一种典型的3 × 3的情况如上所示,由四个角落点、四个边中点和一个最中心的点组成。每个由RoIAlign获取的proposal的特征都会固定到14 × 14大小,然后接8个3×3空洞卷积来增大感受野。之后,使用两个2 × group的反卷积来将其分辨率增大到56 × 56。
也就是说,网格预测分支会输出N × N个分辨率为56 × 56的热图,然后使用一个像素级的sigmoid函数来获得每个热图对应的概率热图,每个热图都有相应的监督图,由呈交叉形状的5个像素点标记成正位置得到。用二维交叉熵损失来进行优化。
推理阶段,在每个热图上选择置信度最高的像素点并计算其在原始图像上对应的位置作为网格点。公式表示如下:
目标检测论文阅读:Grid R-CNN算法笔记_第3张图片
然后,需要利用这些预测的网格点来确定bbox的四个边界。
目标检测论文阅读:Grid R-CNN算法笔记_第4张图片
上图写的看起来很复杂,实际上很简单,就是对每个边(一共有上下左右四条边)上的网格点进行加权平均来确定最终的bbox位置,比如为了确定上边界,那么就要用到上面三个网格点的y坐标,将它们与相应的概率权重相乘相加后得到的值便是上边界的位置。

3.2 Grid Points Feature Fusion

网格点的空间相关性可以帮助彼此进行校正,减小定位误差,所以设计了一种空间信息融合模块。
直接对坐标取平均,会丢失特征图丰富的信息;对每个特征图上网格点的局部信息进行融合,又会丢失不同特征图潜在的有效信息。以3 × 3的网格为例,对于左上角的标定,与其相邻的(如顶端中点)的左上角区域的特征可能也会提供有效信息。所以本文设计了一种特征图级别的信息融合机制来充分利用每个网格点的特征图。
为了区分不同网格点的特征图,将使用N × N组卷积核来分别对最后一个特征图进行特征提取,并且给予它们对应网格点的中间监督。所以每个特征图都与某个网格点建立联系,一个网格点对应一个特征图。
目标检测论文阅读:Grid R-CNN算法笔记_第5张图片

首先,与每个网格点L1距离为1的网格点会与其进行一阶特征融合,具体来说,就是它们的特征图先经过3个5 × 5后,在与该网格点的特征图进行相加:
在这里插入图片描述
以左上角的网格点为例,会有2个网格点的特征图与其本身的特征图进行融合。
进一步,基于上面的结果,用与每个网格点L1距离为2的网格点来进行二阶特征融合,这个过程和上面几乎完全一样,只是参与的点更多了,卷积操作不共享参数,并且每个点用于融合的特征图都是经过了一阶特征融合得到的。以左上角的网格点为例,会有5个网格点的特征图与其本身的特征图进行融合。二阶特征融合后的结果将作为最终的热图用于网格点位置预测。

3.3 Extended Region Mapping

网格预测模块会输出固定分辨率的热图来表示网格点位置的置信度分布。由于使用了全卷积网络,使用保留了空间信息,因此输出的热图也就对应了原始图像中的region proposal。但是,一个region proposal可能并不会包含整个目标,也就是说部分ground truth的网格点会位于这个region proposal之外,从而无法标注在监督图上和在推理过程中预测。
在训练阶段,这些网格点标签的缺失会导致训练样本的利用效率降低。在推理阶段,通过简单地选择热图上的最大像素,如果其对于真实位置在相应区域之外的网格点,则可能会得到完全不正确的位置。在很多情况下,会有超过一半的网格点没被覆盖,如下图所示,白色的建议框比真实框要小,9个网格点中有7个都不会包含在输出的热图中。
目标检测论文阅读:Grid R-CNN算法笔记_第6张图片
如果简单地直接扩大region proposal的范围,那么会引入更多的背景和其它目标的冗余特征,实验证明这样做不仅没有带来增益,反而会损害小目标检测的准确性。
为了解决这个问题,本文通过一种扩展的区域映射方法来修改热图和原始图像的区域映射关系。具体来说,在获取候选区域时,在不扩大候选区域的情况下,仍然从特征图上的同一区域提取RoI特征。同时将输出热图的表示区域重新定义为图像中两倍大的对应区域,这样在大多数情况下所有网格点都被覆盖,如图中虚线框所示。具体公式如下:
目标检测论文阅读:Grid R-CNN算法笔记_第7张图片
这样一来,positive proposals(与ground truth重合率大于0.5)的所有目标网格点都会被热力图的相应区域覆盖。

3.4 Implementation Details

4. Experiments

实验思路比较简单,得到的结果也很显然。消融实验值得注意的就是测试了选取不同数目网格点带来的影响,发现3 × 3 = 9个点的网格得到的结果最好。和SOTA做对比实验,结果也很好,尤其是在IoU大的情况下提升更显著。
通过实验还发现了一个有趣的现象,就是Grid R-CNN对于矩形目标的检测精度提升更高,对于圆形的目标增益较小甚至会下降。因为网格点是呈矩形分布的,因此在矩形目标的主体上会有更多的网格点,而圆形目标没法用其主题覆盖所有的网格点(尤其是在拐角处)。

5. Conclusion

你可能感兴趣的:(目标检测,目标检测,论文阅读,深度学习,计算机视觉,神经网络)