当前位置: 首页 > 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&…...

从ET1100迁移到AX58100:我的EtherCAT从站代码需要重写多少?

从ET1100迁移到AX58100:EtherCAT从站代码重构实战指南 当你的产品线需要从百兆升级到千兆EtherCAT网络,或者要支持时间敏感网络(TSN)功能时,从经典的ET1100切换到AX58100几乎是必然选择。但作为经历过完整迁移周期的开发者,我必须…...

如何用Awesome-Obsidian打造个性化知识管理神器:终极美化指南

如何用Awesome-Obsidian打造个性化知识管理神器:终极美化指南 【免费下载链接】awesome-obsidian 🕶️ Awesome stuff for Obsidian 项目地址: https://gitcode.com/gh_mirrors/aw/awesome-obsidian 想要将Obsidian从简单的Markdown编辑器变身为功…...

内网外网互传文件慢怎么办?高速传输协议该如何选择?

企业日常办公中,内外网文件互传卡顿、中断、速度不达标的问题十分普遍,尤其在大文件与批量文件场景下,传统方式难以满足稳定高效的需求。选择合适的高速传输方案,直接影响跨网协作效率与数据安全,这也是多数运维与业务…...

Win11Debloat:让Windows 11系统轻盈如飞的优化工具

Win11Debloat:让Windows 11系统轻盈如飞的优化工具 【免费下载链接】Win11Debloat A simple, lightweight PowerShell script that allows you to remove pre-installed apps, disable telemetry, as well as perform various other changes to declutter and custo…...

实战应用:用快马平台将dc=y103pc=参数转化为电商筛选功能

今天想和大家分享一个在电商项目中特别实用的功能开发经验——如何把URL参数(比如dcy103&pchigh这种格式)转化成用户友好的商品筛选面板。这个需求在实际业务中特别常见,比如用户分享一个筛选好的商品列表链接,其他人打开时能…...

抖音音频高效提取工具:从繁琐操作到一键解决方案

抖音音频高效提取工具:从繁琐操作到一键解决方案 【免费下载链接】douyin-downloader A practical Douyin downloader for both single-item and profile batch downloads, with progress display, retries, SQLite deduplication, and browser fallback support. 抖…...

Flutter文件操作实战:File_selector跨平台文件处理从入门到精通

1. 为什么Flutter开发者都需要掌握File_selector? 在移动应用和桌面应用开发中,文件操作就像我们日常生活中的"文件柜"——你需要存放、查找、整理各种文档。而Flutter作为跨平台框架,最大的挑战就是如何在不同操作系统上实现统一的…...

从预测到归因:手把手教你用因果森林(grf)做特征重要性分析与亚组发现

从预测到归因:手把手教你用因果森林(grf)做特征重要性分析与亚组发现 在金融风控、个性化营销和医疗疗效评估等领域,我们常常面临一个关键问题:干预措施的效果是否存在显著差异?传统分析方法如A/B测试能告诉…...

告别“差不多就行”:用Cascade R-CNN解决目标检测中那些“似对非对”的边界框

从边界框“模糊地带”到工业级精度:Cascade R-CNN实战全解析 当你在自动驾驶系统中看到车辆识别框与真实车身存在5个像素的偏移,或在工业质检场景中某个关键缺陷的检测框刚好漏掉了1毫米的裂纹区域,这些“看似正确实则不准”的预测结果&#…...

矩阵分解(1)-- 从高斯消元到对称正定:LU、LDLT与Cholesky分解的算法演进与应用场景

1. 矩阵分解:为什么我们需要它? 想象一下你面前有一堆积木,乱七八糟地堆在一起。如果你想快速找到其中某一块积木,可能需要翻找很久。但如果有人帮你把这些积木按照颜色、形状分类摆放整齐,找起来就会容易得多。矩阵分…...