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

相关文章

这15个Vue指令,让你的项目开发爽到爆

1. V-Hotkey 仓库地址: github.com/Dafrok/v-ho… Demo: 戳这里 https://dafrok.github.io/v-hotkey 安装: npm install --save v-hotkey 这个指令可以给组件绑定一个或多个快捷键。你想要通过按下 Escape 键后隐藏某个组件,按住 Control 和回车键再显示它吗?小菜一碟: <template

如何用Docker运行Django项目

本章教程,介绍如何用Docker创建一个Django,并运行能够访问。 一、拉取镜像 这里我们使用python3.11版本的docker镜像 docker pull python:3.11 二、运行容器 这里我们将容器内部的8080端口,映射到宿主机的80端口上。 docker run -itd --name python311 -p

活用c4d官方开发文档查询代码

当你问AI助手比如豆包,如何用python禁止掉xpresso标签时候,它会提示到 这时候要用到两个东西。https://developers.maxon.net/论坛搜索和开发文档 比如这里我就在官方找到正确的id描述 然后我就把参数标签换过来

poj 1258 Agri-Net(最小生成树模板代码)

感觉用这题来当模板更适合。 题意就是给你邻接矩阵求最小生成树啦。~ prim代码:效率很高。172k...0ms。 #include<stdio.h>#include<algorithm>using namespace std;const int MaxN = 101;const int INF = 0x3f3f3f3f;int g[MaxN][MaxN];int n

在cscode中通过maven创建java项目

在cscode中创建java项目 可以通过博客完成maven的导入 建立maven项目 使用快捷键 Ctrl + Shift + P 建立一个 Maven 项目 1 Ctrl + Shift + P 打开输入框2 输入 "> java create"3 选择 maven4 选择 No Archetype5 输入 域名6 输入项目名称7 建立一个文件目录存放项目,文件名一般为项目名8 确定

计算机毕业设计 大学志愿填报系统 Java+SpringBoot+Vue 前后端分离 文档报告 代码讲解 安装调试

🍊作者:计算机编程-吉哥 🍊简介:专业从事JavaWeb程序开发,微信小程序开发,定制化项目、 源码、代码讲解、文档撰写、ppt制作。做自己喜欢的事,生活就是快乐的。 🍊心愿:点赞 👍 收藏 ⭐评论 📝 🍅 文末获取源码联系 👇🏻 精彩专栏推荐订阅 👇🏻 不然下次找不到哟~Java毕业设计项目~热门选题推荐《1000套》 目录 1.技术选型 2.开发工具 3.功能

Vue3项目开发——新闻发布管理系统(六)

文章目录 八、首页设计开发1、页面设计2、登录访问拦截实现3、用户基本信息显示①封装用户基本信息获取接口②用户基本信息存储③用户基本信息调用④用户基本信息动态渲染 4、退出功能实现①注册点击事件②添加退出功能③数据清理 5、代码下载 八、首页设计开发 登录成功后,系统就进入了首页。接下来,也就进行首页的开发了。 1、页面设计 系统页面主要分为三部分,左侧为系统的菜单栏,右侧

基于 YOLOv5 的积水检测系统:打造高效智能的智慧城市应用

在城市发展中,积水问题日益严重,特别是在大雨过后,积水往往会影响交通甚至威胁人们的安全。通过现代计算机视觉技术,我们能够智能化地检测和识别积水区域,减少潜在危险。本文将介绍如何使用 YOLOv5 和 PyQt5 搭建一个积水检测系统,结合深度学习和直观的图形界面,为用户提供高效的解决方案。 源码地址: PyQt5+YoloV5 实现积水检测系统 预览: 项目背景

代码随想录冲冲冲 Day39 动态规划Part7

198. 打家劫舍 dp数组的意义是在第i位的时候偷的最大钱数是多少 如果nums的size为0 总价值当然就是0 如果nums的size为1 总价值是nums[0] 遍历顺序就是从小到大遍历 之后是递推公式 对于dp[i]的最大价值来说有两种可能 1.偷第i个 那么最大价值就是dp[i-2]+nums[i] 2.不偷第i个 那么价值就是dp[i-1] 之后取这两个的最大值就是d

pip-tools:打造可重复、可控的 Python 开发环境,解决依赖关系,让代码更稳定

在 Python 开发中,管理依赖关系是一项繁琐且容易出错的任务。手动更新依赖版本、处理冲突、确保一致性等等,都可能让开发者感到头疼。而 pip-tools 为开发者提供了一套稳定可靠的解决方案。 什么是 pip-tools? pip-tools 是一组命令行工具,旨在简化 Python 依赖关系的管理,确保项目环境的稳定性和可重复性。它主要包含两个核心工具:pip-compile 和 pip