漫谈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出了一些比较新颖的研究(遥感目标检测领域),感兴趣的话可以一起交流一下哈!

  • 2
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Anchor-basedAnchor-free是目标检测中两种不同的方法。 Anchor-based方法是指在图像中使用一组预定义的锚点(anchors),通过对这些锚点进行分类和回归来检测目标。这种方法通常使用卷积神经网络(CNN)来提取特征,并在每个锚点处预测目标的类别和位置。 Anchor-free方法则不需要使用预定义的锚点,而是直接在图像中预测目标的位置和大小。这种方法通常使用一些特殊的网络结构,如CornerNet和CenterNet,来实现目标检测。 两种方法各有优缺点,选择哪种方法取决于具体的应用场景和需求。 ### 回答2: anchor-basedanchor-free是两种目标检测算法的方法。 传统的目标检测算法中,anchor-based是一种常见的方法。它通过事先定义一组候选框(即anchors),并在图像中对这些候选框进行分类和回归。这些anchors通常根据目标的大小和长宽比进行选取。在训练过程中,候选框与真实目标框进行匹配,并计算分类和回归损失。通过这种方式,anchor-based可以有效地检测目标,并确定它们的位置。 相比之下,anchor-free是一种较新的目标检测算法方法。它不需要使用事先定义的候选框,而是直接在图像中无缝地检测目标。anchor-free方法通常通过将目标检测任务转化为像素级分类问题来实现。在训练过程中,模型会学习到每个像素点是否属于目标,并对目标的位置进行回归。由于不依赖于候选框,anchor-free方法可以更灵活地检测各种大小和形状的目标。 总的来说,anchor-based方法在目标检测中具有广泛的应用,并且在经典的目标检测算法中取得了很好的效果。而anchor-free方法则是一种相对较新的方法,具有更大的灵活性和对各种目标形状和大小的适应性。这些方法各有优势和劣势,选择哪种方法要根据具体的应用场景和需求来决定。 ### 回答3: anchor-basedanchor-free是一种用于目标检测的两种不同的方法。 首先,anchor-based方法是一种使用预定义的尺寸和比例的框架来检测目标的方法。这些框架通常称为锚点或锚框,它们在图像中按照一定的规律分布。然后,在每个锚点上,使用CNN(卷积神经网络)模型进行分类和回归,确定目标是否存在以及目标的准确位置。这些锚点作为参考点帮助模型更好地理解目标的不同尺度和形状,并提高目标检测的准确性。常见的anchor-based方法包括Faster R-CNN、SSD和YOLO。 另一方面,anchor-free方法则不使用预定义的锚点来检测目标。相反,它们通过在整个图像中直接回归目标的位置和大小来进行目标检测。这些方法通常需要更加复杂和精细的网络设计,以提供对目标位置的准确预测。由于不需要预定义的锚点,anchor-free方法能够更好地适应任意大小和形状的目标。例如,CornerNet和CenterNet就是常见的anchor-free方法。 总的来说,anchor-based方法将目标检测问题划分为锚点分类和回归问题,而anchor-free方法则通过直接回归目标位置和大小来解决目标检测问题。两种方法各有优劣,并根据不同的应用场景和需求选择合适的方法。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值