目标检测算法中,feature map和anchor的对齐问题是普遍存在的,表现为以下三个方面内容:

(1)同一个感受野对应多个anchor:对于feature map上的任意一个点,其感受野是相同的,但却对应了多个大小不同的anchor。

(2) one-stage目标检测算法直接使用未修正的特征:在two-stage的目标检测算法中,RPN提取proposal后,通过roi-pooling或者roi-align在feature map上对应的的位置提取特征,这个时候新的特征和对应的proposal是对齐的。而在One-stage的目标检测算法中,因为只有一级,所以仍然使用原来的feature用于分类。因而存在anchor 和 feature 的位置对齐的问题。

(3)遮挡场景中特征不对齐:真实场景中可能会出现遮挡的情况,而遮挡物会生成过高的得分区域,从而抑制了周围的被遮挡目标的得分区域。如下图所示,右上角是不对齐的特征。




目标检测特征图可视化 目标检测 特征对齐_tensorflow2 目标检测


1 相关研究

对于Feature Alignment第一种不对齐,AlignDet这篇文章以Faster RCNN和RetinaNet的对比实验为例做了一些实验,结果如下图所示。Faster RCNN去掉FPN后,仅在C4上铺置anchor,AP仅下降2%,而RetinaNet如果仅在P4上回归所有的anchor,下降了12个点。说明one-stage中的不对齐的问题是非常明显的,而FPN是有助于缓解对齐这个问题的。


目标检测特征图可视化 目标检测 特征对齐_tp5 中->where 包含_02


而第二种不对齐的解决办法,大概从CVPR 2018 的RefineDet开始,就出现了很多讨论disalignment 问题的文章,但大都采用在refinement和cascade的思路,即:预定义的 anchors 作为第一阶段的输入,然后加入回归偏移量来生成新的边框,作为下一阶段的输入。相关的论文如下。

  • 【CVPR 2018】RefineDet:Single-Shot Refinement Neural Network for Object Detection

论文链接:https://arxiv.org/abs/1711.06897

RefineDet引入了ARM模块,用于在移除负样本anchors以便为分类器减少搜索空间,并粗略调整 anchors 的位置和大小,以便为随后的回归器提供更好的初始化结果。

  • 【arXiv 2019】Consistent Optimization for Single-Shot Object Detection

论文链接:https://arxiv.org/abs/1901.06563

作者解读:taokongcn:目标检测中的Consistent Optimization

思路很直接,就是在从default anchor得到refine anchor以后,对于refine的anchor,还会再来一次bounding box regression。如下图所示, A1之后要进行iou计算,与GT做match,生成C2、A2,再做一次推理。而优化目标上也加入了回归后的anchor。


目标检测特征图可视化 目标检测 特征对齐_目标检测特征图可视化_03


  • 【BMVC 2019】Cascade RetinaNet: Maintaining Consistency for Single-Stage Object Detection

论文链接:https://arxiv.org/abs/1901.06563

通过引入FCM,也是利用deformable convolution 将original特征修正至新的位置。


目标检测特征图可视化 目标检测 特征对齐_tp5 中->where 包含_04


  • 【CVPR 2019】GA-RPN:Region Proposal by Guided Anchoring

论文链接:https://arxiv.org/abs/1901.03278

作者解读:陈恺:Guided Anchoring: 物体检测器也能自己学 Anchor

第一部分是Anchor generation,用于预测这个位置是否是物体的中心,和以这个位置为中心的anchor的长和宽,也就是位置预测和形状预测。第二部分是Feature adaptation,用于解决anchor和其对应的feature不对齐的问题先利用一个 3x3 的 deformable convolution 来修正原始的特征图,而 deformable convolution 的 offset 是通过 anchor 的 w 和 h 经过一个 1x1 conv 得到的。通过这样的操作,达到了让 feature 的有效范围和 anchor 形状更加接近的目的。

  • 【arXiv 2019】AlignDet:Revisiting Feature Alignment for One-stage Object Detection

论文链接:https://arxiv.org/abs/1908.01570

通过了数学形式上的推导,引入了RoIConv,等效了RoIAlign,从而实现了修正特征图的目的。


目标检测特征图可视化 目标检测 特征对齐_目标检测特征图可视化_05


对于第三种不对齐,SAPD[1]通过对anchor points做软加权,就是label assign的进行优化,减少对靠近边界包含大量背景信息的锚点的关注。将目标实际位置与anchor的中心的距离作为一个anchor的惩罚权重,加入到损失函数的计算中(仅针对正样本,负样本不做改动)。公式如下:


目标检测特征图可视化 目标检测 特征对齐_tensorflow2 目标检测_06


其中,η控制递减幅度,权重


范围为0~1,公式保证了目标边界处的points权重为0,目标中心处的 ponit 权重为1。效果如下图右下角图例。


目标检测特征图可视化 目标检测 特征对齐_tensorflow2 目标检测


2 总结

第一类Feature Alignment其实还可以通过context module等粗暴优化方法,而第二类Feature Alignment是one stage和two stage检测器之间性能差异的一个很重要的原因,也是one stage检测器一个缺陷。这两类不对齐是anchor box先验带来的,而在anchor point类的方法中,就不是那么明显。第三类不对齐是和场景有关的,是不可避免的。

参考文献:

[1] Zhu C, Chen F, Shen Z, et al. Soft anchor-point object detection[J]. arXiv preprint arXiv:1911.12448, 2019.

推荐阅读:

  • Anchor box:
  • Anchor作用:目标检测Anchor的What/Where/When/Why/How
  • SSD/Faster RCNN/YOLOv3-v5 中Anchor编解码:目标检测中的Anchor机制回顾
  • Anchor free:
  • 目标检测中的Anchor-free回顾
  • DETR:
  • DETR: Postprocessing-free Detector
  • 目标检测中的一些问题:
  • 目标检测中的Feature Alignment
  • NAS for Detection:
  • 总结:NAS for Detection
  • Semi-Supervised Object Detection:
  • Semi-Supervised Learning for Object Detection