在已有烟雾和火焰的数据集(Pascal VOC格式)和人物图片(不包含标注文件)的的条件下,使用yolov5训练出能够同时识别烟雾,火焰,人的模型。
思路:
- 将voc转换为coco格式
- 使用yolov5s模型给定图片的推理中人的信息存保存为coco标注,如果该图片有火烟雾就将两个coco融合为同一个coco标注文件,即包含吧烟雾,火,人的coco标注文件。
- 将coco转换为yolo数据集格式的txt标注数据。
- 如果图片宽或高超过640px则裁剪到640px大小内。
- yolov5训练。
- 火焰和烟雾的数据集
- 带有人的图片可用从Visual Object Classes Challenge 2012 (VOC2012)下载,在通过python程序清洗掉不带人的图片。
- data/img存放包含火,烟雾和人的图片
- data/voc存放pascal数据集的火监测xml数据(Pascal VOC格式)
- data/coco_result存放pascal转coco后的监测数据(执行python .\pascal2coco.py生成的结果)
python .\pascal2coco.py
- data/coco_result_merged存放监测到的人的数据和data/coco_result合并后的数据(执行python .\detect_person.py生成的结果)
python .\detect_person.py
- data/coco_result存放从data/coco_result_mergedcoco数据集格式转化为yolo数据集格式的数据(执行python .\coco2yolo.py生成的结果)
python .\coco2yolo.py
-
将该项目中的data/coco_result 和 data/img 文件夹中的内容放入datasets的images和labels文件夹中。
-
调用python .\scale_down.py将图片最长的变改为640。等比例缩小图片。
python .\scale_down.py
-
编写data/fire.yaml确定训练路径和目标。
-
开始训练
git clone https://github.com/ultralytics/yolov5.git
cd yolov5
python train.py --img 640 --epochs 3 --data C:\Users\luoru\Desktop\PreTrainYOLO\src\pre_train_yolo\data\fire.yaml --weights yolov5s.pt
-
获取最终的结果runs/exp/weigths/best.pt
-
使用test测试pt。