1. 概要

在实际场景中,深度学习模型通常通过 PyTorch、TensorFlow 等框架来完成,直接通过这些模型来进行推理效率并不高,特别是对延时要求严格的线上场景。由此,经过工业界和学术界数年的探索,模型部署有了一条流行的流水线:

在这里插入图片描述
这一条流水线解决了模型部署中的两大难点:使用对接深度学习框架和推理引擎的中间表示,开发者不必担心如何在新环境中运行各个复杂的框架;通过中间表示的网络结构优化和推理引擎对运算的底层优化,模型的运算效率大幅提升。

本文将会对yolo11的目标检测模型进行转换,获得我们需要的NCNN模型。

2. 将 PyTorch 模型转换为 ONNX 模型

转换方法有两个

  1. 通过ultralytics官方提供的内置工具包进行转换**(很方便,但是转换的模型yolo11模型不能直接使用Tencent官方提供的examples中的yolo11检测代码)**
  2. 通过Tencent官方建议:不使用onnx转换,而是用pnnx转换
    本文使用的是方法1,关于方法2,可以参考如下链接:方法二

2.1 方法1

1.首先安装好相关的依赖

# Install the required package for YOLO11
pip install ultralytics

2.进行模型转换

from ultralytics import YOLO

# Load the YOLO11 model
model = YOLO("yolo11n.pt")

# Export the model to NCNN format
model.export(format="ncnn")  # creates '/yolo11n_ncnn_model'

# Load the exported NCNN model
ncnn_model = YOLO("./yolo11n_ncnn_model")

# Run inference
results = ncnn_model("https://ultralytics.com/images/bus.jpg")

通过上述方法即可获得需要的.bin与.param模型

3. 总结

通过如上的方法可以轻易得到.param与.bin文件,在下一章节中,将会讲述如何移植ncnn到imx6ull上以及如何实现我们的yolo11检测代码.

4.参考链接

https://blog.angustar.com/archives/deploying-DNNs-on-embedded-development-boards-1.html

5. 章节

imx6ull移植ncnn框架并运行yolo11目标检测模型(2)移植ncnn致imx6ull并成功跑通例程

imx6ull移植ncnn框架并运行yolo11目标检测模型(3)部署yolo11目标检测模型,交叉编译自己写的检测文件

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