Ultralytics YOLO27:
Get Started

Ultralytics YOLO NCNN 导出#

在移动设备或嵌入式系统等计算能力有限的设备上部署计算机视觉模型,需要谨慎选择格式。使用经过优化的格式,能确保资源受限设备也可以高效处理高级计算机视觉任务。

导出为 NCNN 格式,可以针对轻量级设备应用优化你的 Ultralytics YOLO26 模型。本指南介绍如何将模型转换为 NCNN 格式,以提升模型在移动设备和嵌入式设备上的性能。

为什么要导出为 NCNN?#

NCNN high-performance neural network inference framework

腾讯开发的 NCNN 框架是一种高性能神经网络推理计算框架,专门针对移动平台进行了优化,适用于手机、嵌入式设备和 IoT 设备等。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 进行了优化,可轻松集成到移动应用中,实现高效的设备端推理。

  • 嵌入式系统和 IoT 设备:非常适合 Raspberry Pi 和 NVIDIA Jetson 等资源受限的设备。如果使用 Ultralytics 指南在 Raspberry Pi 上进行标准推理无法满足需求,NCNN 可以显著提升性能。

  • 桌面端和服务器部署:支持在 Linux、Windows 和 macOS 上部署,以适用于开发、训练和评估工作流。

Vulkan GPU 加速#

NCNN 支持通过 Vulkan 加速 GPU,能在包括 AMD、Intel 和其他非 NVIDIA 显卡在内的多种 GPU 上实现高性能推理。这对于以下场景尤其有用:

  • 跨厂商 GPU 支持:与仅限 NVIDIA GPU 的 CUDA 不同,Vulkan 可在多家 GPU 厂商的产品上运行。
  • 多 GPU 系统:在配备多块 GPU 的系统中,可以使用 device="vulkan:0"、device="vulkan:1" 等指定 Vulkan 设备。
  • 边缘端和桌面端部署:在无法使用 CUDA 的设备上利用 GPU 加速。

要使用 Vulkan 加速,请在运行推理时指定 Vulkan 设备:

Vulkan 推理
from ultralytics import YOLO

# 加载导出的 NCNN 模型
ncnn_model = YOLO("./yolo26n_ncnn_model")

# 使用 Vulkan GPU 加速运行推理(第一个 Vulkan 设备)
results = ncnn_model("https://ultralytics.com/images/bus.jpg", device="vulkan:0")

# 在多 GPU 系统中使用第二个 Vulkan 设备
results = ncnn_model("https://ultralytics.com/images/bus.jpg", device="vulkan:1")
Vulkan 要求

确保已为你的 GPU 安装 Vulkan 驱动程序。大多数现代 GPU 驱动程序默认都支持 Vulkan。你可以在 Linux 上使用 vulkaninfo 等工具,或在 Windows 上使用 Vulkan SDK,来确认 Vulkan 是否可用。

支持的任务#

NCNN 导出支持 Ultralytics 的全部七种任务。语义分割和深度估计仅适用于 YOLO26,因为只有 YOLO26 系列包含这两种任务头。

任务YOLOv8YOLO11YOLO26
检测✅✅✅
分割✅✅✅
语义分割❌❌✅
深度估计❌❌✅
分类✅✅✅
姿态✅✅✅
OBB✅✅✅

导出为 NCNN:转换 YOLO26 模型#

将 YOLO26 模型转换为 NCNN 格式,可以拓展模型兼容性和部署灵活性。

安装#

运行以下命令安装所需的软件包:

安装
# Install the required package for YOLO26
pip install ultralytics

如需详细说明和最佳实践,请参阅 Ultralytics 安装指南。如果遇到任何困难,请查阅常见问题指南以获取解决方案。

用法#

所有 Ultralytics YOLO26 模型均支持开箱即用的导出,便于你将模型集成到首选的部署工作流中。你可以查看支持的导出格式和配置选项的完整列表,为你的应用选择最佳配置。

NCNN 格式支持 导出、预测和验证模式。导出模型后,加载导出的模型即可运行推理或验证其准确率。

导出
from ultralytics import YOLO

# 加载 YOLO26 模型
model = YOLO("yolo26n.pt")

# 将模型导出为 NCNN 格式
model.export(format="ncnn")  # creates 'yolo26n_ncnn_model'
预测
from ultralytics import YOLO

# 加载导出的 NCNN 模型
model = YOLO("./yolo26n_ncnn_model")

# 运行推理
results = model("https://ultralytics.com/images/bus.jpg")
验证
from ultralytics import YOLO

# 加载导出的 NCNN 模型
model = YOLO("./yolo26n_ncnn_model")

# 在 COCO8 数据集上验证准确率
metrics = model.val(data="coco8.yaml")

导出参数#

