YOLO Vision 2026:

Ultralytics YOLO NCNN 导出#

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

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

为什么要导出为 NCNN?#

NCNN high-performance neural network inference framework

由腾讯开发的NCNN框架是一个高性能神经网络推理计算框架,专门针对移动平台(包括手机、嵌入式设备和物联网设备)进行了优化。NCNN 兼容多种平台,包括 Linux、Android、iOS 和 macOS。

NCNN 以其在移动 CPU 上的快速处理速度而闻名,能够将深度学习模型快速部署到移动平台,使其成为构建 AI 驱动应用的绝佳选择。

NCNN 模型的主要特性#

NCNN 模型提供了几项核心功能,支持端侧机器学习,帮助开发者在移动设备、嵌入式设备和边缘设备上部署模型:

  • 高效且高性能:NCNN 模型轻量化,专为 Raspberry Pi 等资源有限的移动和嵌入式设备优化,同时在计算机视觉任务中保持高准确率

  • 量化:NCNN 支持量化,这是一种降低模型权重和激活值精度以提升性能并减少内存占用的技术。

  • 兼容性:NCNN 模型兼容主流深度学习框架,包括 TensorFlowCaffeONNX,允许开发者利用现有的模型和工作流。

  • 易用性:NCNN 提供了用户友好的工具,用于在不同格式之间转换模型,确保了不同开发环境间的顺畅互操作性。

  • Vulkan GPU 加速:NCNN 支持 Vulkan 进行 GPU 加速推理,适用于 AMD、Intel 以及其他非 NVIDIA 的 GPU,能够在更广泛的硬件上实现高性能部署。

使用 NCNN 的部署选项#

NCNN 模型兼容多种部署平台:

  • 移动端部署:针对 Android 和 iOS 进行了优化,能够无缝集成到移动应用中,实现高效的设备端推理。

  • 嵌入式系统和物联网设备:非常适合 Raspberry Pi 和 NVIDIA Jetson 等资源受限的设备。如果在 Raspberry Pi 上使用Ultralytics 指南进行标准推理无法满足需求,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

# 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")
Vulkan 要求

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

支持的任务#

NCNN 导出支持所有七个 Ultralytics 任务。语义分割和深度估计仅在 YOLO26(唯一提供这些检测头的系列)上可用。

任务YOLOv8YOLO11YOLO26
检测
分割
语义
深度
分类
Pose
OBB

导出为 NCNN:转换你的 YOLO26 模型#

你可以通过将 YOLO26 模型转换为 NCNN 格式来扩展模型的兼容性和部署灵活性。

安装#

要安装所需的软件包,请运行:

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

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

用法#

所有Ultralytics YOLO26 模型都旨在开箱即用支持导出,这使得将它们集成到你首选的部署工作流中变得轻而易举。你可以查看支持的导出格式和配置选项完整列表,为你的应用选择最佳设置。

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

导出
from ultralytics import YOLO

# Load a YOLO26 model
model = YOLO("yolo26n.pt")

# Export the model to NCNN format
model.export(format="ncnn")  # creates '/yolo26n_ncnn_model'
预测
from ultralytics import YOLO

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

# Run inference
results = model("https://ultralytics.com/images/bus.jpg")
验证
from ultralytics import YOLO

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

# Validate accuracy on the COCO8 dataset
metrics = model.val(data="coco8.yaml")

导出参数#

参数类型默认值描述
formatstr'ncnn'导出模型的目标格式,定义了与各种部署环境的兼容性。
imgszinttuple640模型输入的所需图像大小。对于正方形图像可以是整数,或者对于特定尺寸可以是元组 (height, width)
quantizeintstrNone量化精度:16 (FP16) 可减小模型大小并加快推理速度;32/未设置表示 FP32。替代了已弃用的 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:构建和集成 NCNN 模型,用于 Android 应用中的目标检测

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

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

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

总结#

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

有关更多详细信息,请参阅官方 NCNN 文档。有关其他导出选项,请访问我们的集成指南页面

常见问题解答#

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

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

      from ultralytics import YOLO
      
      # Load a 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'

    有关详细的导出选项,请参阅导出文档。

  • 将 Ultralytics YOLO26 模型导出为 NCNN 具有多项好处:

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

    有关更多详细信息,请参阅为什么要导出到 NCNN?一节。

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

    • 高性能:专为在移动 CPU 上进行高效、快速的处理而设计。
    • 跨平台:兼容 TensorFlow 和 ONNX 等主流框架,使跨不同平台转换和部署模型变得更加容易。
    • 社区支持:活跃的社区支持确保了持续的改进和更新。

    有关更多信息,请参阅NCNN 模型的核心功能一节。

  • NCNN 功能丰富,支持多种平台:

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

    为了在 Raspberry Pi 上获得更好的性能,建议使用 NCNN 格式,详情请参见我们的Raspberry Pi 指南

  • 要在 Android 上部署你的 YOLO26 模型:

    1. 为 Android 构建:遵循为 Android 构建 NCNN指南。
    2. 集成到你的 App 中:使用 NCNN Android SDK 将导出的模型集成到你的应用程序中,以实现高效的设备端推理。

    有关详细说明,请参阅部署导出的 YOLO26 NCNN 模型

    有关更多高级指南和用例,请访问 Ultralytics 部署指南

  • NCNN 支持 Vulkan 在 AMD、Intel 和其他非 NVIDIA GPU 上进行 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 加速一节。

评论