Mac YOLO V9推理测试

环境:

Mac M1 (MacOS Sonoma 14.3.1)

Python 3.11+PyTorch 2.1.2

一、准备工作

工程及模型下载:​​​​​​​https://github.com/WongKinYiu/yolov9

git clone https://github.com/WongKinYiu/yolov9.git

克隆后安装相关依赖(没啥依赖好装的)

cd yolov9
pip install -r requirements.txt -q

YOLOv9目前提供了四种模型下载:yolov9-c.pt、yolov9-e.pt、gelan-c.pt、gelan-e.pt(建议手动下载)。

wget -P /Users/zhujiahui/Local/model/yolov9 -q https://github.com/WongKinYiu/yolov9/releases/download/v0.1/yolov9-c.pt
wget -P /Users/zhujiahui/Local/model/yolov9 -q https://github.com/WongKinYiu/yolov9/releases/download/v0.1/yolov9-e.pt
wget -P /Users/zhujiahui/Local/model/yolov9 -q https://github.com/WongKinYiu/yolov9/releases/download/v0.1/gelan-c.pt
wget -P /Users/zhujiahui/Local/model/yolov9 -q https://github.com/WongKinYiu/yolov9/releases/download/v0.1/gelan-e.pt

注:gelan(Generalized ELAN ,广义ELAN),在yolov9中,gelan被作为block用在了backbone中。

将下载好的模型放到指定的位置。

下载示例图片(也可手动下载放置),放到data/images下:

wget -P data/images -q https://media.roboflow.com/notebooks/examples/dog.jpeg

二、推理

基于yolov9-c.pt进行推理

python detect_dual.py --weights /Users/zhujiahui/Local/model/yolov9/yolov9-c.pt --conf 0.1 --source data/images/dog.jpeg --device cpu

基于yolov9-e.pt进行推理

python detect_dual.py --weights /Users/zhujiahui/Local/model/yolov9/yolov9-e.pt --conf 0.1 --source data/images/dog.jpeg --device cpu

注意:

yolo模型的推理要用detect_dual.py

本人是在Mac环境下跑的,因此设置为--device cpu或--device mps。

运行过程中会输出如下信息:

detect_dual: weights=['/Users/zhujiahui/Local/model/yolov9/yolov9-c.pt'], source=data/images/dog.jpeg, data=data/coco128.yaml, imgsz=[640, 640], conf_thres=0.1, iou_thres=0.45, max_det=1000, device=cpu, view_img=False, save_txt=False, save_conf=False, save_crop=False, nosave=False, classes=None, agnostic_nms=False, augment=False, visualize=False, update=False, project=runs/detect, name=exp, exist_ok=False, line_thickness=3, hide_labels=False, hide_conf=False, half=False, dnn=False, vid_stride=1

YOLO 🚀 v0.1-89-g93f1a28 Python-3.11.4 torch-2.1.2 CPU

Fusing layers... 

Model summary: 604 layers, 50880768 parameters, 0 gradients, 237.6 GFLOPs

image 1/1 /Users/zhujiahui/Local/PycharmProjects/yolov9/data/images/dog.jpeg: 640x384 1 person, 1 car, 1 dog, 1 backpack, 313.4ms

Speed: 0.6ms pre-process, 313.4ms inference, 0.6ms NMS per image at shape (1, 3, 640, 640)

Results saved to runs/detect/exp

最终会在runs/detect/exp下生成相关结果图片。运行多次后依次为exp2、exp3… 

原始yolov9-c.ptyolov9-e.pt

从以上结果可知yolov9-e.pt的效果更好,能够额外识别正确背包和手提包。

基于gelan-c.pt进行推理

python detect.py --weights /Users/zhujiahui/Local/model/yolov9/gelan-c.pt --conf 0.1 --source data/images/dog.jpeg --device cpu

基于gelan-e.pt进行推理

