位置: IT常识 - 正文

手把手带你调参Yolo v5(二)(调参技巧)

编辑:rootadmin
手把手带你调参Yolo v5(二)

推荐整理分享手把手带你调参Yolo v5(二)(调参技巧),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:调参pid,gan调参,调参软件,如何调参,调参pid,如何调参,调参调的是什么,调参pid,内容如对您有帮助,希望把文章链接给更多的朋友!

来源:投稿 作者:王同学 ​​​​​​​编辑:学姐

今天我们继续上次的YOLOv5参数解析,这次主要解析源码中train.py文件中包含的参数。

1.1'--weights'

1.2'--cfg'

1.3'--data'

1.4'--hyp'

1.5'--epochs'

1.6'--batch-size'

1.7'--imgsz', '--img', '--img-size'

1.8'--rect'🍀

1.9'--resume'🍀

1.10'--nosave'

1.11'--noval'

1.12'--noautoanchor'🍀

1.13'--evolve'🍀

1.14'--bucket'

1.15'--cache'

1.16'--image-weights'

1.17'--device'

1.18'--multi-scale'🍀

1.19'--single-cls'

1.20'--optimizer'

1.21'--sync-bn'

1.22'--workers'

1.23'--project'

1.24'--name'

1.25'--exist-ok'

1.26'--quad'

1.27'--cos-lr'🍀

1.28'--label-smoothing'🍀

1.29'--patience'

1.30'--freeze'🍀

1.31'--save-period'

1.32'--local_rank'

1.33'--entity'

1.34'--upload_dataset'

1.35'--bbox_interval'

1.36'--artifact_alias'

0.首次运行常见错误🍀

刚拿到代码可以运行train.py文件看看,一般都会出现这个错误:

OMP: Hint This means that multiple copies of the OpenMP runtime have been linked into the program. That is dangerous, since it can degrade performance or cause incorrect results. The best thing to do is to ensure that only a single OpenMP runtime is linked into the process, e.g. by avoiding static linking of the OpenMP runtime in any library. As an unsafe, unsupported, undocumented workaround you can set the environment variable KMP_DUPLICATE_LIB_OK=TRUE to allow the program to continue to execute, but that may cause crashes or silently produce incorrect results. For more information, please see http://www.intel.com/software/products/support/.

解决方案:在train.py文件里加入以下代码:

import osos.environ['KMP_DUPLICATE_LIB_OK']='TRUE'1.train.py参数解析🚀

首先还是打开根目录下的train.py,直接看parse_opt()

1.1'--weights'

指定预训练权重路径;如果这里设置为空的话,就是自己从头开始进行训练;下图是官方提供的预训练权重

1.2'--cfg'

指定模型配置文件路径的;源码里面提供了这5个配置文件,配置文件里面指定了一些参数信息和backbone的结构信息。

1.3'--data'

数据集对应的参数文件;里面主要存放数据集的类别和路径信息。

yolo源码里面提供了9种数据集的配置文件

1.4'--hyp'

指定超参数文件的路径;超参数里面包含了大量的参数信息,同样提供了5个

1.5'--epochs'

训练的轮数;默认为300轮,显示效果是0-299

1.6'--batch-size'

每批次的输入数据量;default=-1将时自动调节batchsize大小。

这里说一下epoch、batchsize、iteration三者之间的联系

1、batchsize是批次大小,假如取batchsize=24,则表示每次训练时在训练集中取24个训练样本进行训练。 2、iteration是迭代次数,1个iteration就等于一次使用24(batchsize大小)个样本进行训练。 3、epoch:1个epoch就等于使用训练集中全部样本训练1次。

1.7'--imgsz', '--img', '--img-size'

训练集和测试集图片的像素大小;输入默认640*640,这个参数在你选择yolov5l那些大一点的权重的时候,要进行适当的调整,这样才能达到好的效果。

1.8'--rect'🍀

手把手带你调参Yolo v5(二)(调参技巧)