参数类型默认值说明
formatstr'ncnn'导出模型的目标格式,用于定义与各种部署环境的兼容性。
imgszint 或 tuple640模型输入所需的图像尺寸。正方形图像可使用整数;若要指定具体尺寸,则可使用元组 (height, width)。
quantizeint 或 strNone量化精度:16(FP16)会将导出权重的大小减半;32/未设置时会导出 FP32 权重,而 NCNN 的 CPU 运行时在硬件支持的情况下仍默认使用 FP16 进行计算。此选项取代了已弃用的 half 标志。
batchint1指定导出模型的批量推理大小,或导出模型在 predict 模式下可同时处理的最大图像数。
devicestrNone指定导出设备:GPU(device=0)、CPU(device=cpu)、Apple 芯片的 MPS(device=mps)。

有关导出流程的更多详情,请访问 Ultralytics 导出文档页面。

部署导出的 YOLO26 NCNN 模型#

将 Ultralytics YOLO26 模型导出为 NCNN 格式后,你可以按照上方用法示例,使用 YOLO("yolo26n_ncnn_model/") 方法进行部署。有关特定平台的部署说明,请参阅以下资源:

  • Android:在 Android 应用中构建并集成 NCNN 模型,以实现目标检测。

  • macOS:在 macOS 系统上部署 NCNN 模型。

  • Linux:在 Linux 设备上部署 NCNN 模型,包括 Raspberry Pi 和类似的嵌入式系统。

  • Windows x64:使用 Visual Studio 在 Windows x64 上部署 NCNN 模型。

总结#

本指南介绍了如何将 Ultralytics YOLO26 模型导出为 NCNN 格式,以提升资源受限设备上的效率和速度。

如需了解更多详情,请参阅 NCNN 官方文档。如需了解其他导出选项,请访问我们的集成指南页面。

常见问题#

  • 要将 Ultralytics YOLO26 模型导出为 NCNN 格式:

    • Python:使用 YOLO 类的 export 方法。

      from ultralytics import YOLO
      
      # 加载 YOLO26 模型
      model = YOLO("yolo26n.pt")
      
      # 导出为 NCNN 格式
      model.export(format="ncnn")  # creates 'yolo26n_ncnn_model'
    • CLI:使用 yolo export 命令。

      yolo export model=yolo26n.pt format=ncnn # creates 'yolo26n_ncnn_model'

    如需了解详细的导出选项,请参阅导出文档。

  • 将 Ultralytics YOLO26 模型导出为 NCNN 有以下几项优势:

    • 高效:NCNN 模型针对移动端和嵌入式设备进行了优化,即使计算资源有限,也能确保高性能。
    • 量化:NCNN 支持量化等技术,可提升模型速度并减少内存使用量。
    • 广泛兼容:你可以在多个平台上部署 NCNN 模型,包括 Android、iOS、Linux 和 macOS。
    • Vulkan GPU 加速:通过 Vulkan 在 AMD、Intel 和其他非 NVIDIA GPU 上利用 GPU 加速,从而加快推理速度。

    如需了解更多详情,请参阅为什么要导出为 NCNN?部分。

  • NCNN 由腾讯开发,专为移动平台进行了优化。使用 NCNN 的主要原因包括:

    • 高性能:专为在移动端 CPU 上实现高效、快速的处理而设计。
    • 跨平台:兼容 TensorFlow 和 ONNX 等热门框架,让你能更轻松地在不同平台之间转换和部署模型。
    • 社区支持:活跃的社区支持确保 NCNN 持续改进和更新。

    如需了解更多信息,请参阅 NCNN 模型的主要特性部分。

  • NCNN 用途广泛,支持多种平台:

    • 移动端:Android、iOS。
    • 嵌入式系统和 IoT 设备:Raspberry Pi 和 NVIDIA Jetson 等设备。
    • 桌面端和服务器:Linux、Windows 和 macOS。

    如需提升 Raspberry Pi 的性能,可以考虑使用 NCNN 格式,详情请参阅我们的 Raspberry Pi 指南。

  • 要在 Android 上部署 YOLO26 模型:

    1. 为 Android 构建:按照 NCNN Android 构建指南操作。
    2. 集成到你的应用:使用 NCNN Android SDK 将导出的模型集成到应用中,实现高效的设备端推理。

    如需详细说明,请参阅部署导出的 YOLO26 NCNN 模型。

    如需了解更高级的指南和用例,请访问 Ultralytics 部署指南。

  • NCNN 支持通过 Vulkan 在 AMD、Intel 和其他非 NVIDIA GPU 上加速 GPU。要使用 Vulkan:

    from ultralytics import YOLO
    
    # 加载 NCNN 模型并使用 Vulkan GPU 运行
    model = YOLO("yolo26n_ncnn_model")
    results = model("image.jpg", device="vulkan:0")  # 使用第一个 Vulkan 设备

    对于多 GPU 系统,请指定设备索引(例如,第二块 GPU 使用 vulkan:1)。确保已为你的 GPU 安装 Vulkan 驱动程序。详情请参阅 Vulkan GPU 加速部分。

评论