码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 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
    
    • 1

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

    conda activate yolov7
    conda install pytorch torchvision torchaudio cudatoolkit=11.3
    
    • 1
    • 2

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

    cd yolov7-main
    
    • 1

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

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

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

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

    在这里插入图片描述

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

    修改yolov7配置

    首先创建yolov7-custon.yaml文件
    
    • 1

    在这里插入图片描述

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

    在这里插入图片描述

    数据集格式

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

    图片:
    
    • 1

    在这里插入图片描述

    标签:
    
    • 1

    在这里插入图片描述

    创建自己数据集的yaml文件

    新建mydata.yaml文件
    
    • 1

    在这里插入图片描述

    • 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
    
    • 1

    多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
    
    • 1

    用官方权重进行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
    
    • 1

    多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
    
    • 1
    • 2

    用训练好的权重进行测试

    去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
    
    • 1

    用训练好的权重进行预测

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

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

    三、可能遇到的问题

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

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

  • 相关阅读:
    AI是否有意识?科学家提出标准来寻找答案
    三、肺癌检测-肺癌检测代码项目文件准备
    4年手工测试被应届生取代了,用血与泪的教训给xdm一个忠告,该学自动化了...
    Lambda表达式实现方式、标准格式、练习、省略模式、注意事项及和匿名内部类的区别
    编码技巧 --- 如何实现字符串运算表达式的计算
    Mysql慢sql优化
    跨域(浏览器)
    UDF 函数返回中文结果在 datastudio 客户端为乱码
    【设计模式】设计模式概述
    【C++ 科学计算】矩阵行列式计算方法
  • 原文地址:https://blog.csdn.net/RooKichenn/article/details/126478864
  • 最新文章
  • 沪漂五周年了:我越来越迷茫了
    Agentic Skill Routing 实战:别再把所有 Skill 塞进 AI Agent 上下文
    MySQL-Seconds_behind_master的精度误差
    [MAF预定义ChatClient中间件-03]CachingChatClient——利用缓存省钱省时间
    AI的至暗历史:从万众期待到被政府撤资,AI的两次死亡徘徊
    Agent OS :五种驯服不确定性的范式
    PortSwigger SQL注入LAB11
    数据库即时编译JIT
    [Begin]AI Learn Data Day 0
    深度学习进阶(二十七)现代 LLM 的核心架构设计其二:SwiGLU
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号