anchor-free 和 anchor-based 区别
anchor-free和anchor-based是两种不同的目标检测方法,区别在于是否使用预定义的anchor框来匹配真实的目标框。 anchor-based方法使用不同大小和形状的anchor框来回归和分类目标,例如faster rcnn、retinanet和yolo等。anchor-free,例如fcos、atss和cornernet等。anchor-free方法比anchor-based方法更简单和灵活,但可能存在召回率或定位精度低的问题。
anchor-based
深度学习目标检测通常都被建模成对一些候选区域进行分类和回归的问题。在单阶段检测器中,这些候选区域就是通过滑窗方式产生的 anchor;在两阶段检测器中,候选区域是 RPN 生成的 proposal,但是 RPN 本身仍然是对滑窗方式产生的 anchor 进行分类和回归。
anchor-free
anchor-free是通过另外一种手段来解决检测问题的。同样分为两个子问题,即确定物体中心和对四条边框的预测。预测物体中心时,将中心预测融入到类别预测的 target 里面,也可以预测一个 soft 的 centerness score。对于四条边框的预测,则比较一致,都是预测该像素点到 ground truth 框的四条边距离,不过会使用一些 trick 来限制 regress 的范围。
优缺点
anchor-based
anchor based的优点是可以产生密集的anchor box,使得网络可以直接进行目标分类和边界框回归,提高了目标召回能力,尤其对小目标检测有明显的提升。
anchor based的缺点是需要设定很多超参数,如尺度、长宽比等,这些参数很难设计,并且会影响检测性能。另外,anchor based的方法也会产生很多冗余的框,增加了计算量和内存消耗。
anchor-free
anchor free的优点是不需要预设anchor,只需要对不同尺度的特征图的目标中心点和宽高进行回归,减少了耗时和算力。同时,anchor free的方法也可以避免一些由于anchor设置不合理导致的漏检或重复检测问题。
anchor free的缺点是由于每个位置只预测一个框,可能会导致一些重叠或遮挡区域无法被检测到。另外,anchor free的方法也需要一些特殊的损失函数或结构来提高精度和稳定性。
anchor-free类算法归纳
基于多关键点联合表达的方法
CornerNet/CornerNet-lite:左上角点+右下角点
ExtremeNet:上下左右4个极值点+中心点
CenterNet:Keypoint Triplets for Object Detection:左上角点+右下角点+中心点
RepPoints:9个学习到的自适应跳动的采样点
FoveaBox:中心点+左上角点+右下角点
PLN:4个角点+中心点
基于单中心点预测的方法
CenterNet:Objects as Points:中心点+宽度+高度
CSP:中心点+高度(作者预设了目标宽高比固定,根据高度计算出宽度)
FCOS:中心点+到框的2个距离
anchor-based类算法归纳
anchor(也被称为anchor box)是在训练之前,在训练集上利用k-means等方法聚类出来的一组矩形框,代表数据集中目标主要分布的长宽尺度。在推理时生成的特征图上由这些anchor滑动提取n个候选矩形框再做进一步的分类和回归
anchor-based类算法的代表有fasterRCNN、SSD、YoloV2/V3/V4等。
anchor-based类算法的主要步骤有:生成anchor box,确定正负样本,回归相对偏移量,分类目标类别。
趋势
YOLOv1 | anchor-free |
---|---|
YOLOv2-v6 | anchor-based |
YOLOv7 | anchor-based、anchor-free |
YOLOv8 | anchor-free |
YOLOX是一个新的anchor free目标检测器,它结合了YOLO系列的优点和anchor free机制的简洁性,同时引入了SimOTA样本匹配策略和自适应标签平滑技术,实现了高效和高精度的检测。
AnchorDet是一个同时使用anchor based和anchor free分支的目标检测器,它能够充分利用两种机制的优势,提高对不同尺度和形状目标的检测能力。
CenterNet是一个基于关键点检测的anchor free目标检测器,它将目标区域表示为中心点和宽高,并通过卷积模型生成中心点热图和偏移量预测。
anchor free网络的发展前景是非常广阔的,随着技术的不断创新和优化,anchor free网络有望在目标检测领域取得更好的性能和效率。