YOLOV7训练自己的yolo数据集

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

文章目录

  • 一、配置YOLOv7环境
  • 二、使用自己的数据集训练
  • 修改yolov7配置
  • 数据集格式
  • 创建自己数据集的yaml文件
  • 开始训练
  • 从头开始训练(不推荐!)
  • 用官方权重进行fine-train(推荐)
  • 用训练好的权重进行测试
  • 用训练好的权重进行预测
  • 三、可能遇到的问题
  • subprocess.CalledProcessError: Command ‘git tag’ returned non-zero exit status 128?

  • 一、配置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?

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

    物联沃分享整理
    物联沃-IOTWORD物联网 » YOLOV7训练自己的yolo数据集

    发表评论