我的编程空间,编程开发者的网络收藏夹
学习永远不晚

跑通官方的yolov7-tiny实验记录(yolov7-tiny可作为yolov5s的对比实验网络)

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

跑通官方的yolov7-tiny实验记录(yolov7-tiny可作为yolov5s的对比实验网络)

目录

1. 一些可用的参考链接

2. 开始训练yolov7

yolov7-tiny
参数量:6023106
GFLOPs:13.2

  1. 先进入官网下载yolov7-main代码(直接下载的master根目录代码)
  2. 直接点击下载yolov7-tiny.pt,有12MB
    如果是要在AutoDL中训练,则需要再下载Arial.ttf字体后上传到yolov7-main根目录
  3. 先跟着以下训练命令创建或者配置好一些文件,再回来复制这里面的训练命令,粘贴进终端开始训练

先放上我的训练命令,然后讲解设置到的重要参数的含义

建议:以下参数可以直接通过更改train.pydefault值来设置,通过default值来设置的好处是:
1)直接运行train.py即可,不用每次都来重复设置这些值
2)避免以后回顾代码时忘记了自己参数是怎么设置的
3)忘记在哪里看到了,说是在pycharm中直接运行py文件会比在终端设置参数来运行的训练速度快一些;如果是在AutoDL上训练那就没啥影响,因为是必须在终端中用命令来运行的。但是我觉得因为前2点原因还是直接先在py中设置好default值比较方便

python train.py --weights yolov7-tiny.pt --cfg cfg/training/yolov7-tiny.yaml --data data/mydata.yaml --hyp data/hyp.scratch.p5.yaml --epochs 300 --batch-size 32 --workers 16 --name yolov7-tiny

其他的重要参数:

  • --adam:命令行中直接加上--adam则表示使用Adam优化器,否则默认使用SGD(如果是自制数据集,建议使用Adam[其实这个策略也是学到的,忘记从哪儿学到的了,可自行尝试一下]。训练yolov5时我对比了一下,使用SGD时loss值变化比较平缓,相反Adam会比较波动。但是采用Adam训练结束之后,各项指标值比如map0.5、FPS等会高一些)

  • --img-size:设置将图像缩放至img-size统一尺寸,再喂入数据网络训练(默认是[640, 640],通常数据集采用这个尺寸就行了。如果是大分辨率图像且采用更大的网络,可适当调大img-size,保持是32的倍数就好。img-size值越大,占用显存就越多,训练速度就更慢,对显卡的要求就越高)

  • --rect:命令行中直接加上--rect则表示开启矩形推理(可以试试不开启和开启这个参数,然后对比训练结果。兴许开启之后会效果好一些)

  • --resume:命令行中加上--resume True则表示进行断点训练(需要开启这个命令通常是因为【训练突然中断or还想继续训练】,有需要的话可参考我这个博客进行更改👉yolov5ds-断点训练、继续训练、先终止训练并调整最终epoch(yolov5同样适用)

剩下的参数,可以参见我分享出来的训练参数解释链接


开始配置文件!!!sorry,前调太长了哈哈哈

2.1 --weights

--weights:用于指明预训练权重文件位置(如果不需要预训练权重,则使default值为空即''即可,或者终端中命令参数写成--weights ''

本篇文章是要使用yolov7-tiny,所以用到了yolov7-tiny.pt预训练权重。点击下载yolov7-tiny.pt

2.2 --cfg

--cfg:用于指明模型的配置文件(这个要指明training文件夹下的yolov7-tiny,注意是training下的yaml,不是deploy下的,写成这样:--cfg cfg/training/yolov7-tiny.yaml

2.3 --data

--data:用来指明自己的配置数据来源,建议将data文件夹下的coco.yaml复制另存为mydata.yaml。命令中写成--data data/mydata.yaml

注意:数据集不用必须存放到当前项目中,只要在mydata.yaml文件中的trainvaltest指明的txt文件包含了相应任务的图像绝对路径即可。(或者是直接在这里写上文件夹地址也可以,最好是绝对路径。images和labels排布如下所示)

如果已经存在如下的datasets数据集分布,则可以去我博客【脚本】生成已划分好训练集、验证集、测试集的数据集对应的train.txt、val.txt、test.txt【包含图像的绝对地址】调用代码生成所需txt文件:

datasets├─images│  ├─test│  ├─train│  └─val├─labels   ├─test   ├─train   └─val

2.4 --hyp

--hyp:超参数配置文件,我使用的是默认的data/hyp.scratch.p5.yaml文件(我将这个里面的数据增强给关掉了,yolov5中的在线数据增强我也关掉了,因为有人说过:自制的数据集本来复杂度就不够,开启在线数据增强的话,很容易训练效果不好,造成过拟合。但是我看还有一个超参数文件是data/hyp.scratch.tiny.yaml,不知道是不是专门用于tiny效果会好点,正在实验中[结果就是,这个tiny.yaml的超参数配置没有p5.yaml的效果好,map0.5降了2个点。还是就是用默认的超参数设置吧]

关闭在线数据增强的方式就是,将15行以下的值全部改为0

2.5 --epochs

--epochs:训练的轮数,默认为300(如果是自制数据集,类别不多且图像张数不多、复杂度也不是太多的话,设置200~300肯定是够的了)

2.6 --batch-size

--batch-size:设置一次性选用多少张图像进行训练(下图引自手把手调参最新 YOLOv7 模型 训练部分 - 最新版本(二)

(通常是8、16、32、64,这取决于自己的GPU内存有多大,大的话就可以设置多点,小的话设置成1、2、4、6、24等,最好是2的倍数。通常论文里面设置成的32、64)

2.7 --workers

--workers:训练时使用的CPU线程数。如果是在windows上训练,一定要设置成0,不然会出错;如果是Linux系统,通常设置成8、16(设置得越大,训练可能会快点)

2.8 --name

--name:设置结果保存文件夹的名称,默认是exp(建议使用这个参数,指明本次实验结果是训练什么模型,以免后续再回顾实验结果时搞不清楚,写成--name yolov7-tiny

来源地址:https://blog.csdn.net/LWD19981223/article/details/127883655

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

跑通官方的yolov7-tiny实验记录(yolov7-tiny可作为yolov5s的对比实验网络)

下载Word文档到电脑,方便收藏和打印~

下载Word文档

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录