【 YOLOv5】目标检测 YOLOv5 开源代码项目调试与讲解实战(2)-如何利用yolov5进行预测

news/2024/7/10 2:09:56 标签: YOLO, 目标检测, 人工智能, pytorch, 学习, 笔记, python

如何利用yolov5进行预测

  • yolov5项目的简单描述
    • 模型对比图
    • 需要的包
    • 作者的教程
    • 环境
    • inference
  • 不用命令行,使用pycharm运行
    • main函数部分
    • 运行程序来看一下 **detect.py**
      • 跑代码时遇到的一些问题,可以参考我的其他博客
    • 一些参数说明
      • --weights'default='yolov5s.pt', **指定权重网络模型**yolov5s/5m ,可以自行更改
      • 另一种下载文件的方法
      • '--source', default='data/images' 给网络指定输入
        • 这里也可以只指定一张图片
        • 这里也可以检测视频
      • --img-size', type=int, default=640, help='inference size (pixels)')
      • '--conf-thres', type=float, default=0.25, help='object confidence threshold')
      • '--iou-thres', type=float, default=0.45, help='IOU threshold for NMS')
      • '--device', default='', help='cuda device, i.e. 0 or 0,1,2,3 or cpu')
      • '--view-img', action='store_true', help='display results')
        • 设置属性
      • '--save-txt', action='store_true', help='save results to *.txt')
      • '--save-conf', action='store_true', help='save confidences in --save-txt labels')
      • '--nosave', action='store_true', help='do not save images/videos')
      • '--classes', nargs='+', type=int, help='filter by class: --class 0, or --class 0 2 3')
      • '--agnostic-nms', action='store_true', help='class-agnostic NMS')
      • '--augment', action='store_true', help='augmented inference')
      • '--update', action='store_true', help='update all models')
      • '--project', default='runs/detect', help='save results to project/name')
      • '--name', default='exp', help='save results to project/name')
      • '--exist-ok', action='store_true', help='existing project/name ok, do not increment')
  • 点一个断点,再点击debug

yolov5项目的简单描述

模型对比图

在这里插入图片描述
n->s->m->l->x
模型依次变复杂,可以按衣服尺码来理解
在这里插入图片描述

需要的包

在这里插入图片描述

作者的教程

在这里插入图片描述

环境

在这里插入图片描述

inference

利用已经训练好的网络模型,进行预测
下载不同的模型,同时运行结果可以保存在文件夹下
除了使用右键点击运行,也可以使用命令行运行
source 是参数,后面的值可以赋值给该参数,如果要运行,需要给该网络指定一个输入,图片,视频,文件夹,模糊方式(匹配所有.就.jpg结尾的文件),链接(youtube视频),rtsp传输协议(实现摄像头实时检测)

在这里插入图片描述
在这里插入图片描述

不用命令行,使用pycharm运行

main函数部分

在这里插入图片描述

给命令行创建参数
weights 权重,默认字符串型,有默认值5s
source 默认字符串型,有默认值

运行程序来看一下 detect.py

在这里插入图片描述
在这里插入图片描述
运行时会自动下载yolov5s.pt,成功运行如图
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

跑代码时遇到的一些问题,可以参考我的其他博客

cuda版本不匹配

代码权重与文件版本没对应上

Upsample

SPPF

cv2

一些参数说明

–weights’default=‘yolov5s.pt’, 指定权重网络模型yolov5s/5m ,可以自行更改

在这里插入图片描述

这里可以先下载好

https://github.com/ultralytics/yolov5/releases/download/v5.0/yolov5s.pt
https://github.com/ultralytics/yolov5/releases/download/v5.0/yolov5m.pt
https://github.com/ultralytics/yolov5/releases/download/v5.0/yolov5l.pt
https://github.com/ultralytics/yolov5/releases/download/v5.0/yolov5x.pt

在这里插入图片描述

另一种下载文件的方法

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

‘–source’, default=‘data/images’ 给网络指定输入

这里我们可以尝试自己新输入一些图片,保存至此路径下

在这里插入图片描述
在这里插入图片描述

这里也可以只指定一张图片

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

这里也可以检测视频

首先新建一个目录
在这里插入图片描述
粘贴视频到此目录下
在这里插入图片描述
更换下路径
在这里插入图片描述
检测是提取一帧一帧开始检测
在这里插入图片描述
检测完成打开文件夹
在这里插入图片描述

效果如图
在这里插入图片描述

–img-size’, type=int, default=640, help=‘inference size (pixels)’)

640,图形大小指的是在训练过程中把尺寸进行缩放,然后再放大
输入输出图片尺寸保持不变
最好与训练网络匹配

‘–conf-thres’, type=float, default=0.25, help=‘object confidence threshold’)

只有置信度大于0.25时,我们才相信这是一个目标

‘–iou-thres’, type=float, default=0.45, help=‘IOU threshold for NMS’)

iou置信度
nms:non maximum suppression
圈出的不同区域,多个区域指定同一个目标,选择出最优的一个框,使用iou方式

在这里插入图片描述
iou方式:intersection over union
交集与并集相除
在这里插入图片描述
在这里插入图片描述
iou大于阈值,在多个框中选一个框
在这里插入图片描述
代表完全重合才合并
在这里插入图片描述
在这里插入图片描述
有交集就合并

