码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • yolov7训练自定义数据集时的注意事项


    慢慢记录吧

    yolov7的数据集格式和yolov5是一样的,基本上直接将yolov5的数据集拿过来用即可

     文件层级:

    ├—data
    
    │ ├—train
    
    │ │ ├—images
    │ │ │ ├—000000000001.jpg
    │ │ │ ├—000000000002.jpg
    │ │ ├—labels
    │ │ │ ├—000000000001.txt
    │ │ │ ├—000000000002.txt
    
    │ ├—valid
    │ │ ├—images
    │ │ ├—labels

     区别就在yaml文件上,

    yolov5的文件格式:

     yolov7的文件格式:

    区别就是没了path,主要是有些数据比较大,不想移来移去,所以直接修改v7的代码

    主要修改的是yolov7\utils\general.py

    将以下代码加入check_dataset函数即可:

    1. FILE = Path(__file__).resolve()
    2. ROOT = FILE.parents[1]
    3. path = Path(dict.get('path') or '')
    4. if not path.is_absolute():
    5. path = (ROOT / path).resolve()
    6. for k in 'train', 'val', 'test':
    7. if dict.get(k): # prepend path
    8. dict[k] = str(path / dict[k]) if isinstance(dict[k], str) else [str(path / x) for x in dict[k]]
    1. def check_dataset(dict):
    2. FILE = Path(__file__).resolve()
    3. ROOT = FILE.parents[1]
    4. path = Path(dict.get('path') or '')
    5. if not path.is_absolute():
    6. path = (ROOT / path).resolve()
    7. for k in 'train', 'val', 'test':
    8. if dict.get(k): # prepend path
    9. dict[k] = str(path / dict[k]) if isinstance(dict[k], str) else [str(path / x) for x in dict[k]]
    10. # Download dataset if not found locally
    11. val, s = dict.get('val'), dict.get('download')
    12. if val and len(val):
    13. val = [Path(x).resolve() for x in (val if isinstance(val, list) else [val])] # val path
    14. if not all(x.exists() for x in val):
    15. print('\nWARNING: Dataset not found, nonexistent paths: %s' % [str(x) for x in val if not x.exists()])
    16. if s and len(s): # download script
    17. print('Downloading %s ...' % s)
    18. if s.startswith('http') and s.endswith('.zip'): # URL
    19. f = Path(s).name # filename
    20. torch.hub.download_url_to_file(s, f)
    21. r = os.system('unzip -q %s -d ../ && rm %s' % (f, f)) # unzip
    22. else: # bash script
    23. r = os.system(s)
    24. print('Dataset autodownload %s\n' % ('success' if r == 0 else 'failure')) # analyze return value
    25. else:
    26. raise Exception('Dataset not found.')

            这样就只需要在配置文件中改数据集路径即可。

            还有点需要注意就是用yolov5训练后的cache文件,在训练yolov7时要删除,不然会报_pickle.UnpicklingError: STACK_GLOBAL requires str

  • 相关阅读:
    Mac电脑信息大纲记录软件 OmniOutliner 5 Pro for Mac中文
    <二>Qt斗地主游戏开发:过场动画的实现
    Java中Map架构简介说明
    当你在Linux系统中编译安装MySQL数据库卡住了怎么办?
    【“在路上”疫情信息检测】——项目页面搭建
    Netty 学习(四):ChannelHandler 的事件传播和生命周期
    nodejs+java+python家乡美食分享推荐网站系统vue+elementui
    java计算机毕业设计基于springboo个人家庭理财记账管理系统
    python 3.11中安装sympy(符号工具包)
    在启智平台上安装anconda(启智平台中新建调试任务,选的基础镜像中有conda的,就无需安装)
  • 原文地址:https://blog.csdn.net/athrunsunny/article/details/126307321
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号