是否采用矩阵推理的方式去训练模型;

所谓矩阵推理就是不再要求你训练的图片是正方形了;矩阵推理会加速模型的推理过程,减少一些冗余信息。

下图分别是方形推理方式和矩阵推理方式

1.9'--resume'🍀

断点续训:即是否在之前训练的一个模型基础上继续训练,default 值默认是 false;如果想采用断点续训的方式,这里我推荐一种写法,即首先将default=False 改为 default=True 随后在终端中键入如下指令

python train.py --resume D:\Pycharm_Projects\yolov5-6.1-4_23\runs\train\exp19\weights\last.pt

==D:\Pycharm_Projects\yolov5-6.1-4_23\runs\train\exp19\weights\last.pt==为你上一次中断时保存的pt文件路径

输入指令后就可以看到模型是继续从上次结束时开始训练的

1.10'--nosave'

是否只保存最后一轮的pt文件;我们默认是保存best.pt和last.pt两个的

1.11'--noval'

只在最后一轮测试;正常情况下每个epoch都会计算mAP,但如果开启了这个参数,那么就只在最后一轮上进行测试,不建议开启

1.12'--noautoanchor'🍀

是否禁用自动锚框;默认是开启的,自动锚点的好处是可以简化训练过程;

yolov5中预先设定了一下锚定框,这些锚框是针对coco数据集的,其他目标检测也适用,可以在models/yolov5.文件中查看,例如如图所示,这些框针对的图片大小是640640。这是默认的anchor大小。需要注意的是在目标检测任务中,一般使用大特征图上去检测小目标,因为大特征图含有更多小目标信息,因此大特征图上的anchor数值通常设置为小数值,小特征图检测大目标,因此小特征图上anchor数值设置较大。

在yolov5 中自动锚定框选项,训练开始前,会自动计算数据集标注信息针对默认锚定框的最佳召回率,当最佳召回率大于等于0.98时,则不需要更新锚定框;如果最佳召回率小于0.98,则需要重新计算符合此数据集的锚定框。在parse_opt设置了默认自动计算锚框选项,如果不想自动计算,可以设置这个,建议不要改动。

1.13'--evolve'🍀

遗传超参数进化;yolov5使用遗传超参数进化,提供的默认参数是通过在COCO数据集上使用超参数进化得来的(也就是下图这些参数)。由于超参数进化会耗费大量的资源和时间,所以建议大家不要动这个参数。

遗传算法是利用种群搜索技术将种群作为一组问题解,通过对当前种群施加类似生物遗传环境因素的选择、交叉、变异等一系列的遗传操作来产生新一代的种群,并逐步使种群优化到包含近似最优解的状态,遗传算法调优能够求出优化问题的全局最优解,优化结果与初始条件无关,算法独立于求解域,具有较强的鲁棒性,适合于求解复杂的优化问题,应用较为广泛。

1.14'--bucket'

谷歌云盘;通过这个参数可以下载谷歌云盘上的一些东西,但是现在没必要使用了

1.15'--cache'

是否提前缓存图片到内存,以加快训练速度,默认False;开启这个参数就会对图片进行缓存,从而更好的训练模型。

1.16'--image-weights'

是否启用加权图像策略,默认是不开启的;主要是为了解决样本不平衡问题;开启后会对于上一轮训练效果不好的图片,在下一轮中增加一些权重;

1.17'--device'

设备选择;这个参数就是指定硬件设备的,系统会自己判断的

1.18'--multi-scale'🍀

是否启用多尺度训练,默认是不开启的;多尺度训练是指设置几种不同的图片输入尺度,训练时每隔一定iterations随机选取一种尺度训练,这样训练出来的模型鲁棒性更强。

多尺度训练在比赛中经常可以看到他身影,是被证明了有效提高性能的方式。输入图片的尺寸对检测模型的性能影响很大,在基础网络部分常常会生成比原图小数十倍的特征图,导致小物体的特征描述不容易被检测网络捕捉。通过输入更大、更多尺寸的图片进行训练,能够在一定程度上提高检测模型对物体大小的鲁棒性。

