如何为 BMW-YOLOv4-Training-Automation 准备数据集:YOLO 标注格式完整指南(附示例数据集解析)
如何为 BMW-YOLOv4-Training-Automation 准备数据集:YOLO 标注格式完整指南(附示例数据集解析)
【免费下载链接】BMW-YOLOv4-Training-AutomationThis repository allows you to get started with training a state-of-the-art Deep Learning model with little to no configuration needed! You provide your labeled dataset or label your dataset using our BMW-LabelTool-Lite and you can start the training right away and monitor it in many different ways like TensorBoard or a custom REST API and GUI. NoCode training with YOLOv4 and YOLOV3 has never been so easy.项目地址: https://gitcode.com/gh_mirrors/bm/BMW-YOLOv4-Training-Automation
BMW-YOLOv4-Training-Automation 是一个几乎"零配置"的 YOLOv4 / YOLOv3 训练自动化项目:你只要提供一份符合YOLO 标注格式的数据集,就能立刻启动训练,并通过 TensorBoard、REST API 和 Web 界面随时监控。对新手来说,最容易卡住的环节恰恰是数据集准备。本文将以项目自带的 sample_dataset 示例数据集为例,手把手讲解 YOLO 数据集标注格式、目录结构、配置文件写法,帮你快速迈出 YOLOv4 训练的第一步。
什么是 YOLO 标注格式?一文看懂 txt 标签文件
YOLO 标注格式把每个目标写成一行纯文本,一条记录包含 5 个数值:
类别ID 中心点X 中心点Y 宽度 高度
- 类别ID:从 0 开始计数的整数,对应 classes 列表中的顺序
- 中心点X / 中心点Y:目标框中心点的归一化坐标(范围 0~1)
- 宽度 / 高度:目标框的归一化宽高(范围 0~1)
所谓"归一化",就是除以图片的实际宽高。例如图片宽 1280 像素、目标中心在 x=640 处,那么中心点X 记为 0.5。这样设计的好处是:无论图片分辨率怎么变,标注都无需改动,这也是 darknet 系 YOLO 训练的标准输入。
官方示例数据集深度解析:从 txt 标注看懂图像内容
打开示例数据集中的标签文件sample_dataset/labels/yolo/training_images_take_7_279.txt,会看到 5 行标注:
1 0.4097656 0.5451389 0.03046875 0.08194444 1 0.3789062 0.5444444 0.0234375 0.07222223 1 0.5632812 0.5416667 0.021875 0.06666667 1 0.6183594 0.5388889 0.03359375 0.075 0 0.4953125 0.4166667 0.334375 0.3555556结合sample_dataset/train_config.json中定义的类别列表["Dolly", "Wheels"],含义立刻清晰:
- 类别 0 = Dolly(红色平板推车),类别 1 = Wheels(轮子)
- 前 4 行是 4 个轮子的小目标框,归一化宽高只有 0.02~0.08,属于典型的小目标
- 最后一行是整车的大目标框,宽高约 0.33 x 0.35,覆盖画面主体
对照上面的示例图片,你会发现标注与画面完全吻合——这正是验证数据集是否合格的最佳方式:用眼睛抽查标签和图片的对应关系。
数据集目录结构:图片与标签文件如何一一对应
YOLO 数据集准备的核心规则只有一条:标签文件与图片同名同前缀,仅扩展名不同。示例数据集的结构如下:
sample_dataset/ ├── images/ 📁 所有训练图片(PNG / JPG) │ └── training_images_take_7_279.png ├── labels/ │ └── yolo/ 📁 所有 YOLO 标注 │ └── training_images_take_7_279.txt └── train_config.json ⚙️ 训练配置文件- 图片 279 的标注,就是同名的
training_images_take_7_279.txt - 每张图片必须有对应 txt;没有目标的图片也要放一个空 txt
- 图片支持 .png / .jpg / .jpeg 等常见格式(扩展名大小写均可)
train_config.json 数据集配置要点:classes 与 train_ratio
准备好图片和标注后,还需要一份训练配置。项目提供了现成模板config/train_config.json.template,复制一份并去掉.template后缀即可使用,重点修改三个数据集相关字段:
- data.name:数据集名称,例如 "obj",会用作生成的配置文件名
- data.classes:类别列表,顺序必须与 txt 里的类别 ID 一一对应
- data.train_ratio:训练集占比,默认 0.8(即 80% 训练、20% 测试)
如果使用 YOLOv4,记得在model.model_name中选择yolov4;YOLOv4 专属的mosaic、blur数据增强开关也在这里配置。字段的完整合法性校验规则可参考config/train_config_schema.json。
训练集与测试集自动划分:train.txt 与 test.txt 的秘密
在 BMW-YOLOv4-Training-Automation 中,你甚至不需要手动准备 train.txt 和 test.txt:
- 提供了 train.txt / test.txt:训练脚本会读取并自动把其中的图片路径改写为绝对路径
- 未提供这两个文件:脚本依据 train_ratio 自动按类别均衡划分,先从数量最少的类别开始切分,确保每个类别在训练集和测试集中都有分布(核心逻辑位于
src/train_utils.py的 split_train_test 函数,流程编排在src/train_darknet.py)
划分完成后,脚本还会自动生成 obj.names、obj.data 等 darknet 配套文件,并从测试集中挑一张图绘制 ground truth,方便你直观检查标注是否正确。
数据集准备自检清单 ✅
提交训练前,快速检查以下 5 项:
- ✅ 每张图片都有同名 .txt 标注,且放在 labels/yolo 目录下
- ✅ 所有坐标都是归一化后的 0~1 小数,没有越界值
- ✅ 类别 ID 从 0 开始,顺序与 train_config.json 的 classes 完全一致
- ✅ train_ratio 设置在 0.7~0.9 之间,并已确认数据总量
- ✅ 每个类别的图片数量充足,避免某个类别只有一两张图
小结:从数据集到训练只差一步
只要遵循 YOLO 标注格式准备好图片与标签,再配置好 train_config.json,就能让 BMW-YOLOv4-Training-Automation 自动完成剩余工作——划分数据集、生成配置文件、启动训练,并通过 TensorBoard 和 Web 界面实时监控。现在就去用项目自带的 sample_dataset 跑通你的第一次 YOLOv4 训练吧!🚀
【免费下载链接】BMW-YOLOv4-Training-AutomationThis repository allows you to get started with training a state-of-the-art Deep Learning model with little to no configuration needed! You provide your labeled dataset or label your dataset using our BMW-LabelTool-Lite and you can start the training right away and monitor it in many different ways like TensorBoard or a custom REST API and GUI. NoCode training with YOLOv4 and YOLOV3 has never been so easy.项目地址: https://gitcode.com/gh_mirrors/bm/BMW-YOLOv4-Training-Automation
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
