为固化Yolo迁移训练、数据集调整步骤,方便同事复现。涉及的源码、数据集这里不做展示。
项目环境
服务器环境:python3.10
pip安装ultralytics
项目所在路径:/home/inspur/bl/helmet/ultralytics-main(对应bl_helmet环境)
训练、测试、标注、数据集转换
1. 训练(v8n,从头训练或迁移训练)
目前训练集中采用了标注真实数据+VOC2028数据集
数据所在路径:/home/inspur/bl/helmet/data/VOC2028
1 2 3 4 5 6 7 8 9 |
# from scratch-从头开始训练 yolo task=detect mode=train model=yolov8n.yaml data=./ultralytics/cfg/datasets/coco8_01.yaml batch=32 epochs=100 imgsz=640 workers=16 device=0 # 如果./runs/detect下有训练好的pt节点,可以指定进行进行迁移训练 # Start training from a pretrained *.pt model # yolo detect train data=coco8.yaml model=yolov8n.pt epochs=100 imgsz=640 # Build a new model from YAML, transfer pretrained weights to it and start training # yolo detect train data=coco8.yaml model=yolov8n.yaml pretrained=yolov8n.pt epochs=100 imgsz=640 |
yolov8n.yaml使用默认配置
coco8.yaml配置数据集目录与类别
2. Pt转onnx,前向测试
1 2 3 4 5 6 7 8 |
# 安装onnx pip install onnx -i https://pypi.tuna.tsinghua.edu.cn/simple pip install onnxruntime -i https://pypi.tuna.tsinghua.edu.cn/simple # 导出onnx模型 训练结果在runs/detect/train21/weights目录下 yolo export model=./runs/detect/train16/weights/best.pt format=onnx # 前向测试 查看误检率 或者使用test_onnx.py测 yolo detect predict model=./runs/detect/train16/weights/best.pt source=../data/testImg save=True batch=58 |
3. 数据标注或预标注
1 2 3 4 5 |
# pip安装labelImg pip install labelImg -i https://pypi.tuna.tsinghua.edu.cn/simple # 命令行启动 进行标注 labelImg |
1) 在./zz_dataprocess/中,配置好preLabel_helmet.py中图像及模型的路径,运行即可得到预标注文件(xml格式);
2) 利用labelImg软件手动矫正标注结果,xml与图片需在同一目录下。
4. 数据集转换
1)先执行./zz_dataprocess/test1.py 在ImageSets/Main中生成.txt 文件(列出文件名,数据集划分,需要在数据集目录下新建ImageSets/Main文件夹与train、val、test、trainval.txt,新建Annotations文件夹并将所有xml文件放入);
2)将Main中的文件复制到dataSet(新建)中;
3)执行./zz_dataprocess/voc2coco.py. 在labels中生产label.txt 文件 (xml转成txt的coco形式)。
4)复制到服务器,配置数据集路径训练模型;
5. 视频裁图片
video2imgs.py文件