1.19'--single-cls'

设定训练数据集是单类别还是多类别;默认为 false多类别

1.20'--optimizer'

选择优化器;默认为SGD,可选SGD,Adam,AdamW

1.21'--sync-bn'

是否开启跨卡同步BN;开启参数后即可使用 SyncBatchNorm多 GPU 进行分布式训练

1.22'--workers'

最大worker数量;这里经常出问题,建议设置成0

1.23'--project'

指定训练好的模型的保存路径;默认在runs/train

1.24'--name'

设定保存的模型文件夹名,默认在exp;

1.25'--exist-ok'

每次预测模型的结果是否保存在原来的文件夹;如果指定了这个参数的话,那么本次预测的结果还是保存在上一次保存的文件夹里;如果不指定就是每次预测结果保存一个新的文件夹下。

1.26'--quad'

官方给出的开启这个功能后的实际效果:

好处是在比默认 640 大的数据集上训练效果更好

副作用是在 640 大小的数据集上训练效果可能会差一些

1.27'--cos-lr'🍀

是否开启余弦学习率;

这是我不采用cos-lr时学习率的曲线:

开启后的学习率应该是这样子:

1.28'--label-smoothing'🍀

是否对标签进行平滑处理,默认是不启用的;

在训练样本中,我们并不能保证所有sample都标注正确,如果某个样本标注错误,就可能产生负面印象,如果我们有办法“告诉”模型,样本的标签不一定正确,那么训练出来的模型对于少量的样本错误就会有“免疫力”采用随机化的标签作为训练数据时,损失函数有1-ε的概率与上面的式子相同,比如说告诉模型只有0.95概率是那个标签。

1.29'--patience'

早停;如果模型在default值轮数里没有提升,则停止训练模型

1.30'--freeze'🍀

指定冻结层数量;可以在yolov5s.yaml中查看主干网络层数。

冻结训练是迁移学习常用的方法,当我们在使用数据量不足的情况下,通常我们会选择公共数据集提供权重作为预训练权重,我们知道网络的backbone主要是用来提取特征用的,一般大型数据集训练好的权重主干特征提取能力是比较强的,这个时候我们只需要冻结主干网络,fine-tune后面层就可以了,不需要从头开始训练,大大减少了实践而且还提高了性能。

例如如下指令,代表冻结前8层,因为只有9层,注意不要超过9

python train.py --freeze 8

这里分享一个对比冻结效果的项目

这里是项目的部分截图

1.31'--save-period'

用于设置多少个epoch保存一下checkpoint;

1.32'--local_rank'

DistributedDataParallel 单机多卡训练,单GPU设备不需要设置;

1.33'--entity'

在线可视化工具,类似于tensorboard

1.34'--upload_dataset'

是否上传dataset到wandb tabel(将数据集作为交互式 dsviz表 在浏览器中查看、查询、筛选和分析数据集) 默认False

1.35'--bbox_interval'

设置界框图像记录间隔 Set bounding-box image logging interval for W&B 默认-1

1.36'--artifact_alias'

功能作者还未实现

小彩蛋🎉

当我们设置完参数以后,可以通过如下的方式来查看参数具体的值,这里拿detect.py文件举例

第一步:在这个位置打个断点

第二步:点击“debug”

第三步:点击“步过”

最后一步:展开opt就可以看到我们的参数信息啦

有问题欢迎大家指正,如果感觉有帮助的话请点赞支持下👍📖🌟

Yolo系列论文+代码数据集🚀🚀🚀

点击下方卡片关注《学姐带你玩AI》回复“YOLO”即可领取

码字不易,欢迎大家点赞评论收藏!

本文链接地址:https://www.jiuchutong.com/zhishi/297838.html 转载请保留说明!

上一篇:Yolov5中使用Resnet18作为主干网络(yolov5中使用的限制目标宽高的方法防止梯度爆炸)

