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)没有实现。为了解决这个问题,你需要确保模型和输入数据都在相同的数据类型上进行操作。这里有一个步骤来解决这个问题:
- 首先,确保你的模型是在float32(即torch.float32)的数据类型上训练的。如果你的模型是用Half精度训练的,那么你可能需要重新训练它,因为YoloV5默认使用float32。
- 假设model是你加载的模型
model = model.half() # 将模型转换为Half精度
model = model.float() # 再次转换回Float32精度
- 确保输入数据也是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的时候总是有很多疑问,…...
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&…...
为什么92%的团队误用Gemini做Java审查?资深架构师拆解3个致命配置陷阱及修复命令集
更多请点击: https://codechina.net 第一章:Gemini Java代码审查的真相与误区 Gemini 并非专为 Java 代码审查设计的工具,其底层模型(如 Gemini 1.5 Pro)虽具备强大的自然语言理解与代码生成能力,但缺乏静…...
Agent记忆系统工程:让AI真正记住重要的事
无状态的 AI 助手每次对话都从零开始,这是当前应用体验差的核心原因之一。本文系统性地拆解 Agent 记忆系统的工程实现,从短期工作记忆到长期知识库,构建有"真实记忆"的 AI Agent。 记忆系统的四个层次人类记忆是分层的:…...
Playwright Python3.7+安装失败根因与一次成功配置指南
1. 为什么Playwright在Python3.7环境下总“装不上”?——这不是你的pip问题,是环境认知偏差 你刚在新配的Mac M2上敲下 pip install playwright ,终端卡在 Building wheel for playwright... 十分钟不动;或者Windows上反复提示…...
Unity WebGL底层原理与实战避坑指南
1. 这不是“把游戏搬上网页”那么简单:一场对Unity WebGL底层逻辑的硬核拆解 “疯狂特技赛车2”这个名字,对很多老玩家而言,是童年街机厅里手心冒汗、摇杆发烫的记忆。而当我在GitHub上第一次点开它被公开的Unity源码仓库,看到 B…...
Unity版本降级实战指南:从2021.1回退到2019.4的四步硬核操作
1. 为什么Unity版本降级不是“回退安装”那么简单 在Unity项目开发中,很多人把“降级”理解成卸载新版本、重装旧版本、再拖进工程——就像换手机系统时刷回上个固件。但Unity的版本管理机制远比这复杂得多。我第一次遇到从2021.1.7f1c1往回降到2019.4.17f1c1的问题…...
如何永久保存微信聊天记录?5分钟掌握免费开源工具WeChatMsg
如何永久保存微信聊天记录?5分钟掌握免费开源工具WeChatMsg 【免费下载链接】WeChatMsg 提取微信聊天记录,将其导出成HTML、Word、CSV文档永久保存,对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitHub_Trending/we/…...
RoboMaster电调通信协议逆向解析:如何用逻辑分析仪抓包调试CAN总线数据
RoboMaster电调通信协议逆向解析:如何用逻辑分析仪抓包调试CAN总线数据 当电机突然停止响应,或是反馈数据出现异常时,大多数开发者会陷入反复检查代码的循环。但真正的解决方案往往隐藏在那些肉眼不可见的CAN总线数据流中。本文将带你用逻辑…...
别再手动调字体了!用iSlide的「一键优化」5分钟搞定PPT排版(附主题色设置技巧)
职场效率革命:用iSlide「一键优化」实现PPT排版自动化 凌晨两点的办公室,咖啡杯见底,李婷盯着屏幕上第37页格式混乱的PPT,光标在字号不一的标题间来回切换——这是她本周第三次为团队修改汇报材料。这种场景对职场人来说再熟悉不过…...
18 CLIP 论文精读:ViT 如何走向图文多模态?(Learning Transferable Visual Models From Natural Language Supervision)
在前几篇文章中,我们围绕 ViT 的自监督预训练路线进行了连续梳理。MAE 的核心思想是:遮住大部分图像 patch,让模型重建被遮挡区域的像素。BEiT 的核心思想是:先用视觉 tokenizer 把图像转换成离散 visual token,再让模…...
企业级应用如何利用Taotoken实现多模型灾备与负载均衡
🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 企业级应用如何利用Taotoken实现多模型灾备与负载均衡 1. 场景与挑战 在企业级应用中,大模型API的调用已成为许多核心…...
