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.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

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

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

wget -P /Users/zhujiahui/Local/dataset -q https://media.roboflow.com/notebooks/examples/dog.jpeg

安装Python依赖

pip install opencv-python
pip install ultralytics

二、推理

编写以下代码:

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模型:

from ultralytics import YOLO


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


if __name__ == '__main__':
    yolov9_inference()

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

对示例图片进行检测:

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读入:

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)

  • 11
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
YOLO(You Only Look Once)是一种实时目标检测算法,它的训练、测试推理过程如下: 训练过程: 1. 数据集准备:收集带有标注框的图像数据,并将它们划分为训练集和验证集。 2. 标注数据:使用标注工具(如LabelImg)对图像进行手动标注,将每个目标对象的边界框和类别标签绘制出来。 3. 预处理:将图像和对应的标注转换为模型可接受的格式。这通常包括调整图像大小、数据增强(如随机裁剪、翻转等)和标签转化为目标检测格式(如YOLO需要的(x, y, width, height)形式)。 4. 网络架构选择:选择适合的YOLO变体(如YOLOv1,YOLOv2,YOLOv3等)作为目标检测网络的基础架构。 5. 模型训练:使用训练集对目标检测网络进行训练。训练过程中,通过计算预测框与真实框之间的损失,利用反向传播算法更新网络参数。 测试过程: 1. 预处理:将待测试的图像进行预处理,使其适应网络输入要求。 2. 将图像输入网络:将预处理后的图像输入已经训练好的目标检测网络。 3. 在网络输出上进行后处理:根据网络输出得到的边界框和类别置信度,使用非极大值抑制(NMS)算法对边界框进行筛选和去重,以及过滤掉置信度较低的边界框。 4. 输出结果:将经过NMS处理后的边界框和对应的类别标签作为最终的目标检测结果。 推理过程: 1. 预处理:与测试过程相同,将待推理的图像进行预处理。 2. 将图像输入网络:将预处理后的图像输入已经训练好的目标检测网络。 3. 在网络输出上进行后处理:与测试过程相同,在网络输出上进行NMS等后处理操作。 4. 输出结果:将经过NMS处理后的边界框和对应的类别标签作为最终的目标检测结果,并根据需要进行可视化或其他后续操作。 以上是YOLO训练、测试推理的基本流程,具体实现细节可能因不同的YOLO变体和实际应用场景而有所差异。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值