python detect.py --weights /Users/zhujiahui/Local/model/yolov9/gelan-e.pt --conf 0.1 --source data/images/dog.jpeg --device cpu

注意:gelan模型的推理要用detect.py

结果如下:

原始gelan-c.ptgelan-e.pt

效果不如yolov9-e.pt。

三、相关问题

1. Mac下--device cpu和--device mps速度问题

明显cpu更快,不明所以。

2. AttributeError: 'list' object has no attribute 'device'

Traceback (most recent call last):

  File "/Users/zhujiahui/Local/PycharmProjects/yolov9/detect.py", line 231, in <module>

    main(opt)

  File "/Users/zhujiahui/Local/PycharmProjects/yolov9/detect.py", line 226, in main

    run(**vars(opt))

  File "/opt/anaconda3/lib/python3.11/site-packages/torch/utils/_contextlib.py", line 115, in decorate_context

    return func(*args, **kwargs)

           ^^^^^^^^^^^^^^^^^^^^^

  File "/Users/zhujiahui/Local/PycharmProjects/yolov9/detect.py", line 102, in run

    pred = non_max_suppression(pred, conf_thres, iou_thres, classes, agnostic_nms, max_det=max_det)

           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

  File "/Users/zhujiahui/Local/PycharmProjects/yolov9/utils/general.py", line 905, in non_max_suppression

    device = prediction.device

             ^^^^^^^^^^^^^^^^^

AttributeError: 'list' object has no attribute 'device'

原因:对yolov9-c.pt/yolov9-e.pt采用了detect.py去推理,yolov9-c.pt/yolov9-e.pt采用train_dual.py训练得到,应该对应地采用detect_dual.py进行推理。

解决方案:

python detect.py --weights /Users/zhujiahui/Local/model/yolov9/yolov9-c.pt --conf 0.1 --source data/images/dog.jpeg --device cpu
改为
python detect_dual.py --weights /Users/zhujiahui/Local/model/yolov9/yolov9-c.pt --conf 0.1 --source data/images/dog.jpeg --device cpu

3. IndexError: index 1 is out of bounds for dimension 0 with size 1

Traceback (most recent call last):

  File "/Users/zhujiahui/Local/PycharmProjects/yolov9/detect_dual.py", line 232, in <module>

    main(opt)

  File "/Users/zhujiahui/Local/PycharmProjects/yolov9/detect_dual.py", line 227, in main

    run(**vars(opt))

  File "/opt/anaconda3/lib/python3.11/site-packages/torch/utils/_contextlib.py", line 115, in decorate_context

    return func(*args, **kwargs)

           ^^^^^^^^^^^^^^^^^^^^^

  File "/Users/zhujiahui/Local/PycharmProjects/yolov9/detect_dual.py", line 99, in run

    pred = pred[0][1]

           ~~~~~~~^^^

IndexError: index 1 is out of bounds for dimension 0 with size 1

原因:对gelan-c.pt/gelan-e.pt采用了detect_dual.py去推理,gelan-c.pt/gelan-e.pt需采用detect.py进行推理。

解决方案:

python detect_dual.py --weights /Users/zhujiahui/Local/model/yolov9/gelan-c.pt --conf 0.1 --source data/images/dog.jpeg --device cpu
改为
python detect.py --weights /Users/zhujiahui/Local/model/yolov9/gelan-c.pt --conf 0.1 --source data/images/dog.jpeg --device cpu

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

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

相关文章

容器集群管理系统Kubernetes(K8S)

目录 一、前言 1.1什么是云原生&#xff1f; 1.2云要素的四要素&#xff1f; 1.2.1微服务 1.2.2容器化 1.2.3DevOps 1.2.4持续交付 1.3云平台有哪些&#xff1f; 1.4SRE 二、Kubernetes 概述 2.1K8S 是什么 2.2K8S作用 2.3K8S版本 2.4为什么要用 K8S 2.5K8S 的特…

在Ubuntu上安装Anaconda之后,启动失败

