1.yolov5官网
https://github.com/ultralytics/yoloV5
尽量下载最新版,V3.0版本,目前V3.1-20201120
2.数据集
3.数据预处理
参考我的另外几篇文章
- python如何把包含图片和txt两种格式的文件重新命名并保存-yolo格式
- python实现从一个文件夹里随机提取特定比例文件放到另一文件夹中,训练验证集划分
- 取与val图片对应的val标签
5725-5543标签有问题,可以自己分行,
4.训练
- 修改制作data/mask_datas.yaml文件
train: E:\01_hjz\01_work\pythonProject\01_Smart_Construction-master\mask_datas\images\train
val: E:\01_hjz\01_work\pythonProject\01_Smart_Construction-master\mask_datas\images\val
test: E:\01_hjz\01_work\pythonProject\01_Smart_Construction-master\mask_datas\images\val
# number of classes
nc: 2
# class names
names: ['no-mask', 'mask']
- 修改制作cfg=models/mask_yolov5.yaml文件
nc: 2 # number of classes,其他暂时不改
anchor box暂时不会写yolo数据格式的代码,若是能找到适应数据集的锚框效果会提升很多,希望各位有的话可以联系,抱拳
- 训练:
python train.py --cfg=models/mask_yolov5.yaml --data=data/mask_datas.yaml --batch-size=32 --epochs=300
5.测试
python test.py --weights=runs/exp22/weights/last.pt --data=data/mask_data.yaml
best.pt
Class Images Targets P R mAP@.5 mAP@.5:.95: 100%|███████████████████████████████████████████
all 954 2.05e+03 0.838 0.824 0.789 0.502
Speed: 1.4/1.0/2.4 ms inference/NMS/total per 640x640 image at batch-size 32
last.pt
Class Images Targets P R mAP@.5 mAP@.5:.95: 100%|███████████████████████████████████████████
██████████| 30/30 [00:13<00:00, 2.22it/s]
all 954 2.05e+03 0.835 0.821 0.784 0.502
Speed: 1.4/1.0/2.4 ms inference/NMS/total per 640x640 image at batch-size 32
6.detect
python detect.py --weights=./weights/face_mask_best_5s.pt --source=E:\01_hjz\01_work\pythonProject\01_Smart_Constr
uction-master\inference\int\images --conf-thres=0.6
摄像头的话:
--source=0 即可
7.总结
1. 对小目标和遮挡效果不好,初步判断是数据集人群图像标注太少,
2. anchor未适应,口罩的锚框应该很小,默认的coco9个锚框对小目标应该不太适应
3. 正面图像效果较好
4. 期待更好方法
5. 欢迎交流