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")
作者:戴忠忠,高通工程师