当前位置: 首页 > news >正文

Yolo的离线运行

Yolo 的离线运行

运行环境准备

比较简单的办法是通过官方的github获取到对应的yolo运行需要的python环境-requirement.txt.通过如下地址可以获取到对应的文件和相应的说明以及实例。
Yolov5 git地址
为了让程序能本地话运行,我们还需要获取相应的模型权重文件,目前YOLO提供多种权重模型,我们选择的时Yolov5x的权重参数。
下载地址如下:
Yolov5 预训练参数

程序代码

import torchfrom yolov5.models.experimental import attempt_loadfrom yolov5.utils.dataloaders import LoadImagesfrom yolov5.utils.general import check_img_size, non_max_suppression, scale_boxesfrom yolov5.utils.plots import plot_one_boxfrom yolov5.utils.torch_utils import select_deviceimport cv2def detect(weights=r'C:\VM\YOLO\yolov5-master\ultralytics\yolov5\yolov5x.pt', imgsz=640):# 初始化设备device = select_device('')# 加载模型model = attempt_load(weights, device='cuda')  # load FP32 modelstride = int(model.stride.max())  # model strideimgsz = check_img_size(imgsz, s=stride)  # check img_size# 设置模型为评估模式model.to(device).eval()# 加载图像dataset = LoadImages(r'C:\Users\XPI1CNG\Pictures\Picture1.jpg', img_size=imgsz, stride=stride)# 运行推理for path, img, im0s, vid_cap, s in dataset:img = torch.from_numpy(img).to(device)img = img.float()  # uint8 to fp32img /= 255.0  # 0 - 255 to 0.0 - 1.0if img.ndimension() == 3:img = img.unsqueeze(0)# 推理pred = model(img, augment=False)[0]# 应用非最大值抑制pred = non_max_suppression(pred, 0.25, 0.45, classes=None, agnostic=False)# 处理检测结果for i, det in enumerate(pred):  # detections per imagep, s, im0 = path, '', im0ssave_path = r'C:\Users\XPI1CNG\Pictures\3333.jpg'gn = torch.tensor(im0.shape)[[1, 0, 1, 0]]  # normalization gain whwhif len(det):# 将坐标缩放回原图大小det[:, :4] = scale_boxes(img.shape[2:], det[:, :4], im0.shape).round()# 绘制边界框for *xyxy, conf, cls in reversed(det):label = f'{model.names[int(cls)]} {conf:.2f}'plot_one_box(xyxy, im0, label=label, color=(0, 255, 0), line_thickness=3)# 保存结果cv2.imwrite(save_path, im0)if __name__ == '__main__':detect()
错误处理
模块变更

在执行时,会出现如下错误:
ModuleNotFoundError: No module named ‘yolov5.utils.datasets’
原因时由于在新的yolov5中,没有了datasets.py文件,此文件被dataloaders所取代,因此需要修改程序为:
from yolov5.utils.dataloaders import LoadImages

函数变更

在执行时,会出现如下错误:
cannot import name ‘scale_coords’ from ‘yolov5.utils.general’
原因时在新版本的yolov5中,scale_coords已经被scale_boxes取代,因此需要修改程序中所有的scale_coords,变更为scale_boxes。

数据类型错误

在模型执行时,报错如下
RuntimeError: “upsample_nearest2d_channels_last” not implemented for ‘Half’
这个错误是因为PyTorch在处理Half数据类型时,对于某些操作(例如upsample_nearest2d_channels_last)没有实现。为了解决这个问题,你需要确保模型和输入数据都在相同的数据类型上进行操作。这里有一个步骤来解决这个问题:

  1. 首先,确保你的模型是在float32(即torch.float32)的数据类型上训练的。如果你的模型是用Half精度训练的,那么你可能需要重新训练它,因为YoloV5默认使用float32。
  2. 假设model是你加载的模型
