Ultralytics YOLO NCNN 导出
在计算能力受限的设备(如移动设备或嵌入式系统)上部署计算机视觉模型时,需要谨慎选择格式。使用优化后的格式可以确保即使是资源受限的设备也能高效地处理先进的计算机视觉任务。
导出为 NCNN 格式可以让你针对基于轻量级设备的应用程序优化你的 Ultralytics YOLO26 模型。本指南介绍了如何将模型转换为 NCNN 格式,以提高在移动和嵌入式设备上的性能。
为什么要导出为 NCNN?
NCNN 框架由腾讯开发,是一个高性能的神经网络推理计算框架,专为移动平台(包括手机、嵌入式设备和物联网设备)进行了优化。NCNN 兼容多种平台,包括 Linux、Android、iOS 和 macOS。
NCNN 以其在移动 CPU 上的快速处理速度而闻名,并能实现深度学习模型在移动平台上的快速部署,使其成为构建 AI 驱动应用程序的绝佳选择。
NCNN 模型的主要功能
NCNN 模型提供了多项关键功能,支持设备端机器学习,帮助开发者在移动、嵌入式和边缘设备上部署模型:
-
高效且高性能:NCNN 模型轻量化,并针对 Raspberry Pi 等资源有限的移动和嵌入式设备进行了优化,同时在计算机视觉任务中保持了高精度。
-
量化:NCNN 支持量化,这是一种通过降低模型权重和激活值的精度来提升性能并减少内存占用的技术。
-
兼容性:NCNN 模型与包括 TensorFlow、Caffe 和 ONNX 在内的流行深度学习框架兼容,允许开发者利用现有的模型和工作流。
-
易用性:NCNN 提供了用户友好的工具用于格式间的模型转换,确保了不同开发环境间的顺畅互操作性。
-
Vulkan GPU 加速:NCNN 支持 Vulkan 进行跨厂商(包括 AMD、Intel 和其他非 NVIDIA GPU)的 GPU 加速推理,从而在更广泛的硬件上实现高性能部署。
NCNN 的部署选项
NCNN 模型兼容多种部署平台:
-
移动端部署:针对 Android 和 iOS 进行了优化,能够无缝集成到移动应用程序中,实现高效的设备端推理。
-
嵌入式系统和物联网设备:非常适合 Raspberry Pi 和 NVIDIA Jetson 等资源受限的设备。如果使用 Ultralytics 指南在 Raspberry Pi 上进行标准推理的效果不够理想,NCNN 可以提供显著的性能提升。
-
桌面和服务器部署:支持在 Linux、Windows 和 macOS 上进行部署,用于开发、训练和评估工作流。
Vulkan GPU 加速
NCNN 通过 Vulkan 支持 GPU 加速,从而在广泛的 GPU(包括 AMD、Intel 和其他非 NVIDIA 显卡)上实现高性能推理。这特别适用于:
- 跨厂商 GPU 支持:与仅限于 NVIDIA GPU 的 CUDA 不同,Vulkan 适用于多个 GPU 厂商。
- 多 GPU 系统:在具有多个 GPU 的系统中,使用
device="vulkan:0"、device="vulkan:1"等指定特定的 Vulkan 设备。 - 边缘和桌面部署:在没有 CUDA 的设备上利用 GPU 加速。
要使用 Vulkan 加速,请在运行推理时指定 Vulkan 设备:
from ultralytics import YOLO
# Load the exported NCNN model
ncnn_model = YOLO("./yolo26n_ncnn_model")
# Run inference with Vulkan GPU acceleration (first Vulkan device)
results = ncnn_model("https://ultralytics.com/images/bus.jpg", device="vulkan:0")
# Use second Vulkan device in multi-GPU systems
results = ncnn_model("https://ultralytics.com/images/bus.jpg", device="vulkan:1")确保你为 GPU 安装了 Vulkan 驱动程序。大多数现代 GPU 驱动程序默认包含 Vulkan 支持。你可以在 Linux 上使用 vulkaninfo 等工具,或在 Windows 上使用 Vulkan SDK 来验证 Vulkan 的可用性。
导出至 NCNN:转换你的 YOLO26 模型
你可以通过将 YOLO26 模型转换为 NCNN 格式来扩展模型的兼容性和部署灵活性。
安装
要安装所需的软件包,请运行:
# Install the required package for YOLO26
pip install ultralytics有关详细说明和最佳实践,请参阅 Ultralytics 安装指南。如果遇到任何困难,请咨询我们的常见问题指南以寻求解决方案。
使用方法
所有 Ultralytics YOLO26 模型 均设计为支持直接开箱导出,使你能够轻松将其集成到你首选的部署工作流中。你可以查看支持的导出格式和配置选项的完整列表,为你的应用选择最佳设置。
from ultralytics import YOLO
# Load the YOLO26 model
model = YOLO("yolo26n.pt")
# Export the model to NCNN format
model.export(format="ncnn") # creates '/yolo26n_ncnn_model'
# Load the exported NCNN model
ncnn_model = YOLO("./yolo26n_ncnn_model")
# Run inference
results = ncnn_model("https://ultralytics.com/images/bus.jpg")导出参数
| 参数 | 类型 | 默认值 | 描述 |
|---|---|---|---|
format | str | 'ncnn' | 导出模型的目标格式,定义与各种部署环境的兼容性。 |
imgsz | int 或 tuple | 640 | 模型输入的所需图像尺寸。可以是正方形图像的整数,也可以是特定维度的元组 (height, width)。 |
half | bool | False | 启用 FP16(半精度)量化,减小模型大小并可能在受支持的硬件上加快推理速度。 |
batch | int | 1 | 指定导出模型的批量推理大小,或者导出模型在 predict 模式下将同时处理的最大图像数量。 |
device | str | None | 指定导出的设备:GPU (device=0)、CPU (device=cpu)、适用于 Apple 芯片的 MPS (device=mps)。 |
有关导出过程的更多详细信息,请访问 Ultralytics 导出文档页面。
部署已导出的 YOLO26 NCNN 模型
在将你的 Ultralytics YOLO26 模型导出为 NCNN 格式后,你可以按照上述用法示例,使用 YOLO("yolo26n_ncnn_model/") 方法进行部署。有关特定平台的部署说明,请参阅以下资源:
-
macOS:在 macOS 系统上部署 NCNN 模型。
-
Linux:在包括 Raspberry Pi 及类似嵌入式系统在内的 Linux 设备上部署 NCNN 模型。
-
Windows x64:使用 Visual Studio 在 Windows x64 上部署 NCNN 模型。
总结
本指南介绍了如何将 Ultralytics YOLO26 模型导出为 NCNN 格式,以提高在资源受限设备上的效率和速度。
有关更多详情,请参考 NCNN 官方文档。有关其他导出选项,请访问我们的集成指南页面。
常见问题 (FAQ)
我该如何将 Ultralytics YOLO26 模型导出为 NCNN 格式?
要将你的 Ultralytics YOLO26 模型导出为 NCNN 格式:
-
Python:使用 YOLO 类中的
export方法。from ultralytics import YOLO # Load the YOLO26 model model = YOLO("yolo26n.pt") # Export to NCNN format model.export(format="ncnn") # creates '/yolo26n_ncnn_model' -
CLI:使用
yolo export命令。yolo export model=yolo26n.pt format=ncnn # creates '/yolo26n_ncnn_model'
有关详细的导出选项,请参阅导出文档。
将 YOLO26 模型导出为 NCNN 有什么优势?
将你的 Ultralytics YOLO26 模型导出为 NCNN 有几点好处:
- 效率:NCNN 模型针对移动和嵌入式设备进行了优化,即使在计算资源有限的情况下也能确保高性能。
- 量化:NCNN 支持量化等技术,能提升模型速度并减少内存占用。
- 广泛的兼容性:你可以在包括 Android、iOS、Linux 和 macOS 在内的多个平台上部署 NCNN 模型。
- Vulkan GPU 加速:通过 Vulkan 在 AMD、Intel 和其他非 NVIDIA GPU 上利用 GPU 加速,从而获得更快的推理速度。
更多详情,请参阅为什么要导出为 NCNN?章节。
为什么我应该在移动 AI 应用程序中使用 NCNN?
由腾讯开发的 NCNN 是专为移动平台优化的。使用 NCNN 的主要原因包括:
- 高性能:专为移动 CPU 上高效、快速的处理而设计。
- 跨平台:兼容 TensorFlow 和 ONNX 等流行框架,使在不同平台间转换和部署模型变得更加容易。
- 社区支持:活跃的社区支持确保了持续的改进和更新。
更多信息,请参阅NCNN 模型的主要功能章节。
NCNN 模型部署支持哪些平台?
NCNN 功能多样,支持各种平台:
- 移动端:Android、iOS。
- 嵌入式系统和物联网设备:如 Raspberry Pi 和 NVIDIA Jetson 等设备。
- 桌面和服务器:Linux、Windows 和 macOS。
若要在 Raspberry Pi 上获得更好的性能,请考虑按照我们的Raspberry Pi 指南中所述使用 NCNN 格式。
我该如何将 Ultralytics YOLO26 NCNN 模型部署到 Android 上?
要将你的 YOLO26 模型部署到 Android 上:
- 构建 Android 版本:遵循 NCNN Android 构建指南。
- 集成到你的应用程序:使用 NCNN Android SDK 将导出的模型集成到你的应用程序中,以实现高效的设备端推理。
有关详细说明,请参阅部署已导出的 YOLO26 NCNN 模型。
有关更多高级指南和用例,请访问 Ultralytics 部署指南。
我该如何将 Vulkan GPU 加速与 NCNN 模型配合使用?
NCNN 支持在 AMD、Intel 和其他非 NVIDIA GPU 上使用 Vulkan 进行 GPU 加速。要使用 Vulkan:
from ultralytics import YOLO
# Load NCNN model and run with Vulkan GPU
model = YOLO("yolo26n_ncnn_model")
results = model("image.jpg", device="vulkan:0") # Use first Vulkan device对于多 GPU 系统,请指定设备索引(例如,vulkan:1 用于第二个 GPU)。请确保为你的 GPU 安装了 Vulkan 驱动程序。有关更多详细信息,请参阅Vulkan GPU 加速章节。