YOLOv5 项目:推理代码(detect)

2024-03-01 16:36

本文主要是介绍YOLOv5 项目:推理代码(detect),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1、前言

本章将介绍yolov5项目的推理函数,关于yolov5的下载和配置环境,参考上一篇文章:

YOLOv5 项目:环境配置-CSDN博客

pycharm 中打开的推理模块如红框中所示

pycharm将conda新建的虚拟环境导入,参考 :pycharm 配置 conda 新环境

2、推理一下看看

大部分运行代码都是在pycharm里面运行,但其实更多的在命令行里直接运行反而方便

命令行参考代码如下:

python detect.py --source 0  # webcamimg.jpg  # imagevid.mp4  # videopath/  # directorypath/*.jpg  # glob'https://youtu.be/Zgi9g1ksQHc'  # YouTube'rtsp://example.com/media.mp4'  # RTSP, RTMP, HTTP stream

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

命令行直接运行python detect.py文件或者pycharm直接运行的话,会自动推理官方预设的图片

推理打印的日志,这里可以看到推理的文件放在runs\detect\exp里面

这里的runs文件夹可以删除,下次推理会自动生成新的序列

推理结果:

3、detect 代码参数讲解

参数如下,模型推理的超参数都在里面

需要注意的带有 action = 'store_true' ,理解为布尔类型的参数,默认就是关闭。如果打开的话,直接用python detect.py --save-txt 即可 

其他类型的要在后面跟实参,例如python detect.pt --conf-thres 0.5

3.1 weights 权重文件

yolov5网络推理的权重参数文件,需要注意的是这里默认的是yolov5.pt,所以首次推理不需要指定权重,网络会自动从网上下载权重

官方提供的权重如下所示,当然也可以指定自己训练好的

3.2 source 待推理的路径

这里默认的是data/images,里面放的就是上面推理的两张原图

这里可以是单张图片、整个目录、视频、乃至摄像头都可以

3.3 data 配置文件

配置文件,例如分类的个数啊、训练数据的路径等等

训练的时候要更改,要不然会训练coco的数据集!!!

3.4 imgsz、img、img-size 输入数据的尺寸

意思在推理的时候,将图片缩放成多少的size,然后喂到网络里

这里最后还会还原图像的大小

注意:这里的size要和训练的size一致,这样效果最好。

理论上size训练的时候越大效果越显著,但并不一定,并且会大大加深网络的计算量

3.5 conf-thres 置信度阈值

通俗来说,网络计算出的目标会有一个预测概率(这里就叫置信度)

置信度越低的时候,框会越多

conf-thres = 0.01
conf-thres = 0.25
conf-thres = 0.8

这里没有固定的值,都是动态调节的,不会设置的话就按照官方设定值

3.6 iou-thres IOU阈值

IOU 阈值,值越大,框越多

当同一个目标周围好多个框,会进行NMS非极大值抑制,两个框重叠到多大程度才会去除呢?

重叠的程度就按照iou来算,数值就是设定的数值

3.7 max-det 检测最大的数量

一张图片最大的检测数量

如果目标多余这个阈值,就会按照conf-thres 置信度阈值显示前面的max-det个

3.8 device 推理设备

推理的设备,不指定会自动检测

3.9 view-img 实时检测的时候是否展示

检测的时候是否展示

想要使用直接运行下面命令即可:

python detect.py --view-img

3.10 save-txt 保存边框、类别的信息

将检测出来的边界框和目标按照yolo格式保存在txt文本

在标注数据的时候,可以辅助标注

使用如下:

python detect.py --save-txt

3.11 save-csv 保存边界框信息以csv格式

同 save-txt,只不过以csv的形式保存

3.12 save-conf 保存txt中的置信度

配合save-txt使用,否则没有效果

这个参数会在txt文本里,加一个置信度

3.13 save-crop 保存检测的裁剪区域

这会把检测的边界框裁剪出来,并且按照类别保存在对应的文件夹里

裁剪出来的目标可以用于图像分类

3.14 nosave 不保存推理结果

 配合--view-img 使用

不会生成预测结果,但是还是会生成exp空的文件夹

3.15 classes 指定推理哪个类别

指定哪个类别,就只会预测哪个

python detect.py --classes 0 2 3

3.16 agnostic-nms 跨类别的NMS

如果一个物体被预测成两个类别,那么这个物体会被标注两个预测框。打开这个函数,就只会显示预测大置信度的边界框

3.17 augment 推理增强

增强推理的函数

3.18 visualize 可视化特征图

把网络特征图可视化出来,如下

3.19 update

用于模型训练最后得到去除优化器信息,去除不必要的文件

3.20 project 保存路径

就是保存路径,建议不更改

3.21 name 保存文件夹名字

就是保存文件夹名字,建议不更改

3.22 exist-ok 保存位置是否更替

每次推理都会生成新的exp文件夹,打开这个就不会了,直接删除前面的,在里面保存此次的推理结果

3.23 line-thickness 边界框的粗细

字面意思

3.24 hide-labels 隐藏标签

打开后,只有边界框,没有label和置信度

