Sparse R-CNN

关于稀疏 R-CNN 的理论整理。

Sparse R-CNN

1 介绍

图-1 目标检测的两大类方法

目标检测领域中主流的两大类方法:

  • Dense Detector:常见的算法有 DPM、YOLO、RetinaNet 等,在 Dense Detector 中, 大量的 object candidates 如 sliding-windows、anchor-boxes、 reference-points 等被提前预设在图像网格或者特征图网格上,然后直接预测这些 candidates 到 GT 的 scaling/offest 和物体类别。
  • Dense-to-Sparse Detector:常见的如 R-CNN 算法家族,这类方法的特点是对一组 sparse candidates 预测回归和分类,而这组 sparse candidates 来自于 Dense Detector。

Sparse R-CNN 避免了人工设置候选框的大量超参数以及多对一的正负样本分配。更重要的是,最终的预测结果可以直接输出而不需要 NMS(非极大抑制)。

2 Sparse R-CNN

Sparse R-CNN 的 object candidaes(proposal)是一组可学习的参数,大小为 N×4N\times4NN 代表 object candidates 的个数,一般为 100~300,4 代表物体框的四个边界。这组参数和整个网络中的其他参数一起被训练优化。这个过程没有 Dense Detector 中大量的枚举(如 anchor),这组 object candidates 作为 proposal boxes 用于提取 RoI,预测回归和分类。

这组学习到的 proposal boxes 可以理解为图像中可能出现物体的位置的统计值,但这些表征提取出的的 RoI feature 显然不足以精确定位和分类物体。于是,Sparse R-CNN 引入了一种特征层面的 candidates,proposal features,大小为 N×dN\times dNN 是 object candidates 的个数,与 proposal 一一对应,dd 代表 feature 等维度,一般为 256,proposal features 也是可学习的参数。proposal features 与 proposal boxes 提取出来的 RoI feature 做一对一的交互,从而使得 RoI feature 的特征更有利于定位和分类物体。Sparse R-CNN 将此设计称为 Dynamic Instance Interactive Head。

图-2 Sparse R-CNN 的检测头

Sparse R-CNN 的检测头如上图所示,与 R-CNN 十分类似,对比下图的 Faster R-CNN 结构,可以得到一些不同:

图-3 Faster R-CNN 的结构
  1. Sparse R-CNN 没有 RPN 结构,proposal boxes 不是由 RPN 产生, 而是一组预设的可学习参数。用一个 4 维向量能表示一个 object candidates,N×4N\times4 等向量就是预设零 NN 个可学习 anchor。
  2. Sparse R-CNN 第一步将输入 image 和 proposal boxes 融合,相当于用 NN 个方框从原始 image 抠图后对齐,对应于 Faster R-CNN 的 RoI Pooling 操作。
  3. 将 RoI 区域抠出后,Sparse 并没有简单地连接两个全连接层,而是与 proposal features 再做一次卷积,然后接两层全连接层做分类和回归。

网络公式:

image+proposal boxes (fusing)RoIsRoIs+proposal features (fusing)predictions\begin{aligned} &image + proposal\ boxes \text{ (fusing)} \rightarrow RoIs\\ &RoIs + proposal\ features \text{ (fusing)} \rightarrow predictions \end{aligned}

图-4 RoI 与 proposal feature 融合

3 可学习的 proposal boxes 和 proposal feature

proposal box 和 proposal feature 是网络中要学习的重要参数。两者的数目相同(都为 NN)且一一对应,每一个 proposal box 得到的 RoI 只和它对应的 proposal feature 做进一步的融合。

  • proposal box 是一个 4 维的向量,代表一个方框(目标位置),其学习的内容可以理解为物体位置的统计量。
  • proposal feature 是一个高维的向量(比如 256),它蕴含着与其匹配 proposal box 对象的更为深层次的更抽象的信息。因为 proposal box 只记录了对象的位置信息,对于其他更为抽象的细节信息完全丢失了。proposal feature 是为了丰富 proposal box 对象的特征信息。

4 Dynamic Instance Interactive Head

从上面的介绍,proposal box、RoI、 proposal feature 这三者是绑定在一起的,因此对每个 RoI 都“单独”设置一个检测头,这样 NN 个 proposal boxes 就有 NN 个检测头(如上图-4)。

检测头输出 NN 个 proposal boxes,使用 Hungarian 算法与目标 targets 建立二分匹配图。如下图,生成了 3 个 proposal boxes,GT 中只有两个 targets。没有目标的 proposal boxes 与一种特殊的类别 no object 相匹配。(图中绿色 box)

图-5 N 个 boxes 与 M 个 targets 的二分图匹配

对每一对 box-target,相匹配的损失函数为:

L=λclsL+λL1LL1+λgiouLgiou\mathcal{L} = \lambda_{cls} \cdot \mathcal{L} + \lambda_{L1} \cdot \mathcal{L}_{L1} + \lambda_{giou} \cdot \mathcal{L}_{giou}

参考

源码