YOLO 标注格式检查

635 字
3 分钟
YOLO 标注格式检查

YOLO 标注格式检查#

YOLO 标注格式看起来只有五列,但写错一列就会让训练结果异常。最常见的问题是坐标没有归一化、类别编号越界、中心点和左上角坐标混用。

训练前先抽查标签文件,比训练失败后再回头找原因省很多时间。

YOLO 一行标注的含义#

class_id x_center y_center width height

x_center、y_center、width、height 都是 0 到 1 之间的归一化值,基于图片宽高计算,不是像素坐标。

格式检查脚本#

from pathlib import Path
for txt in Path("labels").glob("*.txt"):
for i, line in enumerate(txt.read_text().splitlines(), 1):
parts = line.split()
if len(parts) != 5:
print("bad columns", txt, i, line)
continue
cls, *box = parts
values = list(map(float, box))
if not all(0 <= v <= 1 for v in values):
print("out of range", txt, i, line)

和图片一一对应#

图片和标签通常要求同名不同后缀,例如 images/a.jpg 对应 labels/a.txt。缺标签文件不一定报错,但会影响训练样本。

可视化验证#

把归一化坐标还原成像素坐标后画出来,才能确认框是否真的对准目标。只检查数字范围不能发现中心点和左上角混用的问题。

实战复盘#

复用《YOLO 标注格式检查》时,我会先用三到五张图片跑通流程,再扩大到完整数据集。小样本阶段要故意覆盖正常图、边界图和可能失败的图,而不是只选最干净的样本。

OpenCV 和 YOLO 相关步骤都要特别关注坐标和尺寸。图片数组常用高宽顺序,检测框常用 x/y 顺序,YOLO 又使用归一化中心点坐标,混用后不会总是报错,但结果一定会偏。

后续如果要写成更完整教程,可以补充输入目录结构、输出目录结构和一张可视化样例,让读者能直接对照自己的项目。

最小验收样例#

验收《YOLO 标注格式检查》时,我会固定三张图片:一张正常样例、一张边界样例、一张容易失败的样例。每次改代码都用这三张图跑一遍,并保存输出结果。

视觉流程的验收必须能用眼睛确认。只打印数组 shape 或命令成功不够,至少要保存一张中间结果图或最终可视化图,确认处理效果和预期一致。

小结#

YOLO 标注检查要同时看格式、范围、类别和可视化结果。数字合法不代表框一定正确。

文章分享

如果这篇文章对你有帮助,欢迎分享给更多人!

YOLO 标注格式检查
https://blog.tjcheng.cn/posts/backfill/2026-06-05/yolo-label-format-note/
作者
TengJinCheng
发布于
2026-06-05
许可协议
CC BY-NC-SA 4.0
Profile Image of the Author
TengJinCheng
Hello, I'm Teng.
公告
欢迎来到TengJinCheng工作铺!
音乐
封面

音乐

暂未播放

0:000:00
暂无歌词
分类
标签
站点统计
文章
157
分类
7
标签
114
总字数
109,939
运行时长
0 天
最后活动
0 天前
站点信息
构建平台
Local
博客版本
Firefly v6.13.4
文章许可
CC BY-NC-SA 4.0

文章目录