YOLOv5目标检测
项目介绍和环境配置
- github上找到对应的仓库,选择master分支中的tag中的YOLOv5版本,点Code中的压缩文件下载,解压后用pycharm打开,叉掉默认的创建环境提示,在设置中配置上自己的虚拟环境
- 安装requirements.txt文件中所需要的库,直接点击pycharm的提示进行安装该文件中所需要的库,也可在底部终端中的虚拟环境中输入:pip install -r requirements.txt,安装pycocotools库过程中报错,需要先安装c++编译工具,根据提示去官网下载工具,勾上c++桌面开发和组件中搜build选中最后一个,安装即可(安装完成后启动,如然后在弹出得黑框瞎按一通,然后卡住,要等很久说命令无效,然后叉掉黑框,等很久,可能会卡住,好了之后)安装pycocotools库
使用YOLOv5进行预测
利用detect.py文件进行预测
- 可用命令行的方式:例如:$ python detect.py --source data/images --weights yolov5s.pt --conf 0.25
- 在pycharm中进行预测:
- 库都导入后运行detect.py,可能会报错:Can't get attribute 'SPPF' on <module 'models.common' from 'F:\project\dl\yolov5-5.0\models\common.py'>,原因是models.common.py中没有SPPF类,去GitHub上将对应文件中的该类的代码粘过来即可运行detect.py
- detect.py中的main函数下的source参数指定检测哪个资源,在runs文件下的detect文件下的exp文件夹中可以看到对应资源的检测结果
- detect.py中的main函数下的参数
- weights:指定不同版本的预训练网络模型的参数,例如可以将默认的yolov5s.pt改为yolov5m.pt,再运行,可以在github上找到各种不同版本的网络,将其下载粘贴到yoloyv5-5.0项目下,在将参数改成对应的,再运行能达到相同的效果
- source:指定网络的输入,路径不能有中文,可以是一个文件夹(将会检测该文件夹下所有的文件),也可以是一张图片,也可是一个视频
- img-size:将输入的图片reshape成指定大小,再预测,但原始输入和输出保持一致
- conf-thres:置信阈值,大于设置值如0.25时才相信检测的对象是我们标记中的一种,才在结果中框出来
- iou-thres:非极大抑制的思想中的度量指标,对于某个对象有多个框重叠,但重叠的框框的交并比(IOU)大于某个阈值时,我们就要抑制概率不是极大的框,只保留概率极大的那个框,当小于该阈值时,对于多个框框就不进行非极大抑制
- device:运行设备
- --project:将结果保存在哪个位置
- --name:结果文件夹的名称
下面的参数都是无默认值:如在虚拟环境中python detect.py --view-img,则表示该属性为True,会执行对应的效果 - --view-img:是否运行时实时显示检测结果。也可在运行按钮左边的配置中的Parametes中设置为:--view-img,再运行detect.py文件,能达到相同的效果
- --save-txt:是否将结果保存为txt文件,和上个参数一起设置的形式为:--view-img --save-txt
- --save-conf:是否保存置信度
- --nosave:是否保存检测结果图片/视频
- --classes:过滤检测的对象,如只想检测类别编号为0的类:--classes 0
- --exist-ok:若设置为True,则每次结果都会新建文件夹保存,否则,会保存在上次运行结果得文件夹中
可在opt = parser.parse_args( )处打上断点,再debug运行detect.py,可看到每个参数得具体值
有的项目中参数中未提供默认值,但参数设置required=True,表示必须要提供参数,我们就将required=True删除,添加default="..."
训练YOLOv5神经网络
本地训练
- 运行train.py文件,通道数报错则在参数中将cfg默认值设为:'models/yolov5s.yaml'
- 运行,下载数据集coco128,可能压缩文件下载的位置不对且自动解压失败,手动解压到和项目YOLO同级目录下即可,结果依然保存在run文件夹中
- 研究main函数中参数的意义
云端GPU训练
- 谷歌Colab:将本地项目压缩后上传到Colab云端文件夹上
- 用命令行将文件解压,并删除不必要的文件夹,进入文件夹,下载对应需要的库
制作自己的数据集训练
- 下载一些图片,图片名改为无中文,创建yaml配置文件,使用在线工具上传图片并选择手动或自动进行标注,标注完后打包下载,在yolo项目下建一个MyData文件夹,里面建images和labels文件夹,在images和labels下面可分别建train和test文件夹,将下载的图片和标注放到对应的文件夹下,写MyData.yaml文件
- 仿真数据集(GAN、数字图像处理的方式)