位置: IT常识 - 正文

手把手带你调参Yolo v5(一)(调参数是什么意思)

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

推荐整理分享手把手带你调参Yolo v5(一)(调参数是什么意思),希望有所帮助,仅作参考,欢迎阅读内容。

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

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

 YOLO相关内容:

YOLOALL 一文了解YOLO各版本答案

YOLOv1学习笔记

YOLO v2主要看这些重点

YOLO v3对网络结构做了哪些改进?

YOLOv4:目标检测的最佳速度和精度

手把手带你调参Yolo v5(一)

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

YOLOv5+Tesseract-OCR 实现车牌号文本识别

yolov7在工业中的小试牛刀

YOLO系列模型在目标检测领域有着十分重要的地位,随着版本不停的迭代,模型的性能在不断地提升,源码提供的功能也越来越多,那么如何使用源码就显得十分的重要,接下来我会通过两篇文章带大家手把手去了解Yolov5(v6.1)的每一个参数的含义, 并且通过具体的图片例子让大家明白每个参数改动将会给网络带来哪些影响。

1. 代码获取方式🍀

项目地址:https://github.com/ultralytics/yolov5

进入仓库点击tags可以查看项目目前提供的版本

我选择的代码是v6.1版本

2. 准备项目环境✨

在配置Conda环境后就可以进入项目了,可以通过作者提供的requirements.txt文件进行快速安装。

即在终端中键入如下指令:

pip install -r requirements.txt

requirements.txt文件里面有一些包被注释掉了,这些包是做一些额外的操作时候用的,不安装并不会影响训练和测试;但是有些工具是将.pt文件转换成.onnx时必须安装的;以后会介绍pt怎么转换成onnx,这些用的时候安装就可以。

3. YOLOv5命令行预测方式介绍💡

这里介绍一下官方给提供的预测方式,我们平时都是在Pycharm中点击“运行”按钮去预测模型,其实还可以通过命令行的方式去预测,预测后的结果会自动保存到runs/detect路径下;其实在这条指令后面还可以加上一些参数,具体怎么加后面会详细说明。

python detect.py --source 0  # webcam                          img.jpg  # image                          vid.mp4  # video                          path/  # directory                          path/*.jpg  # glob                          'https://youtu.be/Zgi9g1ksQHc'  # YouTube                          'rtsp://example.com/media.mp4'  # RTSP, RTMP, HTTP stream

