使用YOLOv5实现图片、视频的目标检测

news2024/11/26 4:40:57

推断的准备工作

接下来我将从官方代码开始,一步一步展示如何进行图片、视频识别

首先从GitHub下载官方代码(也可以从下面链接获取):

链接:https://pan.baidu.com/s/16wzV899D90TY2Xwhx4TwhA

提取码:vzvj

将环境切换到之前配置完成的yolo环境

(你的环境名可能和我不一样)

实现图片目标检测

可以看到 '--weights' 参数(参数解读详见4.a)的默认值为'yolov5s.pt'这表明运行代码时使用yolov5s的权重参数进行推断。

这里有两种运行办法,一种是直接运行,他会自动到外网上下载模型,如果网络不好的话可能会报错;另一种是先下载把模型文件放到detect.py的同级目录下,运行即可。

yolov5s.pt模型文件链接:

链接:https://pan.baidu.com/s/1-1F_LcVKZRbbytotm9GKjw

提取码:tbby

运行成功!

1是对模型的概要,可以看到模型包括224层,7266973个参数;

2路径是'--source'参数(参数解读详见4.b)的默认值,在该路径下存放待识别图片(可以添加自己的图片,常见的图片格式均可进行识别)

3是推断结果存放路径,在代码运行后可以看到结果

效果如下:

恭喜你,成功啦!(≧∇≦)/

这是一个值得庆祝的时刻,就像是学习C、python时的“hello world!”,学习单片机时的流水灯,这表明我们已经进入yolo目标识别的大门。我认为,这样阶段性的正反馈,是求学路上最迷人风景之一

(๑•̀ㅂ•́)و✧

实现视频目标检测

完成图片目标检测后,视频检测基本不会有什么问题。在工程的data文件夹下新建video文件夹,在里面存放要识别的视频(也可以放在其他位置,注意修改路径即可)

在代码中更改'--source'参数的默认值运行即可。

parser.add_argument('--source', type=str, default='data/video', help='source')  # file/folder, 0 for webcam

运行成功!

...

视频被切成797张图片,在全部识别后重新合成一个视频,并存在runs\detect\exp2目录下

可以看到效果还是非常好的。

对detect.py中常用参数的解读

  1. '--weights'

这个就是指定网络权重的路径,默认是官方的yolov5s.pt(官方还提供了很多其他的权重模型,例如yolov5m.pt,yolov5n.pt...如果想详细了解,可以看GitHub官方工程Pretrained Checkpoints那一栏

GitHub - ultralytics/yolov5: YOLOv5 🚀 in PyTorch > ONNX > CoreML > TFLite)

如果想用其他的官方模型,由于运行代码自动下载比较慢,所以建议先从官网下载好模型放到detect.py同级目录下,然后将'--weights'默认值改成对应模型的名称,直接运行即可。

注意,这里有个细节,如果从非官网途径下载模型,一定要注意.pt文件的名称,有些文件名末尾会多一个空格,记得去掉他,否则因为代码中默认值名称和模型文件名称不匹配(差一个空格),还是会自动去外网下模型。

表面看上去没问题

实际多了一个空格

要把这个空格去掉

如果要使用自己训练的模型,更改默认值为模型路径即可(之后的文章会讲)。

  1. '--source'参数

这个参数的默认值是网络输入的路径,默认指定的是文件夹,也可以指定具体的文件,如直接锁定到某个图片 'data/images/bus.jpg' 那么运行时只会识别这一张图片,images文件夹下的其他图片/视频不会参与识别。

  1. '--conf-thres'参数

这个参数我通常理解为,目标可能性阈值,低于默认值(如上图是0.25)的目标不会被框出来。我通常将其作为避免误识别的一种手段,因为只要数据集采集合理,经过训练,假目标的可能性通常低于真目标,只要将阈值设在两者之间,就能滤去假目标的识别框,这比 重新采集数据集、调网络参数、重新训练 要容易的多。

'--conf-thres'默认值为0.25

'--conf-thres'默认值为0.65

求学路上,你我共勉(๑•̀ㅂ•́)و✧

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/621581.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MYSQL必知必会,详尽入门,一文帮你学会SQL必知必会

