【论文阅读】【二维目标检测】Revisiting Feature Alignment for One-stage Object Detection

文章目录

  • AlignDet
    • Pilot Experiment
    • RoIconv
      • Im2Col & RoIAlign
      • RoIconv
    • AlignDet
    • 实验
  • 作者在知乎上的回答

该论文解决在one-stage模型中的feature与proposal不匹配的问题,论文的研究的问题,研究的思路在文章中已经解释的非常好。

AlignDet

作者提到了One Stage模型的一个问题是,当使用多个anchor时,同样的feature预测不同anchor所产生的box,这样子破坏了feature与预测结果一对一的性质。
“Sharing feature for multiple anchor boxes violate the one-to-one correspondence between reference boxes and features, which breaks the strict location sensitivity of object detection.”

本文要解决的一个问题是:
"One-stage detectors suffer most from the misalignment due to the lack of explicit alignment operations like RoIPooling in two-stage detectors. "

Pilot Experiment

本文首先对比了One-Stage和Two-Stage模型是否使用多stride的feature map进行预测,anchor的总数量的总的scale不变,结果如下:
【论文阅读】【二维目标检测】Revisiting Feature Alignment for One-stage Object Detection_第1张图片
结果显示,Two-Stage的方法受到的影响不大,而One-Stage的方法效果严重下降。作者提出,可能是因为One-Stage模型中不存在Align Pooling的操作,使得feature与box不匹配,难以预测。
" We hypothesize that the misalignment of features and anchor boxes leads to the catastrophic performance degradation."

RoIconv

Im2Col & RoIAlign

Im2Col是把某个位置的卷积核对应的feature map的区域展开成为1列,具体操作可见https://blog.csdn.net/dwyane12138/article/details/78449898

本文阐述Im2Col是一种特殊的RoIAlign,经过公式对比,求解在RoIconv中的offset。但我认为这个解释其实并没有太大帮助,直观的去理解反而更容易一些。

RoIconv

RoIconv可以认为是deformable conv的一种,只不过RoIconv的offset不是学习出来的,而是直接通过learned anchor计算出来的。将传统的卷积核通过offset将其变为anchor大小的卷积核。所以RoIconv可以认为其实就是在将anorchor区域提取出来,然后进行卷积。这个操作模糊了One-Stage和Two-Stage的界限,这个操作与RoIAlign是非常相似的。

AlignDet

【论文阅读】【二维目标检测】Revisiting Feature Alignment for One-stage Object Detection_第2张图片
DPM相当于是一个Retinanet,使用单stride的feature map和单个scale的anchor,来学习learned anchor(proposal)。然后通过RoIConv提取每个learned anchor对应区域的特征,然后送入分类头和回归头。ADM的具体结构为:
“our ADM is simply a 1024c 7 × 7 RoIConv followed by a 1024c 1 × 1 convolution”