model = model.half()  # 将模型转换为Half精度
model = model.float()  # 再次转换回Float32精度
  1. 确保输入数据也是float32。在加载图像数据时,可以使用to()函数将其转换为正确的数据类型
import torch
img_data = img_data.to(device='cuda', dtype=torch.float32)
返回值不匹配

在模型执行时,报错如下
ValueError:too many values to unpack(expected 4)
出现该错误的原因是dataset返回值与实际需要的值不匹配(path, img, im0s, vid_cap),通过查看LoadImages的函数,发现此函数的返回值为5个 - return path, im, im0, self.cap, s。
为解决这个问题,将程序修改为读取5个返回即可。

 for path, img, im0s, vid_cap, s in dataset:

参考文件:
[1]https://www.baidu.com/link?url=cAxksQetEOEubXto-xSNdmLVZHbHjglVBnx__tkaqIwnvAwVabrjpydHpHCErG2B78VVu-pcpBGfKpVuHj-6uruvbwt-eNuCrv_NSCjlyxi&wd=&eqid=a600e45f0055a43a00000006668e2c07
[2]https://blog.csdn.net/m0_58074927/article/details/128032999

相关文章:

Yolo的离线运行

Yolo 的离线运行 运行环境准备 比较简单的办法是通过官方的github获取到对应的yolo运行需要的python环境-requirement.txt.通过如下地址可以获取到对应的文件和相应的说明以及实例。 Yolov5 git地址 为了让程序能本地话运行,我们还需要获取相应的模型权重文件&…...

【矿井知识】煤矿动火作业

简介 煤矿动火作业是指在煤矿环境下进行的任何形式的使用火源的工作。这些工作可能包括焊接、切割、加热、打磨等操作,这些操作都可能产生火花、火焰或高温,因此被称为动火作业。 动火作业的主要类型 焊接:包括电弧焊、气焊等,…...

设计模式使用场景实现示例及优缺点(结构型模式——享元模式)

结构型模式 享元模式(Flyweight Pattern) 享元模式,作为软件设计模式中的一员,其核心目标在于通过共享来有效地支持大量细粒度对象的使用。在内存使用优化方面,享元模式提供了一种极为高效的路径,尤其在处…...

开放式耳机哪款比较好?五款开放式耳机测评推荐

开放式耳机真的越来越火了,真的好多人问我,开放式耳机应该怎么选啊,所以这次我亲自测评了几款开放式耳机,作为数码博主这一篇文章就教大家如何挑选开放式耳机,当然最后还有五款开放式耳机的推荐给到大家,话…...

【网络安全】实验三(基于Windows部署CA)

一、配置环境 打开两台虚拟机,并参照下图,搭建网络拓扑环境,要求两台虚拟的IP地址要按照图中的标识进行设置,并根据搭建完成情况,勾选对应选项。注:此处的学号本人学号的最后两位数字,1学号100…...

hive中reverse函数

目录 前言基本函数介绍实战 前言 reverse函数,是一个常用的字符串处理函数,很多编程语言都有。最近开发中,遇到一个reverse解决的需求,发现自己尚未总结过,遂补上。 基本函数介绍 SELECT reverse(string_column) FR…...

SimpleTrack环境配置教程

SimpleTrack环境配置教程 conda create --name SimpleTrack python3.6 conda activate SimpleTrack git clone https://github.com/tusen-ai/SimpleTrack.git cd ./SimpleTrack/ # pip install opencv-python4.5.4.58 # 安装opencv-python报错,可尝试安此版本 pip …...

frameworks 之Zygote

frameworks 之Zygote Zygote.rc 解析Zygote 启动ZygoteInit.javaZygote.cppLiunx fork Zygote 中文意思为受精卵。 和其意思一样,该功能负责android系统孵化service 和 app 进程。 本文讲解Zygote的大概流程。涉及的相同的类,如下所示 system/core/rootd…...

基于考研题库小程序V2.0实现倒计时功能板块和超时判错功能

