Anchor-based 和 Anchor-free
一、Anchor-based (基于锚框的) 方法
1. 核心思想:
Anchor-based 方法的核心思想是预设一组不同尺度(scale)和宽高比(aspect ratio)的参考框(即锚框,anchors 或称先验框,priors)。模型不直接预测物体在哪里,而是预测这些预设的锚框与真实物体(Ground Truth, GT)之间的偏移量(offset)以及该锚框内包含特定类别物体的概率。
可以理解为,不是大海捞针式地直接找物体,而是先在图像上撒上一堆“模板框”(锚框),然后看哪个模板框跟真实物体比较接近,再对这个模板框进行微调,使其更精确地框住物体。
2. 工作流程:
典型的 Anchor-based 检测器(如 Faster R-CNN, SSD, YOLOv2/v3/v4/v5, RetinaNet)通常包含以下步骤:
- 锚框生成 (Anchor Generation):
- 在特征图(Feature Map,通常是骨干网络提取的特征)的每个位置(或每隔一定步长stride的位置)平铺(tile)一系列锚框。
- 这些锚框具有预先定义的多种尺度(例如,32x32, 64x64, 128x128像素)和多种宽高比(例如,1:1, 1:2, 2:1)。
- 例如,如果一个特征图位置有 k 个锚框(3种尺度 x 3种宽高比 = 9个锚框),那么整个特征图就会产生 W×H×k 个锚框。
- 标签分配 (Label Assignment) / 锚框匹配 (Anchor Matching):
- 在训练阶段,需要为每个锚框分配一个标签(是前景物体还是背景)。
- 通常使用交并比 (Intersection over Union, IoU) 来衡量锚框与真实物体框之间的重叠程度。
- 正样本 (Positive Anchors): 与某个真实物体框的 IoU 大于某个阈值(如 0.7)的锚框,或者与某个真实物体框具有最大 IoU 的锚框。这些锚框负责预测对应的真实物体。
- 负样本 (Negative Anchors): 与所有真实物体框的 IoU 都小于某个阈值(如 0.3)的锚框。这些被认为是背景。
- 忽略样本 (Ignored Anchors): IoU介于中间(如0.3-0.7之间)的锚框,在训练中通常被忽略,不贡献损失。
- 模型预测 (Prediction):
- 对于每个锚框,模型会输出两部分:
- 分类分数 (Classification Score): 判断该锚框内是某个类别物体还是背景的置信度(例如,对于COCO数据集,可能是80个类别+1个背景)。
- 边界框回归参数 (Bounding Box Regression Parameters): 对于被认为是正样本的锚框,预测其相对于自身位置和尺寸的4个偏移量 (Δx,Δy,Δw,Δh),用于微调锚框使其更贴近真实物体框。
- 对于每个锚框,模型会输出两部分:
- 损失函数 (Loss Function):
- 通常由分类损失(如交叉熵损失)和回归损失(如 Smooth L1 损失)组成。
- 非极大值抑制 (Non-Maximum Suppression, NMS):
- 在推理阶段,模型会输出大量的预测框(经过回归调整后的锚框)。NMS用于去除高度重叠且指向同一物体的冗余预测框,保留置信度最高的那个。
3. 优点:
- 高召回率 (High Recall): 通过密集平铺不同尺度和宽高比的锚框,能够覆盖各种可能的物体位置和形状,理论上更容易找到所有物体。
- 性能稳定且强大: 许多经典的、性能优异的检测器(如 Faster R-CNN, RetinaNet)都基于锚框。它们在各种基准测试中取得了很好的效果。
- 结构化预测: 锚框提供了一个结构化的起点,使得学习偏移量相对容易。
4. 缺点:
- 超参数敏感: 锚框的尺度、宽高比、数量等都需要根据特定数据集进行精心设计和调整,这些超参数对模型性能影响很大。
- 正负样本不平衡: 大多数锚框都是负样本(背景),导致训练过程中正负样本比例严重失衡,可能需要特殊处理(如 Focal Loss in RetinaNet, OHEM)。
- 计算冗余: 大量的锚框会产生大量的预测,增加了计算负担,尤其是在匹配和NMS阶段。
- 复杂性: 锚框的匹配逻辑、IoU计算等增加了模型的复杂性。
- 对小物体或极端形状物体可能不够友好: 预设的锚框可能无法很好地匹配非常小或形状非常特殊的物体,除非锚框设计得非常细致。
5. 经典模型:
- R-CNN 系列: R-CNN, Fast R-CNN, Faster R-CNN (引入了 RPN,即区域提议网络,RPN 本身就是一种 anchor-based 的提议生成器)
- SSD (Single Shot MultiBox Detector): 在多个特征图层级上使用不同尺度和宽高比的默认框(default boxes,即 anchors)。
- YOLO 系列: YOLOv2, YOLOv3, YOLOv4, YOLOv5 (及后续版本如YOLOv7, YOLOv8, YOLOv9的部分模式) 都使用了锚框机制。
- RetinaNet: 引入 Focal Loss 来解决正负样本不平衡问题,并使用 FPN 结合锚框。
二、Anchor-free (无锚框的) 方法
1. 核心思想:
Anchor-free 方法不依赖预设的锚框,而是尝试以更直接的方式定位物体。它们通常将目标检测问题转化为对关键点(如角点、中心点)的定位,或者对物体边界的直接回归。
2. 主要流派及工作流程:
Anchor-free 方法有很多不同的实现思路,主要可以分为几类:
- (a) 基于关键点 (Keypoint-based) 的方法:
- 思路: 将物体表示为一组关键点,如左上角和右下角点 (CornerNet),或物体的中心点和一组极点 (ExtremeNet),或中心点、左上角、右下角点 (CenterNet的早期版本)。
- 工作流程 (以 CornerNet 为例):
- 模型预测两个热力图 (heatmap),一个表示所有物体左上角点的位置,另一个表示所有物体右下角点的位置。
- 模型还预测一个嵌入向量 (embedding vector) 给每个检测到的角点,如果一对左上角点和右下角点属于同一个物体,它们的嵌入向量会比较接近。
- 通过匹配嵌入向量来组合角点对,形成边界框。
- 可能还会预测偏移量来微调角点位置。
- 代表模型: CornerNet, ExtremeNet, CenterNet (部分版本)。
- (b) 基于中心/像素点 (Center-based / Point-based) 的方法:
- 思路: 将特征图上的每个点(或某些点)视为潜在的物体中心(或物体内部的某个点),然后直接从这个点预测到物体边界的距离或物体的宽高。
- 工作流程 (以 FCOS - Fully Convolutional One-Stage Object Detection 为例):
- 对于特征图上的每个位置 (x,y),如果它落在某个真实物体框内部,则将其视为正样本。
- 模型直接预测该位置到真实物体框四个边界的距离 (l,t,r,b),即左、上、右、下偏移量。这样,边界框可以表示为 (x−l,y−t,x+r,y+b)。
- 同时,模型还预测该位置的分类分数。
- 为了解决一个位置可能对应多个物体或低质量预测的问题,FCOS 引入了 “中心度” (centerness) 分支,用于给远离物体中心的预测点赋予较低的权重。
- 工作流程 (以 CenterNet - Objects as Points 为例,这是另一种CenterNet):
- 模型预测一个关键点热力图,表示物体中心的位置。
- 对于每个检测到的中心点,模型直接回归该物体的宽度 (w) 和高度 (h)。
- 还可能回归一个小的局部偏移,以补偿下采样造成的精度损失。
- 代表模型: FCOS, FoveaBox, CenterNet (Objects as Points), RepPoints (预测一组代表性点来描述物体,然后转换成框), YOLOX, YOLOv6/v7/v8/v9的部分模式也大量借鉴了anchor-free思想。
- © 其他方法: 还包括一些基于密集距离回归、分割思想等演化来的方法。
3. 优点:
- 简单性: 通常比 anchor-based 方法设计更简单,避免了复杂的锚框设计和匹配逻辑,超参数更少。
- 灵活性和通用性: 不需要预设锚框的形状,因此更容易适应各种形状和姿态的物体,尤其是那些不规则或极端宽高比的物体。
- 计算效率可能更高: 减少了大量锚框相关的计算和存储,NMS 的压力也可能更小(因为初始候选框可能更少或更集中)。
- 避免与锚框相关的复杂问题: 如正负样本不平衡(虽然也存在,但处理方式可能不同)、IoU阈值选择等。
4. 缺点:
- 召回率可能稍逊: 早期的一些 anchor-free 方法在召回率上可能不如精心设计的 anchor-based 方法,尤其是在处理高度重叠或密集场景时。
- 标签分配策略: 如何定义正负样本(例如,FCOS 中一个点落在多个GT框内如何处理)需要精心设计,这对于性能至关重要。
- 对模糊边界或非常小物体的处理: 可能不如 anchor-based 方法稳定,因为没有一个明确的“先验”形状指导。
- 训练稳定性: 一些早期的 anchor-free 模型可能在训练初期不如 anchor-based 模型稳定。
5. 经典模型:
- YOLOv1: 可以看作是 anchor-free 的早期尝试,它将图像划分为网格,每个网格直接预测边界框和类别,但每个网格只预测固定数量的框且对框的尺寸有较强约束。
- CornerNet, ExtremeNet, CenterNet (keypoint-based)
- FCOS, FoveaBox, ATSS (Adaptive Training Sample Selection, 一种改进的标签分配策略,可用于anchor-based和anchor-free)
- CenterNet (Objects as Points)
- RepPoints
- YOLOX, DETR (DEtection TRansformer, 使用Transformer进行集合预测,也是anchor-free)
- 近年的SOTA模型如 RT-DETR, YOLOv8, YOLOv9 等也大量采用或借鉴了anchor-free的设计理念。
三、总结与展望
特性 | Anchor-based | Anchor-free |
---|---|---|
核心 | 依赖预设锚框,预测偏移和类别 | 不依赖预设锚框,直接预测关键点或边界 |
设计复杂度 | 较高 (锚框设计、匹配逻辑) | 较低 (通常更直接) |
超参数 | 较多 (锚框尺度、比例、IoU阈值等) | 较少 |
召回率 | 通常较高,但依赖锚框设计 | 早期可能稍低,现代方法已大幅改进 |
灵活性 | 受限于锚框形状 | 对物体形状更灵活 |
正负样本 | 严重不平衡是常见问题 | 标签分配是核心问题,也需处理不平衡 |
代表作 | Faster R-CNN, SSD, YOLOv3/v5, RetinaNet | FCOS, CenterNet, CornerNet, YOLOX, DETR |
发展趋势:
- 两者的融合与借鉴: 现在的研究趋势是吸取两者的优点。例如,一些 anchor-free 方法通过改进标签分配策略(如 ATSS, SimOTA)来提升性能和稳定性,这些策略有时也能启发 anchor-based 方法。
- 标签分配策略的进化: 如何更有效地为 anchor-free 方法中的“点”或“区域”分配正负标签,是提升性能的关键。动态分配、基于预测质量的分配成为研究热点。
- 端到端检测: 以 DETR 为代表的基于 Transformer 的方法,完全抛弃了锚框和 NMS,实现了端到端的检测,是 anchor-free 思想的一个重要发展方向。
- 追求更高的效率和简洁性: Anchor-free 方法因其简洁性而受到青睐,研究者们也在不断探索如何使其在保持高性能的同时更加高效。
总的来说,Anchor-based 方法是目标检测领域的经典范式,而 Anchor-free 方法作为一种更简洁、更直接的思路,近年来发展迅速,并在许多场景下展现出与 Anchor-based 方法相当甚至更优的性能。目前,许多SOTA(State-of-the-Art)模型都采用了Anchor-free或借鉴其核心思想的设计。选择哪种方法取决于具体的应用场景、性能要求以及对模型复杂度的容忍度。