3.25 hide-conf 隐藏置信度

打开后,有边界框和label,没有置信度

326 half 半精度推理

类似于训练过程的混合精度推理

3.27 dnn 

是否使用opencv dnn进行ONNX推理

3.28 vid-stride 

推理视频的时候,推理步长

4、 常用参数介绍

参数太多,大部分一般用不到,这里介绍常见的关键参数

4.1 weights 权重参数

根据自己需要选择

4.2 source 检测的文件

  • python detect.py --source data/images/bus.jpg 对指定路径的单个图片进行推理

  • python detect.py --source screen 对当前屏幕进行检测

4.3 其他参数

有的参数也很重要,例如置信度阈值啊、iou阈值、coco的配置文件啊等等,但一般的检测任务都不需要改变,使用官方的预设值即可。

5. 其他

提供一个简单的推理代码

import torchmodel = torch.hub.load('./','yolov5s',source='local')img = './data/images/bus.jpg'ret = model(img)ret.show()

 

这篇关于YOLOv5 项目:推理代码(detect)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/763100

相关文章

深度解析Java项目中包和包之间的联系

《深度解析Java项目中包和包之间的联系》文章浏览阅读850次,点赞13次,收藏8次。本文详细介绍了Java分层架构中的几个关键包:DTO、Controller、Service和Mapper。_jav... 目录前言一、各大包1.DTO1.1、DTO的核心用途1.2. DTO与实体类(Entity)的区别1

Java中调用数据库存储过程的示例代码

《Java中调用数据库存储过程的示例代码》本文介绍Java通过JDBC调用数据库存储过程的方法,涵盖参数类型、执行步骤及数据库差异,需注意异常处理与资源管理,以优化性能并实现复杂业务逻辑,感兴趣的朋友... 目录一、存储过程概述二、Java调用存储过程的基本javascript步骤三、Java调用存储过程示

Visual Studio 2022 编译C++20代码的图文步骤

《VisualStudio2022编译C++20代码的图文步骤》在VisualStudio中启用C++20import功能,需设置语言标准为ISOC++20,开启扫描源查找模块依赖及实验性标... 默认创建Visual Studio桌面控制台项目代码包含C++20的import方法。右键项目的属性:

如何在Spring Boot项目中集成MQTT协议

《如何在SpringBoot项目中集成MQTT协议》本文介绍在SpringBoot中集成MQTT的步骤,包括安装Broker、添加EclipsePaho依赖、配置连接参数、实现消息发布订阅、测试接口... 目录1. 准备工作2. 引入依赖3. 配置MQTT连接4. 创建MQTT配置类5. 实现消息发布与订阅

MySQL数据库的内嵌函数和联合查询实例代码

《MySQL数据库的内嵌函数和联合查询实例代码》联合查询是一种将多个查询结果组合在一起的方法,通常使用UNION、UNIONALL、INTERSECT和EXCEPT关键字,下面:本文主要介绍MyS... 目录一.数据库的内嵌函数1.1聚合函数COUNT([DISTINCT] expr)SUM([DISTIN

springboot项目打jar制作成镜像并指定配置文件位置方式

《springboot项目打jar制作成镜像并指定配置文件位置方式》:本文主要介绍springboot项目打jar制作成镜像并指定配置文件位置方式,具有很好的参考价值,希望对大家有所帮助,如有错误... 目录一、上传jar到服务器二、编写dockerfile三、新建对应配置文件所存放的数据卷目录四、将配置文

Java实现自定义table宽高的示例代码

《Java实现自定义table宽高的示例代码》在桌面应用、管理系统乃至报表工具中,表格(JTable)作为最常用的数据展示组件,不仅承载对数据的增删改查,还需要配合布局与视觉需求,而JavaSwing... 目录一、项目背景详细介绍二、项目需求详细介绍三、相关技术详细介绍四、实现思路详细介绍五、完整实现代码

Go语言代码格式化的技巧分享

《Go语言代码格式化的技巧分享》在Go语言的开发过程中,代码格式化是一个看似细微却至关重要的环节,良好的代码格式化不仅能提升代码的可读性,还能促进团队协作,减少因代码风格差异引发的问题,Go在代码格式... 目录一、Go 语言代码格式化的重要性二、Go 语言代码格式化工具:gofmt 与 go fmt(一)

怎么用idea创建一个SpringBoot项目

《怎么用idea创建一个SpringBoot项目》本文介绍了在IDEA中创建SpringBoot项目的步骤,包括环境准备(JDK1.8+、Maven3.2.5+)、使用SpringInitializr... 目录如何在idea中创建一个SpringBoot项目环境准备1.1打开IDEA,点击New新建一个项

HTML5实现的移动端购物车自动结算功能示例代码

《HTML5实现的移动端购物车自动结算功能示例代码》本文介绍HTML5实现移动端购物车自动结算,通过WebStorage、事件监听、DOM操作等技术,确保实时更新与数据同步,优化性能及无障碍性,提升用... 目录1. 移动端购物车自动结算概述2. 数据存储与状态保存机制2.1 浏览器端的数据存储方式2.1.