‘–device’, default=‘’, help=‘cuda device, i.e. 0 or 0,1,2,3 or cpu’)

设备cuda/cpu

‘–view-img’, action=‘store_true’, help=‘display results’)

只要指定了这个参数,就变成ture
通过命令行的方式运行,先切换路径
在这里插入图片描述
这个是设置参数
在这里插入图片描述

设置属性

平时一般不用命令行输入参数,去设置属性
在这里插入图片描述
在这里插入图片描述

‘–save-txt’, action=‘store_true’, help=‘save results to *.txt’)

保存为txt,
在这里插入图片描述
在这里插入图片描述

‘–save-conf’, action=‘store_true’, help=‘save confidences in --save-txt labels’)

保存置信度

‘–nosave’, action=‘store_true’, help=‘do not save images/videos’)

不要保存图片和视频

‘–classes’, nargs=‘+’, type=int, help=‘filter by class: --class 0, or --class 0 2 3’)

可以给class进行多次赋值,这里如果只想看人,可以给class设置为0

在这里插入图片描述

在这里插入图片描述

‘–agnostic-nms’, action=‘store_true’, help=‘class-agnostic NMS’)

增强的nms

‘–augment’, action=‘store_true’, help=‘augmented inference’)

也是增强的检测

‘–update’, action=‘store_true’, help=‘update all models’)

把网络模型中不必要的部分去掉,只保留预测需要用到的东西

‘–project’, default=‘runs/detect’, help=‘save results to project/name’)

把我们的结果保存到什么位置

‘–name’, default=‘exp’, help=‘save results to project/name’)

保存的名字

‘–exist-ok’, action=‘store_true’, help=‘existing project/name ok, do not increment’)

在原来的文件夹中新设一个文件夹

点一个断点,再点击debug

参数最终都会放到opt中

在这里插入图片描述
再往下运行一下
在这里插入图片描述
可以看到各个变量的值
在这里插入图片描述
有的人代码不写default,直接写required,会出现报错,必须加参数,这种情况可以删除required加default
在这里插入图片描述


http://www.niftyadmin.cn/n/5289881.html

相关文章

linux 网络工具(二)

linux 网络工具 1. ip命令簇4.1 address4.2 link4.3 route4.4 rule 2. 其他常用命令2.1 ifup/ifdown2.2 配置主机名2.3 设置DNS服务器指向2.4 配置域名解析2.5 ss2.6 路由相关配置文件2.7 查看机器可用端口2.8 traceroute2.9 dhclient 1. ip命令簇 Linux的ip命令和ifconfig类似…

泰迪智能科技“供需对接就业育人项目”介绍

为帮助用人单位培养和招聘更多实用型、复合型和紧缺型人才,推动高校人才培养与就业有机联动、人才供需有效对接促进高校毕业生更加充分更高质量就业,经广东泰迪智能科技股份有限公司申报、全国高校毕业生就业创业指导委员会专家组审核,泰迪智能科技“供需…

模式识别与机器学习-无监督学习-聚类

无监督学习-聚类 监督学习&无监督学习K-meansK-means聚类的优点:K-means的局限性:解决方案: 高斯混合模型(Gaussian Mixture Models,GMM)多维高斯分布的概率密度函数:高斯混合模型&#xff…

2023-12-27 语音转文字的whisper应用部署

点击 <C 语言编程核心突破> 快速C语言入门 语音转文字的whisper应用部署 前言一、部署whisper二、部署whisper.cpp总结 前言 要解决问题: 需要一款开源的语音转文字应用, 用于视频自动转换字幕. 想到的思路: openai的whisper以及根据这个模型开发的whisper.cppC应用. …

QT C++ TCP Socket 请求心知天气

0.0 相关连接代码部分头文件具体实现 相关连接 心知天气官方天气图标 心知天气官网 代码部分 头文件 #include <QtNetwork> #include <QNetworkAccessManager> #include <QDebug> #include <QJsonValue> #include <QJsonArray> #include &l…

浅谈WPF之ToolTip工具提示

在日常应用中&#xff0c;当鼠标放置在某些控件上时&#xff0c;都会有相应的信息提示&#xff0c;从软件易用性上来说&#xff0c;这是一个非常友好的功能设计。那在WPF中&#xff0c;如何进行控件信息提示呢&#xff1f;这就是本文需要介绍的ToolTip【工具提示】内容&#xf…

css中Link和@import之间有什么区别?

css中Link和import之间有什么区别&#xff1f; link 和 import 都是在 CSS 中用于引入外部样式表的方法&#xff0c;但它们之间存在一些关键的区别&#xff1a; 加载方式&#xff1a; link&#xff1a;通过 HTML 的 link 标签在文档的 <head> 部分引入外部样式表。它是在…

Linux操作系统极速入门[常用指令](安装jdk,MySQL,nginx),以及在linux对项目进行部署。

linux概述&#xff1a; Linux是一套免费使用和自由传播的操作系统 我们为什么要学&#xff0c;Linux&#xff1f; 主流操作系统&#xff1a; linux系统版本&#xff1a; 内核版&#xff1a; 由linux核心团队开发&#xff0c;维护 免费&#xff0c;开源 负责控制硬件 发行版&…