目录 前言 数据库的概念和术语 SQL语言和组成 DDL show : 展示当前已有的数据库或者表 create :创建一个数据库或者一个表 drop :删除表、数据库对象或者视图 alter :修改现有的数据库对象,例如 修改表的属性或者字段 (…

geth下载安装配置环境及联盟链的搭建

以太坊概论考察课 更具课堂教学讲解,参考开放资料。使用所学的知识,创建项目并完成要求的内容。包含的功能和要求具体如下: 一:安装并运行geth客户端 1、下载安装geth 首先下载geth:https://geth.ethereum.org/dow…

javaScript蓝桥杯---视频弹幕

目录 一、介绍二、准备三、⽬标四、代码五、完成 一、介绍 弹幕指直接显现在视频上的评论,可以以滚动、停留甚⾄更多动作特效⽅式出现在视频上,是观看视频的⼈发送的简短评论。通过发送弹幕可以给观众⼀种“实时互动”的错觉,弹幕的出现让观…

Segment Anything Model (SAM)——卷起来了,那个号称分割一切的CV大模型他来了

最近每天打开微信看到10个公众号里面差不多有11个都在各种玩赚chatGPT,每个都在说是各种大好风口,哎,看得眼睛都是累的。 今天下午无意间看到Meta发布了一款号称能分割一切的CV大模型,CV圈也开始卷起来,今年各种大模型…

chatgpt赋能python:Python在图片处理方面的应用

Python在图片处理方面的应用 在当今数字化的时代,图像处理已成为不可避免的技术。越来越多的业务需要对图片进行处理、识别和分析。Python是一种易于使用且适合处理图像的编程语言。Python中有许多图像处理库,例如Pillow、Scikit-Image和OpenCV等&#…

基于BP神经网络的PID智能控制

基于BP神经网络的PID智能控制 基于BP神经网络的PID整定原理经典的增量式数字PID控制算法为:BP神经网络结构:学习算法仿真模型Matlab代码仿真效果图结论python仿真参考文献 基于BP神经网络的PID整定原理 PID控制要获得较好的控制效果,就必须通…

山东大学单片机原理与应用实验 3.4 矩阵键盘扫描实验

目录 一、实验题目 二、实验要求 三、实验过程及结果记录 1. 在Proteus 环境下建立图1所示原理图,并将其保存为keyscan_self.DSN 文件。 2. 编写控制源程序,将其保存为keyscan_self.asm 或keyscan_self.c。 3. 将源程序添加到U1 中,并构…

chatgpt赋能python:Python如何将空格变成换行

Python如何将空格变成换行 Python是一种流行的编程语言,有着许多实用的功能和库。在这篇文章中,我们将介绍如何使用Python将空格变成换行的方法。这是一种有用的技巧,可以帮助你在处理文本时更加方便。 为什么需要将空格变成换行 将空格变…

eNSP数据抓包时弹不出Wireshark.exe

文章目录 原因:wireshark的版本问题解决方法:操作例图 原因:wireshark的版本问题 上述2.6.6版本安装后,ensp工具路径正确,数据抓包也始终打不开wireshark,但是直接打开是可以打开的。安装3.6.3版本后&#…

零基础使用ChatGPT写一个小游戏---文末附源码

ChatGPT:赋能自然语言处理的多种应用领域 ChatGPT是当今最先进的人工智能对话系统之一,已经被证明可以支持许多不同的自然语言处理应用程序。以下是ChatGPT可以运行的几个领域: 聊天机器人 ChatGPT作为一个建立在自然语言处理技术上的人工…

chatgpt赋能python:Python数据拟合

Python 数据拟合 在数据分析和机器学习领域,数据拟合是非常重要的一步。Python作为一种流行的编程语言,在数据拟合方面拥有强大的工具和库,因此被广泛使用。本文将介绍Python中常用的一些数据拟合方法,并演示如何使用它们。 线性…

200道网络安全常见面试题合集(附答案解析+配套资料)

有不少小伙伴面临跳槽或者找工作,本文总结了常见的安全岗位面试题,方便各位复习。祝各位事业顺利,财运亨通。在网络安全的道路上越走越远! 所有的资料都整理成了PDF,面试题和答案将会持续更新,因为无论如何…

宝塔-如何部署自己的nodejs项目并跑起来【已解决】

我自己做了一个项目,前端后端都是自己做,后端就用的nodejs写的接口,但是本地每次访问都要启动一次,所以我准备放到服务器上,这样接口就能一直跑了 先看效果 这里可以看到我现在是本地的ip在访问接口,以为我…

什么是端到端解决方案

通过“端到端”流程打通,将各相关部门的业务环节衔接起来,消灭“断头路”,不断提高内部的效率并满足客户的需求,最终实现企业效益最大化。 不同语境下的端到端 端到端在不同领域有多重含义,是一个非常复杂且抽象的名…

机器学习算法:UMAP 深入理解

导读 降维是机器学习从业者可视化和理解大型高维数据集的常用方法。最广泛使用的可视化技术之一是 t-SNE,但它的性能受到数据集规模的影响,并且正确使用它可能需要一定学习成本。 UMAP 是 McInnes 等人开发的新算法。与t-SNE相比,它具有许多…

4090 深度学习性能实测

测试结果 测试平台: 显卡:影驰金属大师4090 cpu:i7 12700k 测试方法 李沐老师micro-benchmarkings B站视频 测试 1.矩阵计算速度 transformer的核心操作是矩阵乘法,通过测试矩阵计算的tflops可以得到硬件的计算上限。 ma…

操作系统实验一到实验九合集(哈工大李治军)

操作系统实验 作者寄语 操作系统实验的学习是一个循序渐进的过程,初次看linux-0.11中的代码,看着满屏的汇编语言,确实头疼。但通过学习赵炯博士的Linux内核0.11完全注释,结合着王爽老师的汇编语言一书,我逐渐理解每段…

jmeter压测数据库

1.查询数据库对应的URL可点击jmeter操作指南书的图表,找到对应的数据库url即可 2.为避免在连接数据库时会报编码/时区上的错误,可以在URL后面添加两个参数 ?useUnicode true //反正乱码 &characterEncodingUTF-8 //国际编码 &serverTimezoneUT…

非常全面的数字人解决方案(含源码)

github TheRamU/Fay: 语音互动,直播自动带货 虚拟数字人 (github.com) gitee fay: 这是一个数字人项目,包含python内核及ue数字人模型,可以用于做数字助理及自动直播,又或者作为你的应用入口也很帅 (gitee.com) 2022.10.27 补…

I/O框架知识

I/0框架 什么是流&#xff1f; 概念&#xff1a;内存与存储设备之间传输数据的通道 流的分类 按方向&#xff08;重点&#xff09; 输入流: 将<存储设备>的内容读入到<内存>中&#xff0c; 输出流&#xff1a;将<内存>中的内容写入到<存储设备>中 …