Mac YOLO V9推理测试(基于ultralytics)

环境:

Mac M1 (MacOS Sonoma 14.3.1)

Python 3.11+PyTorch 2.1.2

一、准备工作

使用YOLO一般都会接触ultralytics这个框架,今天来试试用该框架进行YOLO V9模型的推理。

YOLOv9目前提供了四种模型下载:yolov9-c.ptyolov9-e.ptgelan-c.ptgelan-e.pt

bash 复制代码
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

将下载好的模型放到指定的位置(实际发现这一步不用做,白费了)。

下载示例图片(也可手动下载放置),放到指定位置下:

bash 复制代码
wget -P /Users/zhujiahui/Local/dataset -q https://media.roboflow.com/notebooks/examples/dog.jpeg

安装Python依赖

bash 复制代码
pip install opencv-python
pip install ultralytics

二、推理

编写以下代码:

python 复制代码
from ultralytics import YOLO


def yolov9_inference():
    yolo_model = YOLO("/Users/zhujiahui/Local/model/yolov9/yolov9-e.pt")
    yolo_model.info()


if __name__ == '__main__':
    yolov9_inference()

直接运行,发现报错:

TypeError: ERROR ❌️ /Users/zhujiahui/Local/model/yolov9/yolov9-e.pt appears to be an Ultralytics YOLOv5 model originally trained with https://github.com/ultralytics/yolov5.

This model is NOT forwards compatible with YOLOv8 at https://github.com/ultralytics/ultralytics.

Recommend fixes are to train a new model using the latest 'ultralytics' package or to run a command with an official YOLOv8 model, i.e. 'yolo predict model=yolov8n.pt'

意思是说从https://github.com/WongKinYiu/yolov9下载的模型yolov9-e.pt与本训练推理框架(ultralytics)不match,必须使用经过ultralytics训练的模型。

于是改动如下,选用ultralytics提供的YOLO V9模型:

python 复制代码
from ultralytics import YOLO


def yolov9_inference():
    yolo_model = YOLO("yolov9e.pt")
    yolo_model.info()


if __name__ == '__main__':
    yolov9_inference()

首次运行会下载模型到当前代码所在的文件夹下

对示例图片进行检测:

python 复制代码
from ultralytics import YOLO


def yolov9_inference():
    yolo_model = YOLO("yolov9e.pt")
    yolo_model.info()
    results = yolo_model.predict(source='/Users/zhujiahui/Local/dataset/dog.jpeg', save=True, save_txt=True)
    print(results)


if __name__ == '__main__':
    yolov9_inference()

结果如下:

具体检测后的结果图片在runs/detect/predict/dog.jpeg下,效果:

|---------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------------------|
| | |
| 原图 | 检测结果 |

输入的图片也可以通过OpenCV读入:

python 复制代码
def yolov9_inference2():
    yolo_model = YOLO("yolov9e.pt")
    yolo_model.info()
    input_image = cv2.imread("/Users/zhujiahui/Local/dataset/dog.jpeg")
    results = yolo_model.predict(source=input_image, save=True, save_txt=True)
    print(results)
相关推荐
AI浩26 分钟前
PAB-Mamba-YoLo: VSSM 辅助 YOLO 用于断奶仔猪攻击行为检测
yolo
王哈哈^_^8 小时前
【完整源码+数据集】草莓数据集,yolov8草莓成熟度检测数据集 3207 张,草莓成熟度数据集,目标检测草莓识别算法系统实战教程
人工智能·算法·yolo·目标检测·计算机视觉·视觉检测·毕业设计
王哈哈^_^1 天前
YOLOv11视觉检测实战:安全距离测算全解析
人工智能·数码相机·算法·yolo·计算机视觉·目标跟踪·视觉检测
深度学习lover1 天前
<数据集>yolo航拍交通目标识别数据集<目标检测>
人工智能·python·yolo·目标检测·计算机视觉·航拍交通目标识别
Coovally AI模型快速验证1 天前
视觉语言模型(VLM)深度解析:如何用它来处理文档
人工智能·yolo·目标跟踪·语言模型·自然语言处理·开源
王哈哈^_^1 天前
【数据集+完整源码】水稻病害数据集,yolov8水稻病害检测数据集 6715 张,目标检测水稻识别算法实战训推教程
人工智能·算法·yolo·目标检测·计算机视觉·视觉检测·毕业设计
像风一样的男人@2 天前
python --两个文件夹文件名比对(yolo 图和label标注比对检查)
windows·python·yolo
AI纪元故事会3 天前
《目标检测全解析:从R-CNN到DETR,六大经典模型深度对比与实战指南》
人工智能·yolo·目标检测·r语言·cnn
Python图像识别3 天前
75_基于深度学习的咖啡叶片病害检测系统(yolo11、yolov8、yolov5+UI界面+Python项目源码+模型+标注好的数据集)
python·深度学习·yolo
Python图像识别3 天前
74_基于深度学习的垃圾桶垃圾溢出检测系统(yolo11、yolov8、yolov5+UI界面+Python项目源码+模型+标注好的数据集)
python·深度学习·yolo