资讯

锚框是什么?目标检测中预先设好的一组参考框

2026-11-053 分钟阅读百科
TL;DR锚框(Anchor Boxes)是目标检测中预先定义的一组不同尺寸和长宽比的参考框,均匀铺设在图像各个位置上,模型只需预测物体相对锚框的类别和偏移量,由 Faster R-CNN 推广,YOLO、SSD 等广泛采用,后来也出现了无锚框方法。

锚框(Anchor Boxes),也叫先验框,是目标检测中预先定义好的一组参考框。它们有不同的大小和长宽比,被均匀地铺设在图像的各个位置上。目标检测模型以这些锚框为起点,预测其中是否包含物体,以及应该如何调整锚框的位置和大小,才能准确地框住物体。

为什么需要锚框

目标检测要在图像中找出所有的物体,并用边界框标出它们的位置。难点在于,物体可能出现在图像的任何位置,大小可能相差很大,形状也各不相同:行人是瘦高的,汽车是扁宽的,远处的物体很小,近处的物体很大。如果让模型凭空直接预测出边界框的坐标,学习起来非常困难。

锚框提供了一个“参考答案”:在图像的每个位置,事先放好几个不同形状的候选框,比如一个正方形、一个瘦高的长方形、一个扁宽的长方形,每种形状再有大中小几种尺寸。模型只需要判断哪些锚框里有物体、是什么物体,再预测锚框需要往哪个方向移动多少、放大或缩小多少,就能得到准确的边界框。预测“相对于参考框的微调”比直接预测绝对坐标要容易得多。

锚框是怎么用的

在训练时,需要为每个锚框分配学习目标:计算每个锚框与图中真实物体框的交并比(IoU),交并比较高的锚框被视为正样本,负责预测这个物体,模型要学习它的类别和偏移量;与所有物体的交并比都很低的锚框被视为负样本,也就是背景。由于图像中大部分区域都是背景,负样本的数量远多于正样本,需要采取措施来平衡。在推理时,模型对所有锚框进行预测,保留置信度高的结果,再用非极大值抑制去掉重复的框。

发展历程

锚框的概念由 2015 年提出的 Faster R-CNN 推广开来,它在区域提议网络中使用锚框来生成候选区域。此后,SSD、YOLO 的第二代到第五代、RetinaNet 等众多检测模型都采用了锚框。YOLOv2 还提出了用聚类算法分析训练数据中物体框的尺寸分布,自动选择更合适的锚框尺寸,而不是靠人工设定。

无锚框方法

锚框也有明显的缺点:锚框的数量、尺寸和长宽比都是需要人工设计的超参数,对检测效果影响很大,换一个数据集可能就要重新调整;大量的锚框带来了额外的计算量,而且绝大多数都是背景。为此,研究者提出了无锚框的检测方法:比如 CornerNet 通过检测物体的左上角和右下角来确定边界框;CenterNet 和 FCOS 直接预测物体的中心点以及到四条边的距离;基于 Transformer 的 DETR 则把目标检测看作一个集合预测问题,直接输出一组物体框,连非极大值抑制也省去了。如今,很多新的检测模型,包括 YOLO 系列的后续版本,都已经转向了无锚框的设计。