V2.0 需求沟通 需求分析 计时模块 3.1.1、功能描述←计时模块用于做题过程中对每一题的作答进行30秒倒计时,超时直接判错,同时将总用时显示在界面上;记录每次做题的总用时。 3.1.2、接口描述←与判定模块的接口为超时判定,若单题用时超过 …...

idm站点抓取可以用来做什么 idm站点抓取能抓取本地网页吗 idm站点抓取怎么用 网络下载加速器

在下载工具众多且竞争激烈的市场中,Internet Download Manager(简称IDM)作为一款专业的下载加速软件,仍然能够赢得众多用户的青睐,这都要得益于它的强大的下载功能。我们在开始使用IDM的时候总是有很多疑问&#xff0c…...

maven7——(重要,构建项目)maven项目构建(命令)

Maven的常用命令管理项目的生命周期 clean命令 清除编译产生的target文件夹内容,可以配合相应命令在cmd中使用,如mvn clean package, mvn clean test D:\工作\公司培训-4班\day20\day20\untitled1>mvn clean compile命令 该命令可以…...

容联云发布容犀大模型应用,重塑企业“营销服”|WAIC 2024

7月6日,在2024世界人工智能大会上,容联云成功举办主题为“数智聚合 产业向上”的生成式应用与大模型商业化实践论坛。 论坛上,容联云发布了容犀智能大模型应用升级,该系列应用包括容犀Agent Copilot、容犀Knowledge Copilot、容犀…...

Docker 安装字体文件

由于 Docker 容器的隔离性,与宿主机是独立的运行环境,如果需要用到宿主机的字体文件就需要进行安装。 例如在导出 PDF 文件时,如果缺少字体文件,就会产生乱码(常表现为中文变成方框)。 Docker 字体文件的安…...

C/C++ 移动追加内容到文件尾部。

