anchor、anchor box、bounding box之间关系
最近学YOLO接触到这些概念,一下子有点蒙,简单总结一下。
anchor和anchor box
-
Anchor:表示一组预定义的尺寸比例,用来代表常见物体的宽高比。可以把它看成是一个模板或规格,定义了物体框的“形状”和“比例”,但并没有具体的位置。 每个anchor包含一个固定的宽度和高度比例,例如(1:1)、(2:1)等。
-
Anchor Box:是将anchor应用到具体的grid cell时所形成的矩形框。Anchor box就是一个真正的“框”,在某个grid cell上有了具体的中心点和尺寸大小。Anchor box = anchor的宽高比例 + grid cell的中心点位置。
关系:
- Anchor是定义Anchor Box的模板:每个anchor提供一个预定义的宽高比例,用于初始化在某个grid cell上的anchor box。
- Anchor Box在预测中的作用:Anchor box会基于真实物体框的位置和尺寸进行偏移回归调整,预测出最终的bounding box。
总结:anchor是一个比例参考,而anchor box是应用了这个比例的实际矩形框,每个grid cell上可以有多个anchor box,用于检测不同尺寸和形状的物体。
YOLO中的anchor box
和bounding box
的关系大致是这样的,流程可以分解如下:
-
Anchor的定义:在YOLO的每个grid cell上,模型会事先定义一些anchor boxes,这些anchor boxes是通过在训练集上对真实框进行聚类得到的,确保每个anchor box具有常见目标的尺度和比例。(一个cell有多个anchor box)
-
选择最佳Anchor Box:当一个物体的真实框在特定grid cell上时,YOLO会计算这个真实框与各个anchor box之间的IOU(Intersection Over Union)。根据IOU,选择一个最契合的anchor box(即与真实框的重叠度最高的)。
-
偏移量计算:在确定了最契合的anchor box之后,YOLO会将anchor box与真实框之间的差异用偏移量的形式表达出来。这个偏移量包括中心坐标的偏移以及宽高的缩放比例。
-
回归预测Bounding Box:模型通过回归学习到的偏移量,将anchor box调整到实际目标的大小和位置,最终得到预测的bounding box。
通过这种机制,YOLO可以有效地预测出多种大小和比例的目标bounding box。
参考文章:
yolov3中的Anchor Box理解
anchor box只是先验知识,bounding box是一种过程,ground truth才是标准答案,
Bounding Box与anchor box(YOLO会将输入的图片分成S*S个网格,每个小网格会生成n个anchor Box。图像的真实框会和图像中心点所在的小网格生成的anchor box做IOU计算。回归出来的框就是Bounding Box(也就是网络输出的框,他与真实框和anchor Box都有差距))