【Object Detection】YOLOV5应用案例——口罩检测(mask destection)手把手教你从零开始搭建一个目标检测任务
1、下载YOLOV5的代码
打开项目地址https://github.com/ultralytics/yolov5,根据流程下载,在命令行中输入
- git clone https://github.com/ultralytics/yolov5
- cd yolov5
- pip install -r requirements.txt
注意:本地进行项目运行的话需要自行创建好wandb,tensorboard以及clearml的账户(都是记录运行过程的库),并在命令行中登录。(不知道怎么创建的可以先运行一遍train.py训练,然后根据报错信息进入不同的官网进行注册和登录)
包括有:
2、准备数据
打开roboflow官网 https://app.roboflow.com/ 根据新手教程创建自己的数据集
然后上传数据时,我使用的是网上的公开的口罩以及面部数据,上传图片以及label标签的文件夹
如果没有labels数据也没有关系,在roboflow网站上也可以自己标注数据,上传一张照片,点击照片进行标注
标注完成自己的数据后点击Finish Uploading完成上传,并选择划分数据集的比例
之后,可以自定义选择数据增强的方式(如旋转,噪音,模糊等)
然后点击生成数据集
然后选择导出数据,可选择将数据下载到电脑也可以复制下载代码在项目中进行下载
将下载好的数据解压到YOLOV5的项目里(本地使用的话推荐直接下载到电脑)
3、修改配置文件
打开data.yaml配置文件,修改路径为自己的包名,
nc表示分类个数
name就是分类的名称
4、模型训练
在train.py文件中,找到parse_opt解析命令行参数的方法,创建一个自定义的默认参数字典,并修改对应位置的参数(首次测试运行的话,建议将epochs的默认值改为50)
注意:这个weights参数对应的文件是会自动下载的,所以直接修改参数值即可(包括yolov5s,yolov5m, yolov5l, yolov5x,具体差距看下文中“如何提高精度”的相关内容)
第一次运行,报了这个错,点进去这个文件,将这段代码注释掉
训练好后,会在runs/exp/weights下生成训练好的权重模型
注意:这个best.pt是你最重要的文件,该权重文件用于模型预测,所以,也可以在别的地方训练好(比如在kaggle,colab等网站训练好),下载好这个权重文件后在此项目也可继续运用(前提是分类项目的数据都一致)。
5、模型测试
打开detect.py文件,与train.py的修改类似,
修改完后,运行detect.py代码,查看运行结果,可以看到结果保存在什么地方
这里我用我的自拍照测试了以下,效果还不错
其他问题
如何提高精度?
-
提高训练轮次epochs
-
在生成数据集时,选择数据增强Data Augmentation
-
选用其他的权重模型的pt文件
直接在train.py文件的解析参数的方法中修改文件名。
效果的话,可以参考这篇文章:https://zhuanlan.zhihu.com/p/399104828
具体来说就是yolov5s< yolov5m< yolov5l< yolov5x,所含的残差结构的个数依次增多,网络的特征提取、融合能力不断加强,检测精度得到提高,但相应的时间和资源花费也在增加。
关于为什么detect文件运行后,预测结果没有框框出的问题
提高自己的训练轮次,因为权重模型训练的效果不好或者是过拟合了,或者是首先模型训练的效果不好而且之前在detect文件里设置置信度太高了,建议刚开始训练的置信度调低,跑通以后调优的时候再提高这个置信度