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 后查看