为了方便管理Pythonu环境&#xff0c;在Ubuntu的Docker容器中安装了Anaconda&#xff0c;安装完成&#xff0c;启动时出现如下错误&#xff1a; conda activate xxx usage: conda [-h] [--no-plugins] [-V] COMMAND ... conda: error: argument COMMAND: invalid choice: acti…

如何让加快OpenHarmony编译速度?

OpenHarmony 有两种编译方式&#xff0c;一种是通过 hb 工具编译&#xff0c;一种是通过 build.sh 脚本编译。本文笔者将提升 build.sh 方式编译速度的方法整理如下&#xff1a; 因为笔者只用 build.sh 脚本编译&#xff0c;没用过 hb 工具&#xff0c;好像下面的选项也可以用于…

Jenkins--自动化构建和部署SpringBoot项目

一、实现目标 通过在Jenkins中创建流水线任务&#xff0c;编写流水线脚本以实现自动化构建和部署SpringBoot项目。流水线脚本主要实现以下几个步骤&#xff1a; Preparation&#xff1a;从gitee上拉取远程仓库的SpringBoot项目代码。Build&#xff1a;使用Maven对拉取的代码进…

部署JVS服务出现上传文件不可用,问题原因排查。

事情的起因是这样的&#xff0c;部门经理让我部署一下JVS资源共享框架&#xff0c;项目的地址是在这里 项目资源地址 各位小伙伴们做好了&#xff0c;我要开始发车了&#xff0c;全新的“裂开之旅” 简单展示一下如何部署JVS文档 直达链接 撕裂要开始了 本来服务启动的好好…

链式二叉树的基本操作1

1.概念回顾 讲二叉树的基本操作之前&#xff0c;我们回顾一下二叉树的概念 在讲树之前&#xff0c;我们的每讲一种数据结构&#xff0c;无外乎就是在讲它们的增删查改&#xff0c;但是在树这里&#xff0c;就有了不小变化。 2.结点的定义 既然是链式二叉树&#xff0c;那必须…

部署 Sentinel 控制台:实现流量管理和监控

序言 Sentinel 是阿里巴巴开源的一款流量防护与监控平台&#xff0c;它可以帮助开发者有效地管理微服务的流量&#xff0c;实现流量控制、熔断降级、系统负载保护等功能。本文将介绍如何在项目中部署和配置 Sentinel 控制台&#xff0c;实现微服务的流量防护和监控。 一、Sen…

深入理解Linux中TCP/IP协议栈的实现原理与具体过程

一、Linux内核与网络体系结构 在我们了解整个linux系统的网络体系结构之前&#xff0c;我们需要对整个网络体系调用&#xff0c;初始化和交互的位置&#xff0c;同时也是Linux操作系统中最为关键的一部分代码-------内核&#xff0c;有一个初步的认知。 1、Linux内核的结构 …

智能改写文章怎么做,3个方法让你轻松改出高质量文章

在如今的自媒体兴盛时代&#xff0c;内容创作对于自媒体人来说是必不可少的一项工作&#xff0c;然而&#xff0c;如何在保持内容原创性的前提下迅速生成高质量的文章变得尤为重要。智能改写文章的出现&#xff0c;为所有的自媒体人带来了一种全新的思路&#xff0c;它让大家在…

2024付费进群系统,源码及搭建变现视频课程(教程+源码)

前三节讲解搭建支付对接&#xff0c;后两节讲解一些引流变现的方法&#xff0c;还有一种变现就是帮人搭建这样的平台&#xff0c;因为全网都没有一套完整的视频教怎么搭建的&#xff0c;有也只是文字教程&#xff0c;一般新人根本看不懂&#xff0c;我视频实操演示&#xff0c;…

16-LINUX--线程安全

一。线程安全 线程安全即就是在多线程运行的时候&#xff0c;不论线程的调度顺序怎样&#xff0c;最终的结果都是 一样的、正确的。那么就说这些线程是安全的。 要保证线程安全需要做到&#xff1a; 1&#xff09; 对线程同步&#xff0c;保证同一时刻只有一个线程访问临界资…