1、通过C语言文件函数库 1.1、通过追加到尾部字符命令 FILE* f fopen(file_path.data(), "ab"); 1.2、不通过追加到尾部字符命令 FILE* f fopen(path, "rb"); if (NULL ! f) { fseek(f, 0, SEEK_END); } Unix 平台(Linux/Android/MacOS…...

ISO/OIS的七层模型②

OSI模型是一个分层的模型,每一个部分称为一层,每一层扮演固定的角色,互不干扰。OSI有7层,从上到下分别是: 一,每层功能 7.应用层(Application layer ):应用层功能&#x…...

美团到家平台业务探索

背景 到家业务发展已经近10年,目前最为火热的应该有美团到家、抖音到家等,这种极具挑战性的业务,值得学习和思考。 既然是服务平台化,那一定是兼容了多种业务以及多种模式。 挑战 订单、骑手规模大,供需匹配过程的…...

React -- useState状态更新异步特性——导致获取值为旧值的问题

useState状态异步更新 问题导致的原因解决办法进一步分析后续遇到的新问题 问题 const [isSelecting, setIsSelecting] useState(false);useEffect(() > {const handleKeyDown (event) > {if (event.key Escape) {if(isSelectingRef){//.......setIsSelecting(!isSele…...

哪款开放式耳机是2024年最值得购买的?五大品质好物揭秘

相比于入耳式耳机压耳、堵耳,佩戴不稳固等缺陷,开放式耳机的佩戴舒适性和安全性都更胜一筹,这几年成为了越来越多年轻人的“音乐搭子”。面对市面上各式各样的开放式耳机,相信大家在挑选上就得下大把功夫,选择上也有困…...

深圳天童美语:小暑习俗知多少

小暑已至,炎炎夏日正当时。在这个充满生机的节气里,除了我们熟悉的吃冰、游泳等消暑方式,还有许多有趣且富含文化内涵的小暑习俗。今天,深圳天童美语就带你一起解锁这些习俗,感受那份独特的夏日风情!    …...

递归参数中递增运算符的使用

backtrack(k,n,sum,i1); backtrack(k,n,sum,i); 在 C 中,递增运算符 i 和表达式 i1 之间有显著的区别: i 是后置递增运算符,表示先使用 i 的当前值,然后将 i 加 1。i1 是一个简单的算术运算,返回 i 的当前值加 1&…...

脑机新手指南(八):OpenBCI_GUI:从环境搭建到数据可视化(下)

一、数据处理与分析实战 (一)实时滤波与参数调整 基础滤波操作 60Hz 工频滤波:勾选界面右侧 “60Hz” 复选框,可有效抑制电网干扰(适用于北美地区,欧洲用户可调整为 50Hz)。 平滑处理&…...

学校招生小程序源码介绍

基于ThinkPHPFastAdminUniApp开发的学校招生小程序源码,专为学校招生场景量身打造,功能实用且操作便捷。 从技术架构来看,ThinkPHP提供稳定可靠的后台服务,FastAdmin加速开发流程,UniApp则保障小程序在多端有良好的兼…...

Spring Boot面试题精选汇总

🤟致敬读者 🟩感谢阅读🟦笑口常开🟪生日快乐⬛早点睡觉 📘博主相关 🟧博主信息🟨博客首页🟫专栏推荐🟥活动信息 文章目录 Spring Boot面试题精选汇总⚙️ **一、核心概…...

04-初识css

一、css样式引入 1.1.内部样式 <div style"width: 100px;"></div>1.2.外部样式 1.2.1.外部样式1 <style>.aa {width: 100px;} </style> <div class"aa"></div>1.2.2.外部样式2 <!-- rel内表面引入的是style样…...

HDFS分布式存储 zookeeper

hadoop介绍 狭义上hadoop是指apache的一款开源软件 用java语言实现开源框架&#xff0c;允许使用简单的变成模型跨计算机对大型集群进行分布式处理&#xff08;1.海量的数据存储 2.海量数据的计算&#xff09;Hadoop核心组件 hdfs&#xff08;分布式文件存储系统&#xff09;&a…...

tomcat入门

1 tomcat 是什么 apache开发的web服务器可以为java web程序提供运行环境tomcat是一款高效&#xff0c;稳定&#xff0c;易于使用的web服务器tomcathttp服务器Servlet服务器 2 tomcat 目录介绍 -bin #存放tomcat的脚本 -conf #存放tomcat的配置文件 ---catalina.policy #to…...

libfmt: 现代C++的格式化工具库介绍与酷炫功能

libfmt: 现代C的格式化工具库介绍与酷炫功能 libfmt 是一个开源的C格式化库&#xff0c;提供了高效、安全的文本格式化功能&#xff0c;是C20中引入的std::format的基础实现。它比传统的printf和iostream更安全、更灵活、性能更好。 基本介绍 主要特点 类型安全&#xff1a…...

前端中slice和splic的区别

1. slice slice 用于从数组中提取一部分元素&#xff0c;返回一个新的数组。 特点&#xff1a; 不修改原数组&#xff1a;slice 不会改变原数组&#xff0c;而是返回一个新的数组。提取数组的部分&#xff1a;slice 会根据指定的开始索引和结束索引提取数组的一部分。不包含…...

MySQL 主从同步异常处理

阅读原文&#xff1a;https://www.xiaozaoshu.top/articles/mysql-m-s-update-pk MySQL 做双主&#xff0c;遇到的这个错误&#xff1a; Could not execute Update_rows event on table ... Error_code: 1032是 MySQL 主从复制时的经典错误之一&#xff0c;通常表示&#xff…...

【深度学习新浪潮】什么是credit assignment problem?

Credit Assignment Problem(信用分配问题) 是机器学习,尤其是强化学习(RL)中的核心挑战之一,指的是如何将最终的奖励或惩罚准确地分配给导致该结果的各个中间动作或决策。在序列决策任务中,智能体执行一系列动作后获得一个最终奖励,但每个动作对最终结果的贡献程度往往…...