YOLOV7训练自己的yolo数据集

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版本,不需要重复安装。

YOLOV7训练自己的yolo数据集
安装依赖环境
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训练自己的yolo数据集

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

修改yolov7配置

首先创建yolov7-custon.yaml文件

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

YOLOV7训练自己的yolo数据集

数据集格式

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

YOLOV7训练自己的yolo数据集
图片:

YOLOV7训练自己的yolo数据集
标签:

YOLOV7训练自己的yolo数据集

创建自己数据集的yaml文件

新建mydata.yaml文件

YOLOV7训练自己的yolo数据集
  • train: 修改为自己的训练集路径
  • val: 修改为自己的验证集路径
  • nc: 修改为自己的数据集类别数量
  • names: 修改为自己的数据集类别标签
    YOLOV7训练自己的yolo数据集

开始训练

训练时需要注意这三个参数

YOLOV7训练自己的yolo数据集
在终端输入命令行开始训练

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

单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训练


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

YOLOV7训练自己的yolo数据集
效果还不错

三、可能遇到的问题

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

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

Original: https://blog.csdn.net/RooKichenn/article/details/126478864
Author: RooKiChen
Title: YOLOV7训练自己的yolo数据集

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/627631/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球