YOLOV7——实战篇

前期准备:

环境配置:

深度学习环境配置——(Cuda11)windows下的torch==1.7.1环境配置_请让我按时毕业的博客-CSDN博客

代码下载:

https://github.com/WongKinYiu/yolov7/blob/main/README.md

编译器:

VSCODE的安装与配置Anaconda环境_vscode如何配置conda环境_请让我按时毕业的博客-CSDN博客

权重下载:

这次我们使用的预训练模型是yolov7_training.pt,这个模型是在MS COCO数据集上进行训练的,我们把这个模型下载到/yolov7/weights/下。注意,我们需要创建一个/weights/文件夹,用来统一存放我们的预训练模型。在linux系统下,输入如下命令进行文件夹的创建,并进入到该文件夹下

mkdir weights   # 创建文件夹
cd weights      # 进入到该文件夹下

这些预训练的模型官网都有提供,掌握如何训练自己的数据集后可根据需求进行预训练模型的更改。官网的截图如下

或在终端输入如下命令,即可下载预训练模型 (linux系统下)

wget https://github.com/WongKinYiu/yolov7/releases/download/v0.1/yolov7_training.pt

速度是不够的。这里建议手动下载,然后手动传到服务器上,这样速度更快。

 下载完后(或者上传好后,我是手动下载再上传的),会在/weights/得到一个如下图的文件

然后我们回到上一级工作路径下,也就是/yolov7/下,输入如下命令 (linux系统下)

cd ..

到这里,我们的预训练权重也就下载好了。

测试:

这一步的重要目的,是测试环境是否都安装好了,如果能够顺利跑下来并得到相应的结果,就说明环境是安装好的了;如果没安装好,则再安装一次环境即可

首先,我们下载已经训练好的权重文件(这里的权重文件和Transfer Learning的预训练文件并不是同一个文件),同样地,下载到/weights/下面。

 或者在linux系统下:

cd weights
wget https://github.com/WongKinYiu/yolov7/releases/download/v0.1/yolov7.pt
cd ..

下载好了之后,得到两个权重文件。接下来,就是直接进行测试了。现在我们在/yolov7/这个工作路径下,输入如下命令

python detect.py --weights weights/yolov7.pt --source inference/images

参数说明

--weights weight/yolov7.pt   # 这个参数是把已经训练好的模型路径传进去,就是刚刚下载的文件
--source inference/images   # 传进去要预测的图片

如果得到如下的运行结果,则说明运行成功,预测的图片被保存在了/runs/detect/exp/文件夹下

数据准备:

1. 准备工作

我们生成/datasets/文件夹,把数据都放进这个文件夹里进行统一管理。训练数据用的是yolo数据格式,不过多了两个.txt文件,这两个文件存放的,是每个图片的路径,后面会具体介绍。

2. 准备yolo格式的数据

2.1. 创建文件夹(linux系统下)

mkdir datasets

得到如下的结果(该文件夹用来同意管理数据)

2.2. 准备yolo格式数据集

如果不懂yolo格式数据集是什么样子的,建议先学习一下(可参考这篇文章)。大部分CVer都会推荐用labelImg进行数据的标注,我也不例外,推荐大家用labelImg进行数据标注。不过这里我不再详细介绍如何使用labelImg,网上有很多的教程。同时,标注数据需要用到图形交互界面,远程服务器就不太方便了,因此建议在本地电脑上标注好后再上传到服务器上。

这里假设我们已经得到标注好的yolo格式数据集,那么这个数据集将会按照如下的格式进行存放。

不过在这里面,train_list.txtval_list.txt是后来我们要自己生成的,而不是labelImg生成的;其他的则是labelImg生成的。

接下来,就是生成 train_list.txtval_list.txttrain_list.txt存放了所有训练图片的路径,val_list.txt则是存放了所有验证图片的路径,如下图所示,一行代表一个图片的路径。这两个文件的生成写个循环就可以了,不算难。(可参考这篇文章的法二

结果如下所示:(其中Annotations是VOC转YOLO后,标注文件所在的文件夹,图中train.txt代替train_list.txt

 一行代表一张图片的路径,这是绝对路径,因为工作路径是yolov7,加上这一行就模型就会找到图片的位置了。

到此,数据集就已经准备好了。

配置训练的相关文件:

1. 前言

总共有两个文件需要配置,一个是/yolov7/cfg/training/yolov7.yaml,这个文件是有关模型的配置文件;一个是/yolov7/data/coco.yaml,这个是数据集的配置文件。

2. 配置模型文件

第一步,复制yolov7.yaml文件到相同的路径下,然后重命名,我们重命名为yolov7-pig.yaml

第二步,打开yolov7-pig.yaml文件,进行如下图所示的修改,这里修改的地方只有一处,就是把nc修改为我们数据集的目标总数即可。然后保存

3. 配置数据集文件

第一步,复制coco.yaml文件到相同的路径下,然后重命名,我们命名为Pig.yaml

第二步,打开Pig.yaml文件,进行如下所示的修改,需要修改的地方为5处。

第一处:把代码自动下载COCO数据集的命令注释掉,以防代码自动下载数据集占用内存;

第二处:修改train的位置为train_list.txt的路径;

第三处:修改val的位置为val_list.txt的路径;

第四处:修改nc为数据集目标总数;

第五处:修改names为数据集所有目标的名称。然后保存。

至此,相关的文件已经配置完成。(同理,用train.txt代替train_list.txt) 

开始训练:

1. 前言

训练用到之前提到的三个文件:预训练模型yolov7_training.ptyolov7-pig.yamlPig.yaml,当然还有一些其他的超参数,具体的命令如下:

python train.py --weights weights/yolov7_training.pt --cfg cfg/training/yolov7-pig.yaml --data data/Pig.yaml --device 0,1 --batch-size 64 --epoch 10

下面简单介绍一下相关的参数。

--weights weights/yolov7.pt             # 接收预训练模型路径的参数
--cfg cfg/training/yolov7-pig.yaml      # 接收模型配置文件的参数
--data data/Pig.yaml                    # 接收数据配置文件的参数
--device 0,1                            # GPU/CPU训练,我有2块,因此为0,1;若1块,则0;若CPU,则cpu
--batch-size 64                         # 按照自己GPU内存大小大致确定
--epoch 10                              # 不用多说;我仅展示,因此不训练那么多次了

然后运行界面如下,图中红色部分表示开始扫描数据,然后会在yolov7/datasets/Helmet/下生成两个缓存文件,这两个文件是方便模型进行数据读取生成的,训练过程中不要删除。扫描完后模型会开始训练,如下图。

更多的参数可以从train.py文件中找到,如下图

训练结果与推理 

1. 训练结果

训练结束后,终端会打印出最好的模型和最后一个epoch的模型结果保存在哪里,如下图所示,

/runs/train/exp/下,也存了其他的训练结果文件,比如每个epoch的结果到保存到了.txt文件夹里,如下图所示;有兴趣的可以自行探索。

 

2. 推理

推理其实就是跟测试里的差不多,无非就是把相关的权重文件和测试图片换一下即可。

python detect.py --weights runs/train/exp3/weights/best.pt --source datasets/testImages

 推理的结果不展示,可自行测试。

 以上就是其全部内容。

参考文章:【小白教学】如何用YOLOv7训练自己的数据集 - 知乎

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值