漫谈Anchor-based和Anchor-Free

曾几何时,Anchor-based独霸目标检测这块CV疆域内的肥沃之地。如今,Anchor-Free以其灵活的走位在目标检测中有了一席之地,正以星星之火可以燎原之势扩大着自己的声势。

Anchor-based感叹道:后生可畏啊!不过,小子你想扳倒我现在还有些嫩哈哈哈~

话不多说,进入正题。

anchor-based和anchor-free关键区别:anchor-based基于预设的若干固定尺度和长宽比的anchor生成预测框,anchor-free基于点生成预测框。

有些人将anchor-free与双阶段(Fast-RCNN等)、单阶段(YOLO系列等)并列,作为新出的第三类检测器,个人感觉这种说法是不妥的,双阶段和单阶段的划分依据为是否基于候选区域生成预测框,即是否使用了RPN。因此,个人认为anchor-based和anchor-free是与双阶段和单阶段并行的一种划分方式。

最近读了知乎上一篇两年前的文章,觉得写得蛮好,于是整理并稍作补充,一起分享。

anchor-based:

两阶段检测器的第一阶段通常采用 RPN 生成 proposal,是对 anchor 进行分类和回归的过程,即 anchor -> proposal -> detection bbox

大部分单阶段检测器是直接对 anchor 进行分类和回归,也就是 anchor -> detection bbox

常见的生成 anchor 的方式是滑窗(sliding window),也就是首先定义 k 个特定尺度(scale)和长宽比(aspect ratio)的 anchor,然后在全图上以一定的步长滑动。

anchor-free:

之所以可与anchor-based相提并论,这得益于FPN和Focal loss。在每个位置只预测一个框的情况下,FPN 的结构对尺度起到了很好的弥补;由于图像中一般目标数较少,Focal loss可以解决中心区域的类别不平衡(中心区域与背景相当于二分类)的问题。

(1)预测一个中心点的score或者将定义一个hard的中心区域将中心预测融入到类别预测的 target 里面,然后预测该中心点到 ground truth 框的四条边距离,不过会使用一些 trick 来限制 regress 的范围。

(2)采用“bottom up”的思路,首先生成带有类别信息和位置信息的“feature map”,然后再根据这些“feature map”,得到关键点再组合成最后的“bounding boxes”,即预测corner的heatmps,根据Embeddings vector对corner进行分组,核心是关键点定位组合。

(3)anchor-free 和每个位置有一个正方形 anchor (即single anchor)在形式上可以是等价的,也就是利用 FCN 的结构对 feature map 的每个位置预测一个框(包括位置和类别)。但是实际操作中两者是有区别的。在 anchor-based 的方法中,虽然每个位置可能只有一个 anchor,但预测的对象是基于这个 anchor 来匹配的,而在anchor-free的方法中,通常是基于这个点来匹配的。

anchor-free的局限性

和 anchor-based 的单阶段检测器一样,instance-level 的 feature representation 是不如两阶段检测器的,在 head 上面的花样也会比较少一些。

anchor-based和anchor-free间的过渡:

在anchor-based和anchor-free之间,有Guided Anchoring,这可以看做是 anchor-prior-free,但是整体框架保持与 anchor-based 一致,生成自适应的anchor(中心点的位置和anchor的宽高均不是预先设定,而是预测的,因此anchor是稀疏的,但不是一个中心区域只有一个anchor)。可以插入到anchor-based,类似于在首先进行 anchor-free 的预测,然后以预测结果作为 anchor 进行进一步地修正。

anchor-free的展望:

因为anchor-free天生和segmentation更加接近。一个是向两阶段或者级联检测器靠拢,进一步提高性能,如果能在不使用 RoI Pooling 的情况下解决 feature align 问题的话,还是比较有看头的。另外还有一个是新的后处理方法。

主要参考:

[1] 物体检测的轮回: anchor-based 与 anchor-free - 知乎

[2] Guided Anchoring: 物体检测器也能自己学 Anchor - 知乎

后话:最近针对旋转框的anchor-free出了一些比较新颖的研究(遥感目标检测领域),感兴趣的话可以一起交流一下哈!

你可能感兴趣的:(#,目标检测,深度学习)