下一篇:集成学习之Stacking(堆栈)方法(stacking 集成)

  • 腾讯视频如何邀请好友一起看(腾讯视频如何邀请一起看)

    腾讯视频如何邀请好友一起看(腾讯视频如何邀请一起看)

  • 钉钉显示未入群怎么删除(钉钉显示未入群但是群里有名字)

    钉钉显示未入群怎么删除(钉钉显示未入群但是群里有名字)

  • 怎样设置电脑显示器的分辨率(怎样设置电脑显示屏密码)

    怎样设置电脑显示器的分辨率(怎样设置电脑显示屏密码)

  • wps怎么批量粘贴(wps怎么批量粘贴到合并单元格)

    wps怎么批量粘贴(wps怎么批量粘贴到合并单元格)

  • OPPO手机设置里面有个google(oppo手机设置里的存储在哪)

    OPPO手机设置里面有个google(oppo手机设置里的存储在哪)

  • 华为mate30拍照颜色失真(华为mate30拍照颜色发黄)

    华为mate30拍照颜色失真(华为mate30拍照颜色发黄)

  • 键盘尺寸(苹果键盘尺寸)

    键盘尺寸(苹果键盘尺寸)

  • 抖音直播电视剧可以吗(抖音直播电视剧版权如何申请)

    抖音直播电视剧可以吗(抖音直播电视剧版权如何申请)

  • 硬盘在工作时应特别注意避免(硬盘读不出来)

    硬盘在工作时应特别注意避免(硬盘读不出来)

  • nice有照片数量但不显示(nice怎么设置照片权限)

    nice有照片数量但不显示(nice怎么设置照片权限)

  • 淘宝直播中怎么上链接(淘宝直播中怎么看回播)

    淘宝直播中怎么上链接(淘宝直播中怎么看回播)

  • 抖音喜欢作品怎么删除(抖音喜欢作品怎么批量删除)

    抖音喜欢作品怎么删除(抖音喜欢作品怎么批量删除)

  • 手机充电插口坏了能修吗(苹果手机充电接口坏了能修吗)

    手机充电插口坏了能修吗(苹果手机充电接口坏了能修吗)

  • 手机用一会儿就发热是怎么回事(手机用一会儿就发热怎么回事)

    手机用一会儿就发热是怎么回事(手机用一会儿就发热怎么回事)

  • fig al10华为什么型号(华为fig-al10什么型号)

    fig al10华为什么型号(华为fig-al10什么型号)

  • 表格中日期后面的0怎么不显示(表格中日期后面加文字就年月日几个字就不见了)

    表格中日期后面的0怎么不显示(表格中日期后面加文字就年月日几个字就不见了)

  • 手机qq视频模糊怎么调(手机qq视频模糊不清怎么办)

    手机qq视频模糊怎么调(手机qq视频模糊不清怎么办)

  • 荣耀v30怎么解锁(荣耀v30怎么解锁bl)

    荣耀v30怎么解锁(荣耀v30怎么解锁bl)

  • excel的三个主要功能(excel的三个主要功能是什么)

    excel的三个主要功能(excel的三个主要功能是什么)

  • 手机显示fast boot什么意思(手机显示耳机模式没声音怎么办)

    手机显示fast boot什么意思(手机显示耳机模式没声音怎么办)

  • 嘀嗒出行怎么申请发票(嘀嗒出行怎么申请注册司机)

    嘀嗒出行怎么申请发票(嘀嗒出行怎么申请注册司机)

  • 荣耀v20手机防水吗(荣耀x20防水)

    荣耀v20手机防水吗(荣耀x20防水)

  • 淘宝账户余额是哪的钱(淘宝账户余额是啥)

    淘宝账户余额是哪的钱(淘宝账户余额是啥)

  • 拼多多砍价记录在哪看(拼多多砍价记录怎么删除不了)

    拼多多砍价记录在哪看(拼多多砍价记录怎么删除不了)

  • 苹果x电池健康多少正常(苹果x电池健康怎么看)

    苹果x电池健康多少正常(苹果x电池健康怎么看)

  • 毒app怎么分期付款(毒分期怎么付款)

    毒app怎么分期付款(毒分期怎么付款)

  • 抖音如何加陌生人微信(抖音如何加陌生好友)

    抖音如何加陌生人微信(抖音如何加陌生好友)

  • Linux常用的磁盘管理及文件目录管理命令总结(常见的linux系统磁盘)

    Linux常用的磁盘管理及文件目录管理命令总结(常见的linux系统磁盘)

  • Win11硬件加速gpu计划在哪里?Win11硬件加速gpu计划关闭方法(win11硬件加速gpu计划怎么关)

    Win11硬件加速gpu计划在哪里?Win11硬件加速gpu计划关闭方法(win11硬件加速gpu计划怎么关)

  • 固定资产什么时候开始折旧
  • 收入准则范围内
  • 资产组可收回金额包含商誉吗
  • 企业接受捐赠固定资产计入什么科目
  • 不同月份的发票能抵扣吗
  • 企业中征码全称
  • 微型企业政府补贴政策
  • 收到房屋租金税率
  • 提供洒水车服务税率
  • 公司刻一套章子多少钱
  • 经营租赁违约金可以直接冲租赁费
  • 企业重组股权支付是什么意思
  • 补交印花税需要调账吗
  • 什么企业没有销售费用
  • 公司持有的房产税
  • 税务局查账征收转为核定征收之程序
  • 物业公司怎么开展业务
  • 取得赔偿款的发票可以抵扣吗
  • 个税专项扣除有几项
  • 经营租赁中出租人发生的初始直接费用是指
  • 银行电子承兑如何撤回
  • win10开机启动文件路径
  • 计算机系统结构第三版课后答案
  • 房地产开发企业资质证书
  • 服务外包企业
  • 固定资产资产评估
  • 股东变更需要哪些手续的法律规定
  • avgcc32.exe进程是什么文件产生的 avgcc32进程信息查询
  • 工会举办的比赛有哪些
  • 固定资产减值准备可以税前扣除吗
  • php二维数组求和
  • vue3+ts+vite
  • 行人重识别map
  • html5简单小游戏代码
  • 删除组合命令
  • 什么叫呆账损失
  • 金税第一次使用怎么用
  • 普通发票增量需要什么资料
  • 财务费用包括什么利息
  • file file=new file()的作用
  • 选择mysql数据库为当前数据库
  • 营改增后为什么利息要提供发票吗
  • 什么是简易征收?其公式是什么?
  • 应收应付会计分录大全
  • 没有发票的房租怎么入账
  • 开票明细是食品类吗
  • 向农业生产者收购的原木 进项
  • 增值税进项税没抵扣
  • 工资有社保是什么意思
  • 销售折扣可以开红字专票吗
  • 税收滞纳金可以扣除吗
  • 未认证的进项税发票入账
  • 税控系统专用设备包括税控收款机吗
  • 扶贫入股分红政策
  • 未达到起征点的增值税怎么填写
  • 分包抵扣金额
  • 水利建设基金的征税对象
  • 反结账钱会转回去吗
  • 房屋出租要交的税有哪些
  • 负数发票跨月怎么作废
  • 一般纳税人混凝土税负率
  • 影视行业成本核算方案
  • 蓝字发票认证怎么操作
  • mysql在cmd命令操作
  • 安装fedora进入不到安装界面
  • usb3.0接口可以插优盘吗
  • watchdog. sys
  • centos virsh
  • win8开始屏幕设置
  • Linux系统中如何编译C程序?
  • 安卓 unity
  • 不错的意思
  • appendChild() 或 insertBefore()使用与区别介绍
  • python多进程编程
  • jquery图片
  • 开发者共享是什么意思
  • 主机端口扫描程序设计python
  • python 连接pg
  • 多计提的税金如何处理
  • 税务部门放管服
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设