文章目录[隐藏]
此文章记录如何在ubuntu下部署yolov5网络,并训练自己的数据集
环境:ubuntu16.04+Pycharm+Pytorch1.7.1+Cuda10.1
具体如何在ubuntu下配置深度学习环境,可以参照此篇博客
一、配置环境并运行例程
1. 下载yolov5
下载地址:github链接
下载方式:进入github页面,点击右上角的code
,复制图中网址。在目标文件夹中打开终端(进入目标文件夹中右键点击弹出框中的在终端打开),运行以下命令,将yolov5下载至该目录中
git clone https://github.com/ultralytics/yolov5
如果在pycharm中配置了深度学习环境,也可以像下图一样,先进入其中的Teminal
界面,在到目标文件夹下(我这里将yolov5保存在了curling_detection文件夹下),运行上述命令,将yolov5下载到此文件夹下。
注意:此处需要先进入深度学习的环境中(我这里是lls_pytorch
)
下载完成后,会在目标文件夹下出现名为yolov5的文件夹,打开文件夹,包含以下内容。
2. 配置环境依赖
yolov5中的requirements.txt
,这是一个配置环境依赖的脚本,里面包含了对所需各种库的版本要求。
先进入yolov5文件夹下,运行下面命令来配置环境依赖
shell pip install -r requirements.txt
3. 下载预训练模型
在路径yolov5/weights/
下有脚本download_weights.sh
,执行脚本可以下载yolov5系列的s,m,l,x四个模型,由于这里我只用到了最轻量级(当然也是最快)的yolov5s,所以我这里将脚本列表中的’m’、‘l’、'x’均删掉了,然后进入yolov5目录下执行该文件,使用
bash ./weights/download_weights.sh
下载完成后,会生成一个名为yolov5s.pt
的压缩包,将此压缩包移至yolov5/weights/
目录下。
4. 下载例程中的coco128数据集
可以直接进入网页中进行下载,然后放到yolov5的同级目录下
下载地址:在此处
注意观察coco128数据集的目录格式,在其数据集下分为了images和label文件夹,一个存放原图像,而另一个是存放的是与之对应的打标签后生成的txt文件。
在制作自己数据集时也要以此目录格式组织。(具体如何打标签后文会提到)
5. 数据集配置文件
关于coco128数据集的配置文件,yolov5中都已经为我们写好,下面做简要介绍。
首先在yolov5/data/
文件夹下有一个coco128.yaml
文件,该文件中写有数据集的训练集train
和验证集val
路径,类别数nc
,类别名称names
。
(由于我们已经下载好了数据集,这里可以将下载网址注释掉)
6. 选择一个模型进行训练
在yolov5/models
中存放着模型的配置文件,我们打开yolov5s的配置文件yolov5s.yaml
。当我们需要用自己的数据集进行训练时,只需改动该文件下的类别数nc
。
7. 开始训练
还是在yolov5目录下,运行下述命令
python train.py --img 640 --batch 16 --epochs 5 --data ./data/coco128.yaml --weights ./weights/yolov5s.pt
> 参数说明:
--img 640 训练和测试输入大小,默认为[640, 640]
--batch 16 默认为16
--epoch 5 训练执行的周期数,一个epoch遍历一遍数据集
--data 数据集的配置文件路径
--cfg:模型的配置文件,默认为yolov5s.yaml
--weights 初始化权重参数路径,默认值''
开始训练:
最后,在训练结束后,会在yolov5/runs/train/
下生成相应的exp文件夹,第n次测试会生成一个名为expn的文件夹,打开此文件夹,里面存放着训练的结果,最重要的是其中weights
文件中的权重文件,其中包括best.pt
为过程中效果最好的权重文件,last.pt
为最后一次的权重文件。将best.pt
改名为coco128.pt
放入到yolov5/weights
文件夹下。
8. 推理测试
- 使用摄像头进行测试
python detect.py --source 0
-
使用单张图片进行测试
在yolov5/data/images
中存放着为我们准备好的两张图片bus.jpg和zidane.jpg
例:我们使用bus.jpg进行测试,原图如下
我们在终端中运行下面的命令:python detect.py --source ./data/images/bus.jpg --weights ./weights/coco128.pt --conf 0.25
参数说明
–source 测试图片的路径
–weights 训练得到的权重文件
–conf 0.25 只显示置信度大于0.25的部分
最终的结果存放在yolov5/runs/detect
中的最后一个exp文件中,最终的结果如下:
二、训练自己的数据集
实验目的:使用yolov5实现对冰壶的检测与跟踪
1. 收集数据
拍摄大量的冰壶图片。(这里我收集了516张冰壶图片)
在yolov5的同级目录下创建新的文件夹(我这里设置为curling_data),且包含images和labels两个子文件夹
将所有的冰壶图片放在images文件夹中
2. 制作标签数据
这里使用的打标签工具为labelImg
下载地址:github官网地址
具体安装使用方法可以参考这篇博客
标注要选择yolo格式,这样生成的文件为.txt文件,将所有.txt标签文件存放在label文件夹下。这样,image和label文件夹下分别存放着图片以及与之对应的标签文件。如下所示:
注意:如果你的标签数据是xml格式,xml与txt文件间的转换可以参考这篇博客
3. 组织文件结构
像上述coco样例一样,我们的数据集也要按下面的目录结构组织。
分别在images和labels文件夹下新建两个文件夹train和val,train中存放需要训练的图片(即516张冰壶图片),val中存放训练集中的一部分用作验证。创建好文件夹好,可以通过以下命令快速实现文件的移动
cd images/ #进入images文件夹
cp 2020010900*.jpg ./val #将0-99图片复制到val文件夹中
mv *.jpg ./train #将所有的jpg图片移动到train文件夹中
cd labels/ #进入labels文件夹
cp 2020010900*.txt ./val #将0-99txt文件复制到val文件夹中
mv *.txt ./train #将所有的txt文件移动到train文件夹中
整理好后的目录格式如下:
4. 修改配置文件
进入yolov5/data
目录下,修改coco128.yaml文件内容。这里,我们可以先复制一份coco128.yaml,然后更名为curling516.yaml,修改内容如下:
声明train
和val
文件的路径,类别数nc
以及类别名names
(这里分为了两类,分别为red和yellow代表冰壶的颜色)
5. 修改模型配置文件
进入yolov5/models
目录下,修改yolov5s.yaml文件内容。这里,我们可以先复制一份yolov5s.yaml,然后更名为curling_yolov5s.yaml,只需要修改类别数nc
:
6. 开始训练
使用yolov5s进行训练,进入到yolov5文件夹下
执行训练命令:
python train.py --img 640 --batch 16 --epochs 30 --data ./data/curling516.yaml --cfg ./models/curling_yolov5s.yaml --weights ./weights/yolov5s.pt
训练结束后,会在yolov5/runs/train
目录下的最后一个exp文件夹下生成一个名为weights
文件夹,我们将该文件间里面的权重文件best.pt
文件复制到yolov5/weights
中,并更名为curling516_best.pt
7. 使用训练好的预训练模型进行测试
- 单张图片测试
和上面的coco样例一样,可以在网上找一张冰壶图片,在yolov5/data
下新建一个文件夹名为curling_img
,将图片存放在该文件夹中。
执行测试命令:
python detect.py --source ./data/curling_img/curling.jpg --weights ./weights/curling516_best.pt --conf 0.5
最后会在yolov5/runs/detect
目录下最后一个exp文件夹中生成检测后的图片如下:
- 视频测试目标跟踪效果
同样,可以将一段冰壶视频存放在yolov5
路径下,然后执行下面命令(curling.avl为视频名称)
python detect.py --source curling.avl --weights ./weights/curling516_best.pt --conf 0.5
最终结果也保存在了yolov5/runs/detect
的最后一个exp文件夹中。
参考文献:
1. Yolov5详细使用教程,以及使用yolov5训练自己的数据集
2. wiki/Train-Custom-Data
3. Ubuntu下深度学习环境的配置
4. 在 Ubuntu下安装使用labelImg
5. Yolo格式和Voc格式的相互转换
版权声明:本文为CSDN博主「进阶的花生」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/qq_45646174/article/details/112913012
暂无评论