理解目标检测里的Anchor-based和Anchor-free

导读

目标检测模型按照anchor划分可分为两类:anchor-based、anchor-free
其中,anchor-based的代表算法有:faster r-cnn、ssd、retinaNet、yolo v2、yolo v3…
anchor-free的代表算法有:yolo v1、CornerNet、CenterNet…

anchor based

目前主流的目标检测算法多是anchor-based这一类,其中有two-stage也有one-stage。所谓的anchor是什么?说白了就是事先通过手工或聚类方法设定好的具有不同尺寸、宽高比的方框。这些方框覆盖了整张图像,目的是为了防止漏检。在模型训练过程中,根据anchor与ground truth的IoU(交并比)损失对anchor的长宽以及位置进行回归,使其越来越接近ground truth,在回归的同时预测anchor的类别,最终输出这些回归分类好的anchors。two-stage方法要筛选和优化的anchors数量要远超one-stage方法,筛选步骤较为严谨,所以耗费时间要久一些,但是精度要高一些。在常用的检测基准上,SOTA的方法一般都是anchor-based的。

  • One-Stage
    One-Stage的思想是将图像划分为S×S的小格子,即直接在特征图上对anchor进行回归以及类别预测。这样的做法避免了随机搜索得到region proposal,也避免了重复卷积运算,所以计算效率很高,检测速度非常快,但是由于缺乏搜索region proposal(即背景筛选),导致精度不是很高,还有一个原因就是图像中的小物体或者图像中挨得很近的多个物体会造成漏检。随着one-stage方法的不断优化迭代,很多性能优异的Backbone和Tricks被提出,比如CSPDarknet、各种数据增强(Mosaic…)、FPN、SPP等等,他们都可以在牺牲些许检测速度的同时(甚至不牺牲)提升检测精度。现在one-stage方法的精度已经达到了与two-stage具有竞争性的结果。
  • Two-Stage
    Faster r-cnn 的出现确立了two-stage、anchor-based 检测器的主导地位。Faster r-cnn由一个 rpn 网络和一个 region-wise 的预测网络(R-CNN)组成,然后预测目标。之后,人们又提出了许多的算法来提升其表现,包括结构重新设计、注意力机制、多尺度训练、训练策略和损失函数、特征融合和增强、候选框平衡等。目前在标准的检测基准上,SOTA的结果仍然被双阶段anchor-based方法统治。

anchor free

由于FPN和Focal Loss的出现,有效解决了特征语义信息不足和正负样本不均衡的问题,又涌现出了一批anchor-free的算法。anchor-free检测器以两种不同的方式检测物体,一种是首先定位到多个预定义或自学习的关键点,然后约束物体的空间范围,称为Keypoint-based方法;另一种是利用中心点或中心目标区域来定义正样本,然后预测其到目标四个边的距离,称为Center-based方法。anchor-free的方法使得目标检测的流程进一步精简,减少了相关超参数,使得网络搭建训练更简便,泛化能力也更强。

  • KeyPoint-based
    这类 anchor-free 方法首先定位到预先定义或自学习的关键点,然后生成边框来检测物体。CornerNet 通过一对关键点(左上角和右下角)来检测物体的边框,CornerNet-Lite 引入了 CornerNet-Saccade 和 CornerNet-Squeeze 来提升其速度。Grid R-CNN 的第二个阶段利用FCN的位置敏感的优点来预测网格点,然后再判断边框、定位物体。ExtremeNet 检测物体的4个点(最上面、最左面、最下面、最右面)以及一个中心点来生成物体的边框。Zhu 等人利用关键点估计来找到物体的中心点,然后回归出其他的属性,包括大小、三维位置、朝向、姿态等。CenterNet 扩展了CornerNet,通过三个点而不是两个点来提升精度和召回率。RepPoints 将物体表示为一个样本点的集合,通过约束物体的空间范围、强调语义重要的局部区域来学习。

  • Center-based
    这类方法将物体的中心区域(中心点或区域)看作为前景,定义正样本,然后预测它到物体四个边的距离。YOLO 将图像分割为S×S个网格,如果物体的中心点落在了某网格内,该网格就要负责检测该目标物体。DenseBox 利用物体中心位置的圆圈区域来定义正样本,然后预测该圆圈到物体边界的四个距离。GA-RPN 将物体中心区域的像素点定义为正样本,为 Faster R-CNN 预测物体候选框的位置、宽度和高度。FSAF 在 RetinaNet 之上加了一个 anchor-free 的分支和在线特征选取机制,这个分支将物体的中心区域定义为正样本,利用它到物体的四个边的距离来定位它。FCOS 将物体边框内的所有位置都定义为正样本,然后通过4个距离值和1个 centerness 分数来检测物体。CSP 只将物体的中心点定义为正样本,通过固定的 aspect ratio 来检测行人。FoveaBox 将物体的中间部分位置定义为正样本,每个位置有4个距离来进行检测。

总结

以上总结了当前目标检测算法的分类情况(根据有无anchor以及检测阶段),分析了anchor-based方法中two-stage和one-stage的优势以及劣势,和anchor-free目前主流的方法,希望大家看后能偶有所收获,觉得有收获可以收藏点赞,同时欢迎大家评论区交流。

参考引用

https://zhuanlan.zhihu.com/p/139476476

猜你喜欢

转载自blog.csdn.net/Just_do_myself/article/details/118520732