本项目用于将包含jpg图像和json标注的数据集转换为YOLO格式,并使用YOLOv10模型进行训练。
├── datasets/ # 数据集目录
│ ├── Data2/ # 原有数据集
│ └── custom_dataset/ # 转换后的自定义数据集
├── json_to_yolo.py # 数据集转换脚本
├── train_custom_dataset.py # 自定义数据集训练脚本
├── train_v10.py # 原有训练脚本
└── yolov10n.pt # 预训练模型
将您的jpg图像文件和json标注文件分别放在指定目录中。
使用命令行参数指定数据集路径:
python json_to_yolo.py --images_dir /path/to/your/images --json_dir /path/to/your/json --output_dir datasets/my_dataset
参数说明:
--images_dir:图像文件夹路径(必需)--json_dir:JSON标注文件夹路径(必需)--output_dir:输出数据集路径(可选,默认为datasets/custom_dataset)--train_ratio:训练集比例(可选,默认为0.8)--val_ratio:验证集比例(可选,默认为0.1)--test_ratio:测试集比例(可选,默认为0.1)--class_names:类别名称列表(可选)
例如,如果您想指定类别名称:
python json_to_yolo.py --images_dir /path/to/images --json_dir /path/to/json --class_names strain flower berry
转换完成后,在指定的输出目录下将生成以下结构:
my_dataset/
├── train/
│ ├── images/ # 训练图像
│ └── labels/ # 训练标注
├── valid/
│ ├── images/ # 验证图像
│ └── labels/ # 验证标注
├── test/
│ ├── images/ # 测试图像
│ └── labels/ # 测试标注
└── data.yaml # 数据集配置文件
使用命令行参数指定数据集配置文件路径:
python train_custom_dataset.py --data_yaml datasets/my_dataset/data.yaml
参数说明:
--data_yaml:数据集配置文件路径(必需)--model_yaml:模型配置文件路径(可选)--pre_model:预训练模型路径(可选,默认为yolov10n.pt)--epochs:训练轮数(可选,默认为150)--batch:批次大小(可选,默认为4)--name:保存结果的文件夹名称(可选,默认为custom_train)--imgsz:图像尺寸(可选,默认为640)--device:训练设备(可选,默认为0)
例如,如果您想使用较小的批次大小和更多的训练轮数:
python train_custom_dataset.py --data_yaml datasets/my_dataset/data.yaml --batch 2 --epochs 200 --name strawberry_model
训练完成后,模型将保存在runs/detect/strawberry_model目录下。
除了上述命令行参数外,您也可以直接编辑train_custom_dataset.py脚本来修改更多高级训练参数:
results = model.train(
# ... 其他参数 ...
lr0=0.01, # 初始学习率
lrf=0.01, # 最终学习率因子
warmup_epochs=3 # 热身训练轮数
)- JSON格式标注需要转换为YOLO格式(类别索引 + 边界框坐标)
- YOLO格式的边界框坐标为归一化坐标,范围为0-1
- 训练前请确保模型配置文件路径正确
- 如果GPU内存不足,可以减小批次大小(batch)和图像尺寸(imgsz)
- 如果训练过程中出现过拟合,可以增加数据增强或减小模型容量