这里说一下 path/*.jpg ,这个意思就是预测path文件夹下以.jpg结尾的文件

4. detect.py文件解读🚀4.1 检测一下看看效果

我们可以直接运行detect.py文件试试效果,运行后系统会把检测结果保存在runs\detect\exp2路径下

检测效果就是这样子的

这两张是项目自带的图片,我们也可以把自己想测试的图片或者视频放到这个路径下:

4.2 参数详解

打开detect.py直接看217行

4.2.1 “weights”

这个就是指定网络权重的路径,默认是“yolov5s.pt”,官方提供了很多的版本,我们要更换的时候直接按照Model的名字更换就可以了;例如“yolov5m.pt” “yolov5l.pt”,他会自动的下载对应的权重,不需要我们去Github手动下载.(如果下载太慢或者失败只能去官网下载了,下载好了直接放到根目录下就可以)

这里说一下“default”:default是默认的参数,即使我们在运行时不指定具体参数,那么系统也会执行默认的值。

4.2.2 “source”

这个参数就是指定网络输入的路径,默认指定的是文件夹,也可以指定具体的文件或者扩展名等

4.2.3 “data”

这个就是配置文件的一个路径,配置文件里面包含了下载路径和一些数据集基本信息,在训练时如果不自己指定数据集,系统会自己下载coco128数据集

4.2.4 “imgsz, img, img-size”

这个意思就是模型在检测图片前会把图片resize成640的size,然后再喂进网络里,并不是说会把们最终得到的结果resize成640大小。

4.2.5 “conf-thres”

这个就是置信度的阈值,置信度这个概念我在我的博文“YOLOv1详细解读”里面详细介绍了一下,感兴趣的小伙伴可以看一下。

通俗一点来说就是网络对检测目标相信的程度,如果这里设置“0”的话,那么网络只要认为这他预测的这个目标有一点点的概率是正确的目标,他都会给框出来,我们可以通过这几幅图对比一下。

我这里把conf-thres参数依次设置成“0”, “0.25”,“0.8”

原图:

conf-thres=0

conf-thres=0.25

conf-thres=0.8

Q1:这里参数到底设置成多少好呢?

我觉得还是根据自己的数据集情况自行调整

4.2.6 “iou-thres”

这个参数就是调节IoU的阈值,这里简单介绍一下NMS和IoU

4.2.6.1 NMS介绍

在执行目标检测任务时,算法可能对同一目标有多次检测。NMS 是一种让你确保算法只对每个对象得到一个检测框的方法。

在正式使用NMS之前,通常会有一个候选框预清理的工作(简单引入一个置信度阈值),如下图所示:

NMS 算法的大致过程:每轮选取置信度最大的 Bounding Box(简称 BBox) 接着关注所有剩下的BBox中与选取的BBox有着高重叠(IoU)的,它们将在这一轮被抑制。这一轮选取的BBox会被保留输出,且不会在下一轮出现。接着开始下一轮,重复上述过程:选取置信度最大BBox,抑制高IoU BBox。(关于Bounding Box Regression的详细介绍,我强力推荐我的另一篇博文)

IoU可以理解预测框和真实框的交并比

NMS步骤:

第一步:对 BBox 按置信度排序,选取置信度最高的 BBox(所以一开始置信度最高的 BBox 一定会被留下来);

第二步:对剩下的 BBox 和已经选取的 BBox 计算 IOU,淘汰(抑制) IOU 大于设定阈值的 BBox(在图例中这些淘汰的 BBox 的置信度被设定为0)。

第三步:重复上述两个步骤,直到所有的 BBox 都被处理完,这时候每一轮选取的 BBox 就是最后结果。

在上面这个例子中,NMS只运行了两轮就选取出最终结果:第一轮选择了红色BBox,淘汰了粉色BBox;第二轮选择了黄色BBox,淘汰了紫色 BBox和青色BBox。注意到这里设定的IoU阈值是0.5,假设将阈值提高为0.7,结果又是如何?

可以看到,NMS 用了更多轮次来确定最终结果,并且最终结果保留了更多的 BBox,但结果并不是我们想要的。因此,在使用 NMS 时,IoU 阈值的确定是比较重要的,但一开始我们可以选定 default 值(论文使用的值)进行尝试。

4.2.6.2 不同阈值例子 如果看不懂的话就直接通过例子来理解一下:

这里我“iou-thres”分别取“0”,“0.45”,“0.9”,“1”

iou-thres=0:

iou-thres=0.45:

iou-thres=0.9:

iou-thres=1:

4.2.7 “max-det”

这个就是最大检测数量,默认是最多检测1000个目标:

手把手带你调参Yolo v5(一)(调参数是什么意思)

我这里把“max-det”分别设置成“0”“1”“5”“1000”大家感受一下

max-det=0:

max-det=1:

max-det=5:

max-det=1000:

4.2.8 “device”

这个参数意思就是指定GPU数量,如果不指定的话,他会自动检测,这个参数是给GPU多的土豪准备的。

4.2.9 “action='store_true'”说明

这个类型的参数和之前的有很大区别,大家可以把他理解成一个“开关”,当我们运行程序的时候如果指定了带有action='store_true'类型的参数,那么就相当于启动这个参数所对应的功能,反之则不。我会拿下面的举个例子。

4.2.10 “view-img”

这个参数意思就是检测的时候是否实时的把检测结果显示出来,即我如果在终端中输入以下指令 :

python detect.py --view-img

那么意思就是我在检测的时候系统要把我检测的结果实时的显示出来,假如我文件夹有5张图片,如果指定了这个参数的话,那么模型每检测出一张就会显示出一张,直到所有图片检测完成。如果我不指定这个参数,那么模型就不会一张一张的显示出来。

4.2.11 “save-txt”

这个参数的意思就是是否把检测结果保存成一个.txt的格式,我们来看一下指定了这个参数的效果:

终端键入:

python detect.py --save-txt

可以看到输出结果多了一个labels文件夹

打开这个文件夹我们就可以看到两个.txt文件

这两个.txt文件里面保存了一些类别信息和边框的位置信息

4.2.12 “save-conf”

这个参数的意思就是是否以.txt的格式保存目标的置信度

如果单独指定这个命令是没有效果的;

python detect.py  --save-conf #不报错,但没效果

必须和--save-txt配合使用,即:

 python detect.py --save-txt --save-conf

如果指定了这个参数就可以发现,同样是保存txt格式的文件,这次多了红色框里面的置信度值。原来每行只有5个数字,现在有6个了。

4.2.13 “save-crop”

这个参数的意思就是是否把模型检测的物体裁剪下来,如果开启了这个参数会在crops文件夹下看到几个以类别命名的文件夹,里面保存的都是裁剪下来的图片。

这几张就是backpack和handbag文件夹下的图片

4.2.14 “nosave”

开启这个参数就是不保存预测的结果,但是还会生成exp文件夹,只不过是一个空的exp

我觉得这个参数应该是和“--view-img”配合使用的

4.2.15 “classes”

这里又出现了一个新的参数,这个的意思就是我们可以给变量指定多个赋值,也就是说我们可以把“0”赋值给“classes”,也可以把“0”“2”“4”“6”都赋值给“classes”

接下来说classes参数,这里看一下coco128.yaml的配置文件就明白了,比如说我这里给classes指定“0”,那么意思就是只检测人这个类别。

例:键入如下指令:

python detect.py --classes 0

4.2.16 “agnostic-nms”

这个是增强版的nms,算是一种trick吧,通过一个例子对比一下:

启用后:

然而我并没有感受到区别,或许是我用的yolov5s.pt的原因吧

4.2.17 “augment”

这个参数也是一种增强的方式

启用前:

启用后:

这个还是有很明显的区别的

4.2.18 “visualize”

这个参数的意思就是是否把特征图可视化出来,如果开启了这和参数可以看到exp文件夹下又多了一些文件,这里.npy格式的文件就是保存的模型文件,可以使用numpy读写,.png就是图片文件啦。

下面来看一下保存下来的特征图:

stage0:

stage3:

stage6:

stage23:

4.2.19 “update”

如果指定这个参数,则对所有模型进行strip_optimizer操作,去除pt文件中的优化器等信息。

4.2.20 “project”

这个就是我们预测结果保存的路径。

4.2.21 “name”

这个就是预测结果保存的文件夹名字

4.2.22 “exist-ok”

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

4.2.23 “line-thickness”

这个参数就是调节预测框线条粗细的,因为有的时候目标重叠太多会产生遮挡;

终端键入:

python detect.py --line-thickness 10

4.2.24 “hide-labels”

这个参数就是隐藏标签的

终端键入:

python detect.py --hide-labels  

4.2.25 “hide-conf”

这个参数就是隐藏标签的置信度用的

终端键入;

 python detect.py --hide-conf

4.2.26 “half”

这个参数的意思就是是否使用 FP16 半精度推理,简单介绍一下低精度技术:

低精度技术 (high speed reduced precision)。在training阶段,梯度的更新往往是很微小的,需要相对较高的精度,一般要用到FP32以上。在inference的时候,精度要求没有那么高,一般F16(半精度)就可以,甚至可以用INT8(8位整型),精度影响不会很大。同时低精度的模型占用空间更小了,有利于部署在嵌入式模型里面。

4.2.27 “dnn”

这个参数的意思就是是否使用 OpenCV DNN 进行 ONNX 推理

DNN即Deep Neural Networks

这个我并没有用过,我觉得应该和torch.hub比较类似

感兴趣的小伙伴可以去opencv文档看一下

参考文献

非极大值抑制算法

小彩蛋:🎉

Pycharm通过点击“运行”按钮生成exp文件夹的速度要比在终端里键入指令生成exp文件夹的速度快。

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

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

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

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

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

上一篇:React(五) —— 路由的使用(react5)

下一篇:缺陷修改实践——replace函数的运用|思考?(缺陷修饰)

  • 鸿蒙算不算独立系统(鸿蒙会成为独立系统吗)

    鸿蒙算不算独立系统(鸿蒙会成为独立系统吗)

  • 华为nova5i怎么升级鸿蒙系统(华为nova5i怎样升级)

    华为nova5i怎么升级鸿蒙系统(华为nova5i怎样升级)

  • 手机怎么弄文件(手机怎么弄文件夹苹果)

    手机怎么弄文件(手机怎么弄文件夹苹果)

  • vivo手机能微信视频美颜吗(vivo手机能微信视频美颜瘦脸吗)

    vivo手机能微信视频美颜吗(vivo手机能微信视频美颜瘦脸吗)

  • 荣耀30有红外线吗(荣耀30有红外线遥控吗)

    荣耀30有红外线吗(荣耀30有红外线遥控吗)

  • 抖音极速版一天能刷多少金币(抖音极速版一天最多能赚多少钱)

    抖音极速版一天能刷多少金币(抖音极速版一天最多能赚多少钱)

  • GPRS怎么关闭(OPPOgprs怎么关闭)

    GPRS怎么关闭(OPPOgprs怎么关闭)

  • 手机语音对方听到敲屏幕声音(手机语音对方听不到我说话)

    手机语音对方听到敲屏幕声音(手机语音对方听不到我说话)

  • 超话审核需要多久(超话 审核)

    超话审核需要多久(超话 审核)

  • 安wifi必须装宽带吗(安装wifi必须安装宽带吗)

    安wifi必须装宽带吗(安装wifi必须安装宽带吗)

  • 装好系统的硬盘放到其他电脑可以用吗(装好系统的硬盘直接换电脑)

    装好系统的硬盘放到其他电脑可以用吗(装好系统的硬盘直接换电脑)

  • 网易云8级算什么概念(网易云8级需要多少天)

    网易云8级算什么概念(网易云8级需要多少天)

  • 微信运动步数准确吗(微信运动步数准码)

    微信运动步数准确吗(微信运动步数准码)

  • 台式电脑不用音响有声音吗(台式电脑不用音响怎么外放)

    台式电脑不用音响有声音吗(台式电脑不用音响怎么外放)

  • 手机下载的歌曲在哪里(手机下载的歌曲为什么没有出现在文件)

    手机下载的歌曲在哪里(手机下载的歌曲为什么没有出现在文件)

  • 苹果c字开头是哪里生产的(苹果c开头的是哪里的手机)

    苹果c字开头是哪里生产的(苹果c开头的是哪里的手机)

  • 天猫魔盒怎么视频聊天(天猫魔盒怎么视频投屏)

    天猫魔盒怎么视频聊天(天猫魔盒怎么视频投屏)

  • 一加7T和一加7T Pro区别(一加7t和一加7tpro区别)

    一加7T和一加7T Pro区别(一加7t和一加7tpro区别)

  • mate30pro怎么唤醒语音助手(mate30如何唤醒屏幕)

    mate30pro怎么唤醒语音助手(mate30如何唤醒屏幕)

  • 佳能打印机的墨粉盒在哪里(佳能打印机的墨盒在哪里)

    佳能打印机的墨粉盒在哪里(佳能打印机的墨盒在哪里)

  • wiff管理员密码是什么(wiff管理员密码是啥)

    wiff管理员密码是什么(wiff管理员密码是啥)

  • excel如何换行输入(excel如何换行输入文字)

    excel如何换行输入(excel如何换行输入文字)

  • wps怎么查找所有加粗字体(wps怎么查找所有表格)

    wps怎么查找所有加粗字体(wps怎么查找所有表格)

  • 朋友圈不能发动图吗(朋友圈不能发动态GIF吗)

    朋友圈不能发动图吗(朋友圈不能发动态GIF吗)

  • cad字体加粗(cad字体加粗怎么取消)

    cad字体加粗(cad字体加粗怎么取消)

  • 苹果怎么锁软件(苹果怎么锁软件加密)

    苹果怎么锁软件(苹果怎么锁软件加密)

  • win7系统中, ip地址冲突怎么办呢?(win7系统中回收站的内容清空后还能恢复吗)

    win7系统中, ip地址冲突怎么办呢?(win7系统中回收站的内容清空后还能恢复吗)

  • 山毛榉树林里的蓝铃花,英国赫特福德郡 (© Dan Tucker/Alamy)(山毛榉树林里的草叫什么)

    山毛榉树林里的蓝铃花,英国赫特福德郡 (© Dan Tucker/Alamy)(山毛榉树林里的草叫什么)

  • 未开具的增值税专用发票怎么作废
  • 购买增值税发票金税盘计入什么科目?
  • 组成计税价格公式消费税
  • 出口发票开错了如何处理
  • 个人所得税中社保填写在哪昆山
  • 结算备付金会计分录
  • 接受投资材料
  • 用友T6自定结转怎样设置
  • 非税收入票据能否税前扣除
  • 实收资本认缴怎么缴纳印花税
  • 生产企业发票单位
  • 季报企业所税缴税了,但年报是亏损的
  • 转让股权取得的收益是调增还是调减
  • 企业住房维修基金怎么交
  • 租入的固定资产属于资产吗
  • 园林绿化工程的分项工程有几个
  • 小微企业减免所得税优惠政策
  • 小规模纳税人 行业
  • 长期应付款怎么冲减
  • 技术合同 免税
  • 银行手续费和汇率的关系
  • 增值税红字发票是什么意思
  • 个人股东分红如何合理避税
  • windows10如何设置密码
  • 什么是CMOS什么是BIOS
  • php正则匹配字符串
  • 政府回购企业土地
  • KB5004296无法安装,提示错误代码:0x800f0990的解决方法
  • 携税宝的作用
  • 非合理损耗怎么做分录
  • Win11 Build 22000.160(KB5005189)预览版发布,更新了哪些内容
  • 施工行业企业
  • 本期发出存货成本是什么意思
  • 向客户收费
  • 产品报废进项税转出
  • 手把手教你使用opc
  • sysctl命令配置主机名
  • 应收账款周转天数减少说明什么
  • 计提折旧是怎么计算的
  • 公司款能转到个人卡上吗
  • 供货单位与开票单位不一致
  • 织梦论坛
  • 政府专项基金是什么
  • 费用发票先入账吗
  • 营业执照增加经营范围要钱吗
  • 代扣员工伙食费
  • 出口报关单运费可以填0吗
  • 新版电子税务局怎么增加办税人员
  • 餐饮营业收入怎么算
  • 收到货款发货了没开发票怎么入账
  • 银行手续费如何做账务处理
  • 固定资产清理的累计折旧怎么算
  • 收不到物业费不想干了
  • 小规模公司一般开什么发票
  • 进项税额转出加计抵减填在哪里
  • 给别人的借款怎么记账
  • 资产负债表怎么算
  • 营业外支出明细科目有哪些
  • 如何设置生产成本总账表格
  • xp系统中制作动画的软件
  • Win10 TH2首个重要更新后应用商店依然存在问题
  • win7睡眠设置在哪
  • win8.1开机音乐
  • javascript的三种主要数据类型
  • android屏幕适配的五种方式
  • unity3d特效教程
  • OpenGL ES Emulator比较
  • 谈一谈js消息机制的理解
  • js面向对象的几种方式
  • python抓取软件界面数据
  • python 连接符
  • js原生dialog
  • unity效率
  • android studio的app
  • jquery的实现原理
  • 湖北国税发票真伪查询
  • 吉林网上报税网址
  • 个体工商户 浙江
  • 烟叶收购价款
  • 建设工程造价咨询合同需要交印花税吗
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设