Mac YOLO V9推理测试

2024-05-10 04:36
文章标签 mac yolo 测试 推理 v9

本文主要是介绍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

这篇关于Mac YOLO V9推理测试的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/975453

相关文章

C++实现获取本机MAC地址与IP地址

《C++实现获取本机MAC地址与IP地址》这篇文章主要为大家详细介绍了C++实现获取本机MAC地址与IP地址的两种方式,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 实际工作中,项目上常常需要获取本机的IP地址和MAC地址,在此使用两种方案获取1.MFC中获取IP和MAC地址获取

C/C++通过IP获取局域网网卡MAC地址

《C/C++通过IP获取局域网网卡MAC地址》这篇文章主要为大家详细介绍了C++如何通过Win32API函数SendARP从IP地址获取局域网内网卡的MAC地址,感兴趣的小伙伴可以跟随小编一起学习一下... C/C++通过IP获取局域网网卡MAC地址通过win32 SendARP获取MAC地址代码#i

mac中资源库在哪? macOS资源库文件夹详解

《mac中资源库在哪?macOS资源库文件夹详解》经常使用Mac电脑的用户会发现,找不到Mac电脑的资源库,我们怎么打开资源库并使用呢?下面我们就来看看macOS资源库文件夹详解... 在 MACOS 系统中,「资源库」文件夹是用来存放操作系统和 App 设置的核心位置。虽然平时我们很少直接跟它打交道,但了

macOS怎么轻松更换App图标? Mac电脑图标更换指南

《macOS怎么轻松更换App图标?Mac电脑图标更换指南》想要给你的Mac电脑按照自己的喜好来更换App图标?其实非常简单,只需要两步就能搞定,下面我来详细讲解一下... 虽然 MACOS 的个性化定制选项已经「缩水」,不如早期版本那么丰富,www.chinasem.cn但我们仍然可以按照自己的喜好来更换

mac安装redis全过程

《mac安装redis全过程》文章内容主要介绍了如何从官网下载指定版本的Redis,以及如何在自定义目录下安装和启动Redis,还提到了如何修改Redis的密码和配置文件,以及使用RedisInsig... 目录MAC安装Redis安装启动redis 配置redis 常用命令总结mac安装redis官网下

如何测试计算机的内存是否存在问题? 判断电脑内存故障的多种方法

《如何测试计算机的内存是否存在问题?判断电脑内存故障的多种方法》内存是电脑中非常重要的组件之一,如果内存出现故障,可能会导致电脑出现各种问题,如蓝屏、死机、程序崩溃等,如何判断内存是否出现故障呢?下... 如果你的电脑是崩溃、冻结还是不稳定,那么它的内存可能有问题。要进行检查,你可以使用Windows 11

性能测试介绍

性能测试是一种测试方法,旨在评估系统、应用程序或组件在现实场景中的性能表现和可靠性。它通常用于衡量系统在不同负载条件下的响应时间、吞吐量、资源利用率、稳定性和可扩展性等关键指标。 为什么要进行性能测试 通过性能测试,可以确定系统是否能够满足预期的性能要求,找出性能瓶颈和潜在的问题,并进行优化和调整。 发现性能瓶颈:性能测试可以帮助发现系统的性能瓶颈,即系统在高负载或高并发情况下可能出现的问题

字节面试 | 如何测试RocketMQ、RocketMQ?

字节面试:RocketMQ是怎么测试的呢? 答: 首先保证消息的消费正确、设计逆向用例,在验证消息内容为空等情况时的消费正确性; 推送大批量MQ,通过Admin控制台查看MQ消费的情况,是否出现消费假死、TPS是否正常等等问题。(上述都是临场发挥,但是RocketMQ真正的测试点,还真的需要探讨) 01 先了解RocketMQ 作为测试也是要简单了解RocketMQ。简单来说,就是一个分

【测试】输入正确用户名和密码,点击登录没有响应的可能性原因

目录 一、前端问题 1. 界面交互问题 2. 输入数据校验问题 二、网络问题 1. 网络连接中断 2. 代理设置问题 三、后端问题 1. 服务器故障 2. 数据库问题 3. 权限问题: 四、其他问题 1. 缓存问题 2. 第三方服务问题 3. 配置问题 一、前端问题 1. 界面交互问题 登录按钮的点击事件未正确绑定,导致点击后无法触发登录操作。 页面可能存在

业务中14个需要进行A/B测试的时刻[信息图]

在本指南中,我们将全面了解有关 A/B测试 的所有内容。 我们将介绍不同类型的A/B测试,如何有效地规划和启动测试,如何评估测试是否成功,您应该关注哪些指标,多年来我们发现的常见错误等等。 什么是A/B测试? A/B测试(有时称为“分割测试”)是一种实验类型,其中您创建两种或多种内容变体——如登录页面、电子邮件或广告——并将它们显示给不同的受众群体,以查看哪一种效果最好。 本质上,A/B测