minio安装部署

MinIO 介绍 MinIO是一个对象存储解决方案&#xff0c;它提供了与Amazon Web Services S3兼容的API&#xff0c;并支持所有核心S3功能。 MinIO有能力在任何地方部署 - 公有云或私有云&#xff0c;裸金属基础设施&#xff0c;编排环境&#xff0c;以及边缘基础设施。 MinIO 安装…

【网络基础2】深入理解TCP协议:协议段、可靠性、各种机制

文章目录 1. TCP协议段格式1.1. 如何解包 / 向上交付1.1.1. 交付1.1.2. 解包 1.2. 如何理解可靠性1.2.1. 确认应答机制&#xff08;ACK&#xff09;1.2.2. 序号 与 确认序号 2. TCP做到全双工的原因2.1. 16位窗口大小2.2. 6个标记位 3. 如何理解连接3.1 连接管理机制3.1.1. 三次…

Web安全研究(九)

知识星球 首先推荐一下我们的知识星球,以AI与安全结合作为主题,包括AI在安全上的应用和AI本身的安全; 加入星球你将获得: 【Ai4sec】:以数据驱动增强安全水位,涵盖内容包括:恶意软件分析,软件安全,AI安全,数据安全,系统安全,流量分析,防爬,验证码等安全方向。…

IP地址证书的详细申请步骤

IP地址证书申请的条件有两个&#xff0c;一个是此IP必须是公网IP&#xff0c;另一个是IP的80和443端口必须允许短暂开放。满足这两个条件才能为其部署SSL证书。 IP地址ssl证书申请网址链接https://www.joyssl.com/certificate/select/ip_certificate.html?nid16 1 访问提供IP…

PyCharm安装详细教程

PyCharm安装详细教程 PyCharm简介及其下载网站 PyCharm是由JetBrains打造的一款Python IDE(Integrated Development Environment&#xff0c;集成开发环境)&#xff0c;带有一整套可以帮助用户在使用Python语言开发时提高其效率的工具。PyCharm提供了代码编辑、调试、语法高亮…

nature《自然》期刊文献怎么在家查看下载

nature《自然》期刊我们都知道&#xff0c;是世界上历史悠久的、最有名望的科学杂志之一。下载该期刊文献是需要使用权限的&#xff0c;如果你没有nature《自然》期刊的资源&#xff0c;又该如何获取呢&#xff1f;请看本文的经验分享。 一、先百度“文献党下载器” 在文献党下…

Faststone Capture:高效屏幕捕获神器评测【AI写作】

首先&#xff0c;这篇文章是基于笔尖AI写作进行文章创作的&#xff0c;喜欢的宝子&#xff0c;也可以去体验下&#xff0c;解放双手&#xff0c;上班直接摸鱼~ 按照惯例&#xff0c;先介绍下这款笔尖AI写作&#xff0c;宝子也可以直接下滑跳过看正文~ 笔尖Ai写作&#xff1a;…

PMP课程知识点很多,无法入手,该如何学习?

回顾整个学习过程&#xff0c;我花费了不少时间&#xff0c;但也学到了系统的项目管理知识&#xff0c;考试结果也让我感到满意。在学习过程中&#xff0c;我认为以下几点非常重要&#xff1a; 1、需要对课本进行整体阅读&#xff0c;以便对内容有一个整体印象&#xff1b; 2…

「MDN web 入门」学习笔记

目录 写在前面 1. MDN 简介 1.1 MDN 的主要特点 1.2 MDN 的主要功能 1.3 MDN 网页开发的指南 2. 安装基础软件 2.1 专业人士工具 2.2 初学者基本工具 3. 设计网站外观 3.1 计划 3.2 绘制草图 3.3 选定素材 3.4 文本 3.5 主题颜色 3.6 图像 3.7 字体 4. 处理文…