YOLO v5 实现目标检测(参考数据集&自制数据集)
Author: Labyrinthine Leo
Init_time: 2020.10.26
GitHub: https://github.com/ultralytics/yolov5
Index Words: Object Detection
、YOLO v5
、YOLO Series
1、引言
1.1、写作动机
由于博主当前的研究问题涉及到图片的局部图像提取,于是决定使用目前比较流行且高效的目标检测网络框架YOLOv5
(虽然其沿用了社区的版本号v5,但只是ultralytics
团队的开源实现,并未获得官方的认可,此处暂且按下不表)来完成实验任务。博主之前并无目标检测方向的相关基础知识,因此在将其化为己用之前也趟了不少坑,这里特此记录为博客以备后用,同时将其微薄经验分享给大家,希望读者能够有所收获并对错误之处批评指正。
1.2、背景介绍
YOLOv5
根据模型的规模不同设有4个模型:v5s
、v5m
、v5l
、v5x
,如上图所示是这些不同规模的模型与EfficientDet
模型的性能对比图。而这些模型涉及的预训练权重数据该项目也已提供:checkpoints,只不过是存在谷歌云盘上,为了方便读者下载,笔者已将v5s
和v5x
的权重下载好放在了百度网盘上,以供大家使用:链接:https://pan.baidu.com/s/1_Abpe46JFevdBzOyBwGo-A 提取码:fuoe
。由于博主硬件设备有限使用cpu
运行项目,因此本文主要使用v5s
的较小模型进行实验,实验数据包括官网提供的coco128
的数据集,同时包含如何使用公开数据集(该部分实验使用roboflow
上的Mask Wearing Dataset
),最后博主还会讲解如何自制数据集进行训练。
1.3、文章结构
- 引言 1.1 写作动机 1.2 背景介绍 1.3 文章结构
- 配置环境 2.1 下载源码 2.2 软硬件要求和安装依赖
- 相关数据下载 3.1 权重数据下载 3.2
coco128
数据集的下载 - 训练
coco128
数据集 4.1 设置coco128.yaml
文件 4.2 文件目录组织 4.3 选择模型 4.4 训练 4.5 训练数据可视化 4.6 推断/预测 - 训练公开数据集
Mask Wearing Dataset
5.1 数据集的选择 5.2 标签格式说明 5.3 数据集的放置和配置文件的修改 - 训练自制数据集 6.1 标注工具的使用 6.1.1
LabelImg
的安装 6.1.2LabelImg
的使用 6.2 自制数据集文件的设置 - FAQ和总结 7.1 FAQ 7.2 总结
- Reference
2、配置环境
在开始之前,我们可以看一下官网的训练定制数据的标准教程:Train Custom Data,先简单了解一下整体流程:1) 创建yaml
文件(简单理解为项目读取训练数据路径的配置文件),2) 创建数据的labels
信息,3)将项目和数据文件结构组织好,4) 选择上述中想要使用的模型并修改指定参数,5) 训练和检测。如果是新手可能还是一头雾水,无碍,Let's Go!
2.1、下载源码
项目的源码可以直接使用Git Bash
在指定文件夹目录下输入下面命令行来获取:
git clone https://github.com/ultralytics/yolov5
或者在github
官网使用点击下载zip
源码进行解压即可使用,如下图所示。
下载完成以后,下图即整个项目的文件结构,这里先简单的做个说明:data
主要放置相关训练数据的配置文件(读取、解析等);models
放置各模型的参数配置文件;weights
则放置预训练模型的权重文件;inference
放置预测/推理阶段的测试图片;runs
则放置训练过程中保留下来的一些数据;当前目录下的文件重点关注train.py
、test.py
、detect.py
,这些是网络模型的关键源码(待精读深读)。
2.2、软硬件要求和安装依赖
首先说明一下笔者的硬件配置:无GPU
、16G内存,事实证明v5s
模型可以跑,只不过耗时较长(建议夜间);依照下图所示当前Release
的软件要求,所以软件的配置:window 10
、IDE: pycharm 2020
、Python: 3.8
、PyTorch: 1.6.0 cpu版
、torchvision: 0.7.0
,笔者的软件环境均在anaconda
中进行安装,这部分前置环境配置在此不赘述(插句题外话,使用anaconda
将各个虚拟环境分隔开用于不同要求环境的项目中真的很nice!笔者之前是所有环境大杂烩在python
终端中,会很乱,强推anaconda
)。
接下来看看该项目运行起来需要哪些依赖库,如下图所示,在刚才了解过的文件结构中有一个requirements.txt
文件。
文件打开以后其实就是我们需要pip insatll
的第三方库列表(如下图所示),我们可以在终端中使用下列命令行进行一次性安装(终端下要进入该项目路径),当然也可以在终端中一个一个包的insatll
或者在pycharm
中进行导入安装(笔者是在anaconda
虚拟环境中进行insatll
然后在pycharm
中导入整个虚拟环境,较为方便)。
pip install -U -r requirements.txt
3、相关数据下载
3.1、权重数据下载
我们首先需要下载的就是预训练模型的权重数据,这里主要放出笔者下载的v5s
和v5x
模型权重:链接:https://pan.baidu.com/s/1_Abpe46JFevdBzOyBwGo-A 提取码:fuoe
,将下载好的yolov5s.pt
文件放置在当前文件夹下,如图所示:
在进行下一步之前,我们就可以验证前面进行的操作包括环境的配置、权重数据的下载是否没有问题(如果按照笔者的顺序应该是没有问题的,嘿嘿),我们在pycharm
的terminal
中输入以下命令:
python detect.py --source inference/images/ --weights ./yolov5s.pt
这行命令其实就是进行模型的测试/推断了,测试的图片就是前面讲的inference
目录下的图片,使用的权重数据就是刚才下载的yolov5s.pt
,而推断后的输出图片存放在inference/output/
中。