YOLOV7训练自己的yolo数据集

发布于:2023-01-07 ⋅ 阅读:(219) ⋅ 点赞:(0)

YOLOv7源码:https://github.com/WongKinYiu/yolov7


一、配置YOLOv7环境

在服务器上创建yolov7虚拟环境

conda create -n yolov7 python=3.7

进入虚拟环境,下载prtorch,不清楚怎么使用清华源下载pytorch的可以参考我的这篇文章:配置pytorch环境

conda activate yolov7
conda install pytorch torchvision torchaudio cudatoolkit=11.3

进入YOLOv7文件夹中,安装需要的依赖环境

cd yolov7-main

这里需要注释掉requirements.txt中的torch和torchvision,因为官网给出的是CPU版本,我们上面已经下载了GPU版本,不需要重复安装。
在这里插入图片描述
安装依赖环境

pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple

安装完依赖环境后,去官网下载yolov7的权重文件,放入weights目录下,运行detec.py文件测试是否安装成功

python detect.py --weights weights/yolov7.pt --conf 0.25 --img-size 640 --source inference/images/horses.jpg

在这里插入图片描述

二、使用自己的数据集训练

修改yolov7配置

首先创建yolov7-custon.yaml文件

在这里插入图片描述

修改nc,设置为自己训练的类别个数

在这里插入图片描述

数据集格式

YOLOv7的代码风格和训练风格跟YOLOv5很相似,所以可以采用YOLOv5的数据集格式来训练,不知道怎么使用yolov5训练的可以参考我的这篇文章:将VOC格式转换为yolo格式
在这里插入图片描述

图片:

在这里插入图片描述

标签:

在这里插入图片描述

创建自己数据集的yaml文件

新建mydata.yaml文件

在这里插入图片描述

  • train: 修改为自己的训练集路径
  • val: 修改为自己的验证集路径
  • nc: 修改为自己的数据集类别数量
  • names: 修改为自己的数据集类别标签
    在这里插入图片描述

开始训练

训练时需要注意这三个参数
在这里插入图片描述
在终端输入命令行开始训练

从头开始训练(不推荐!)

单GPU训练

python train.py --workers 1 --device 0 --batch-size 8 --data data/mydata.yaml --img 640 640 --cfg cfg/training/yolov7-custom.yaml --weights '' --name yolov7 --hyp data/hyp.scratch.p5.yaml

多GPU训练

python -m torch.distributed.launch --nproc_per_node 4 --master_port 9527 train.py --workers 8 --device 0,1,2,3 --sync-bn --batch-size 128 --data data/mydata.yaml --img 640 640 --cfg cfg/training/yolov7-custom.yaml --weights '' --name yolov7 --hyp data/hyp.scratch.p5.yaml

用官方权重进行fine-train(推荐)

下载官方预训练权重
单GPU训练

python train.py --workers 8 --device 0 --batch-size 32 --data data/mydata.yaml --img 640 640 --cfg cfg/training/yolov7-custom.yaml --weights 'yolov7_training.pt' --name yolov7-fine-train --hyp data/hyp.scratch.p5.yaml

多GPU训练

# train p5 models
python -m torch.distributed.launch --nproc_per_node 4 --master_port 9527 train.py --workers 8 --device 0,1,2,3 --sync-bn --batch-size 128 --data data/mydata.yaml --img 640 640 --cfg cfg/training/yolov7-custom.yaml --weights 'yolov7_training.pt' --name yolov7-fine-tran --hyp data/hyp.scratch.p5.yaml

用训练好的权重进行测试

去runs文件下找到训练好的权重进行测试

python test.py --data data/mydata.yaml --img 640 --batch 32 --conf 0.001 --iou 0.65 --device 0 --weights runs/train/yolov7/weights/best.pt --name yolov7_640_val

用训练好的权重进行预测

python detect.py --weights runs/train/yolov7/weights/best.pt --conf 0.25 --img-size 640 --source inference/images/DOTA.jpg

在这里插入图片描述
效果还不错

三、可能遇到的问题

subprocess.CalledProcessError: Command ‘git tag’ returned non-zero exit status 128?

出现这种情况大概率是传参有问题,参数缺失或者参数错误

本文含有隐藏内容,请 开通VIP 后查看