知乎上有一篇讲的比较好
作者:kwduan
链接:https://www.zhihu.com/question/338959309/answer/780051681
整个过程是anchor回归两次,anchor第一次回归得到的咱们按论文里说的叫learned anchor,然后learned anchor再回归一下,这样回归出来的框会更加准确,这也是RefineDet做的事情,但是RefineDet做到这一步还不够完美,因为RefineDet两次回归用的特征都是与RoI不对齐的特征(虽然第二次时利用反卷积结合了高维特征)。咱们画个示例图说明一下:【论文阅读】【二维目标检测】Revisiting Feature Alignment for One-stage Object Detection_第3张图片黄色框是anchor,红色是GT,紫色是learned anchor,由anchor回归到learned anchor是用feature map上黑色特征点这一特征(D维向量)做的,而这一黑色特征是使用的灰色卷积核在其相邻的9个点做卷积得到的,这9个相邻的点所组成的区域映射到原图,也就是原图中灰色区域这一部分,换句话说,这一黑色特征的全部信息基本都来自于原图的灰色部分,但是显然,这一灰色区域并没有完全包含整个长颈鹿,用这一区域所得到的特征去预测一个完整的长颈鹿,肯定有一点问题。这就是特征与RoI不对齐的意思。这里的RoI实际上就是learned anchor。那怎样才能将特征与RoI对齐,这就是AlignDet要做的事。第一步跟RefineDet一样,先将初始的anchor回归得到learned anchor。这个时候learned anchor其实已经比较接近GT了。第二步,就是跟RefineDet不同之处了,RefineDet还是使用的不对齐特征再把learned anchor回归一次,而AlignDet是用的对齐的新特征。怎么做到对齐的?如下图:【论文阅读】【二维目标检测】Revisiting Feature Alignment for One-stage Object Detection_第4张图片把第一次用的特征再用deformable conv卷一下,当卷积核卷到黑色位置的时候,卷积核加上此位置给定的offset,于是卷积核的形状就变成浅红色的9个点,这九个点所组成的区域映射回原图就是learned anchor的包含区域。这样的话,经过deformable conv所得到的特征就是对齐的了。那么他咋能保证卷积核加上offset就正好是learned anchor 包围区域的?原因是这里的offset是根据learned anchor与卷积核的位置差算出来的。因此RoIConv实质上是一种offset已知的


实验

  • 首先在单stride的feature map和单个scale的anchor的Retinanet中的P4后按照设定的anchor的大小加入了3*3的RoIConv,效果提升了5个点,证明了RoIConv的有效性。
  • 对比了AlighDet与多scale多anchor的Retinanet,效果有提升。
  • 在Ablation Study中对比了不同的Feature Alignment,Label Assignment和RoI Convolution Design的不同方式。(Label Assignment有点没看懂,是不是说在ADM中,与GT box的IoU在一个较高的阈值之上的anchor才认为是前景?)

作者在知乎上的回答

https://www.zhihu.com/question/338959309/answers/updated

作者:Roger Chern
链接:https://www.zhihu.com/question/338959309/answer/780536872
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

首先感谢大家对我们工作的关注,本来出结果之前都不准备放 paper 的,但是最近有一些相似的工作,比如 王剑锋 提到的 P&A 挂出来了,所以还是放出来。整个工作的思路还是沿着 refinedet -> guided anchoring 过来的,兼有吸收了一些 cascade r-cnn 的思想。做这个工作一方面是想解决 anchor 和 feature 对不齐的问题,另一方面也是想阐述 one-stage 和 two-stage 的区别并没有想象中的大(paper 另一个候选名字叫 bridging one-stage and two-stage detection)。其实一旦讲清楚了 im2col 和 roialign 的关系之后,如何去弥合 one-stage和 two-stage 在 alignment 上的差别就已经显而易见了。选择 7x7 RoIConv 和 1x1 1024c 的 feature 是为了尽可能的对齐 FPN Faster R-CNN,由于 1x1 卷积不会扩散 roi feature ,从而保持每个 region feature 的独立性,这样就和 R-CNN head 完全一致了。Aligndet 和 Faster R-CNN 的区别也就仅仅剩下 dense prediction + focal loss 对上 balanced sampling prediction 了。仔细研究了一下 reppoints,发现虽然 motivation 大不相同,但是最后大家确实殊途同归。对于 table 7 里 RPDet 不是 multi-scale training 表示确实疏忽了,误以为和其他 retinanet-based method 用的相同的 protocol,后续会更新一版 paper。在这里对 B1ueber2y 以及其他作者表示歉意,也期待你们在新一版的论文里更公平的比较。另一方面,我们对点数这个东西其实没有特别关注,诸如 GN/SyncBN,用 YOLO/FCOS 这类更好的 assign 策略,回归单独用大一点的头,smooth_l1 换成 l1,同等 FLOPs 下换 depthwise 涨点/降计算量这些方法我们都有意回避了。如果大家能从 ablation 分析里获得一些 insight,就是对我们工作最大的鼓励。谢谢。

你可能感兴趣的:(论文阅读)