基于AI-Hub执行Yolo11模型转换和Profiling

YOLO 11是Ultralytics最新发布的YOLO系列模型,专为计算机视觉任务设计。它在前几代YOLO模型的基础上进行了改进,具有更高的效率和更轻量化的特点。而Yolo11的名称也从原来的Yolov2, Yolov3 …的Yolo+v+版本号惯例直接叫YOLO11 而非Yolov11。YOLO 11不仅可以进行目标检测,还支持实例分割、图像分类和姿态估计等任务.

今天我们将探讨,在手上没有高通SoC的情况下,如何使用AI-hub去评估Yolo11

1. 准备工作

1.1 前置条件

假设你已经在本地的环境中配置好了ai-hub相关的环境,请参考文档安装配置环境

Overview of Qualcomm® AI Hub — qai-hub documentation

2. 下载模型

执行命令下载Yolo11预训练的模型

wget https://github.com/ultralytics/assets/releases/download/v8.3.0/yolo11s.pt

模型下载后为了方便使用,我们把格式转化为ONNX

from ultralytics import YOLO

# Load a model
model = YOLO("yolo11s.pt")  # load an official model

# Export the model
model.export(format="onnx")

3. 编译和Profiling

编译模型

import qai_hub as hub
import numpy as np

# Compile a model
compile_job = hub.submit_compile_job(
    model="yolo11s.onnx",
    device=hub.Device("Samsung Galaxy S23 (Family)"),
    options="--target_runtime qnn_lib_aarch64_android",
    input_specs=dict(image=(1, 3, 640, 640)),
)
assert isinstance(compile_job, hub.CompileJob)

 

这部分代码是把ONNX模型提交到AI-hub编译,模型输入的shape是[1,3,640,640] 编译时候指定的目标格式为QNN android的so库文件,编译完成后,可以在AI-hub的后台页面下载

对编译好的模型Profiling

# Profile the compiled model
profile_job = hub.submit_profile_job(
    model=compile_job.get_target_model(),
    device=hub.Device("Samsung Galaxy S23 (Family)"),
)
assert isinstance(profile_job, hub.ProfileJob)

 

可以看到,Yolo11在三星Galaxy S2的手机上纯推理时间耗时9.1ms

也可以提交AI-hub做一次模型推理,推理结果下载保存到本地

inference_job = hub.submit_inference_job(
    model=compile_job.get_target_model(),
    device=hub.Device("Samsung Galaxy S23 (Family)"),
    inputs=dict(image=[sample]),
)

assert isinstance(inference_job, hub.InferenceJob)
inference_job.download_output_data("./output")

作者:戴忠忠,高通工程师

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值