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

相关文章

使用Python进行GRPC和Dubbo协议的高级测试

《使用Python进行GRPC和Dubbo协议的高级测试》GRPC(GoogleRemoteProcedureCall)是一种高性能、开源的远程过程调用(RPC)框架,Dubbo是一种高性能的分布式服... 目录01 GRPC测试安装gRPC编写.proto文件实现服务02 Dubbo测试1. 安装Dubb

如何在Mac上彻底删除Edge账户? 手动卸载Edge浏览器并清理残留文件技巧

《如何在Mac上彻底删除Edge账户?手动卸载Edge浏览器并清理残留文件技巧》Mac上的Edge账户里存了不少网站密码和个人信息,结果同事一不小心打开了,简直尴尬到爆炸,想要卸载edge浏览器并清... 如果你遇到 Microsoft Edge 浏览器运行迟缓、频繁崩溃或网页加载异常等问题,可以尝试多种方

Python的端到端测试框架SeleniumBase使用解读

《Python的端到端测试框架SeleniumBase使用解读》:本文主要介绍Python的端到端测试框架SeleniumBase使用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全... 目录SeleniumBase详细介绍及用法指南什么是 SeleniumBase?SeleniumBase

Mac系统下卸载JAVA和JDK的步骤

《Mac系统下卸载JAVA和JDK的步骤》JDK是Java语言的软件开发工具包,它提供了开发和运行Java应用程序所需的工具、库和资源,:本文主要介绍Mac系统下卸载JAVA和JDK的相关资料,需... 目录1. 卸载系统自带的 Java 版本检查当前 Java 版本通过命令卸载系统 Java2. 卸载自定

如何确定哪些软件是Mac系统自带的? Mac系统内置应用查看技巧

《如何确定哪些软件是Mac系统自带的?Mac系统内置应用查看技巧》如何确定哪些软件是Mac系统自带的?mac系统中有很多自带的应用,想要看看哪些是系统自带,该怎么查看呢?下面我们就来看看Mac系统内... 在MAC电脑上,可以使用以下方法来确定哪些软件是系统自带的:1.应用程序文件夹打开应用程序文件夹

Mac备忘录怎么导出/备份和云同步? Mac备忘录使用技巧

《Mac备忘录怎么导出/备份和云同步?Mac备忘录使用技巧》备忘录作为iOS里简单而又不可或缺的一个系统应用,上手容易,可以满足我们日常生活中各种记录的需求,今天我们就来看看Mac备忘录的导出、... 「备忘录」是 MAC 上的一款常用应用,它可以帮助我们捕捉灵感、记录待办事项或保存重要信息。为了便于在不同

电脑蓝牙连不上怎么办? 5 招教你轻松修复Mac蓝牙连接问题的技巧

《电脑蓝牙连不上怎么办?5招教你轻松修复Mac蓝牙连接问题的技巧》蓝牙连接问题是一些Mac用户经常遇到的常见问题之一,在本文章中,我们将提供一些有用的提示和技巧,帮助您解决可能出现的蓝牙连接问... 蓝牙作为一种流行的无线技术,已经成为我们连接各种设备的重要工具。在 MAC 上,你可以根据自己的需求,轻松地

python多线程并发测试过程

《python多线程并发测试过程》:本文主要介绍python多线程并发测试过程,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、并发与并行?二、同步与异步的概念?三、线程与进程的区别?需求1:多线程执行不同任务需求2:多线程执行相同任务总结一、并发与并行?1、

如何关闭Mac的Safari通知? 3招教你关闭Safari浏览器网站通知的技巧

《如何关闭Mac的Safari通知?3招教你关闭Safari浏览器网站通知的技巧》当我们在使用Mac电脑专注做一件事情的时候,总是会被一些消息推送通知所打扰,这时候,我们就希望关闭这些烦人的Mac通... Safari 浏览器的「通知」功能本意是为了方便用户及时获取最新资讯,但很容易被一些网站滥用,导致我们

Android与iOS设备MAC地址生成原理及Java实现详解

《Android与iOS设备MAC地址生成原理及Java实现详解》在无线网络通信中,MAC(MediaAccessControl)地址是设备的唯一网络标识符,本文主要介绍了Android与iOS设备M... 目录引言1. MAC地址基础1.1 MAC地址的组成1.2 MAC地址的分类2. android与I