跳转到内容
新建笔记

检测框坐标:xyxy、xywh 与 YOLO 归一化

图像宽 W、高 H,左上角为原点,x 向右、y 向下。本文用连续坐标/半开边界的宽高关系,框为 [x1,x2)×[y1,y2)[x_1,x_2)\times[y_1,y_2)。某些旧数据集将最大像素索引视为包含端点,宽度会出现 +1;转换前必须查数据集约定,不能混用。

两角点、左上角加宽高、中心加宽高三种检测框表示

表示四个数的含义
xyxy左上角 x、y,右下角 x、y
左上角 xywh左上角 x、y,宽 w、高 h
中心 xywh中心 cx、cy,宽 w、高 h

由角坐标开始:

w=x2−x1,h=y2−y1,cx=x1+w2,cy=y1+h2.w=x_2-x_1,\quad h=y_2-y_1,\quad c_x=x_1+\frac w2,\quad c_y=y_1+\frac h2.

由中心坐标还原:

x1=cx−w2,x2=cx+w2,y1=cy−h2,y2=cy+h2.x_1=c_x-\frac w2,\quad x_2=c_x+\frac w2,\quad y_1=c_y-\frac h2,\quad y_2=c_y+\frac h2.

COCO 的 bbox 常用左上角加宽高;VOC 常见为角坐标;“xywh”本身仍不够精确,必须说明 x/y 是左上角还是中心。

Ultralytics 检测标签每行使用 class cx cy width height,四个位置/尺寸数按对应图像尺寸归一化,类别从 0 开始。数据格式文档

c^x=cx/W,c^y=cy/H,w^=w/W,h^=h/H.\hat c_x=c_x/W,\quad \hat c_y=c_y/H,\quad \hat w=w/W,\quad \hat h=h/H.

例如图像 640×480640\times480,角框为 (100,50,300,250)。宽高都是 200,中心是 (200,150),归一化后为:

0 0.3125 0.3125 0.3125 0.4166667

开头 0 是此例的类别编号。若图像经过 letterbox 缩放与补边,必须先明确框属于原图还是模型输入图,再使用对应尺寸归一化。

检查 W,H>0W,H>0、坐标有限、宽高为正、类别合法。边界框超出图像时按任务要求裁剪或拒绝;裁剪后重新计算宽高并去掉零面积框。整数像素取整应放在最终显示/栅格化阶段,过早取整会积累误差。