Ultralytics YOLO27:

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 模型兼容包括 TensorFlowCaffeONNX 在内的主流深度学习框架,让开发者能够利用现有模型和工作流。

  • 易于使用:NCNN 提供易用的工具,可在不同格式之间转换模型,确保模型能够在不同开发环境之间顺畅互操作。

  • Vulkan GPU 加速:NCNN 支持使用 Vulkan 在多个厂商的 GPU(包括 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

# 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
检测
分割
语义
深度
分类
姿态
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'
Predict
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 权重,而 NCNN 的 CPU 运行时在硬件支持的情况下仍默认使用 FP16 进行计算。此选项取代已弃用的 half 标志。
batchint1指定导出模型的批量推理大小,或指定导出模型在 predict 模式下并发处理的最大图像数量。
devicestrNone指定导出设备:GPU(device=0)、CPU(device=cpu)、Apple silicon 的 MPS(device=mps)。

如需详细了解导出流程,请访问 Ultralytics 导出文档页面

部署导出的 YOLO26 NCNN 模型#

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

  • Android:为 Android 应用构建并集成 NCNN 模型,以执行目标检测

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

  • Linux:在包括 Raspberry Pi 和类似嵌入式系统在内的 Linux 设备上部署 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 支持量化等技术,可以提升模型速度并减少内存使用量。
    • 广泛兼容性:你可以在多个平台上部署 NCNN 模型,包括 Android、iOS、Linux 和 macOS。
    • Vulkan GPU 加速:通过 Vulkan 在 AMD、Intel 和其他非 NVIDIA GPU 上利用 GPU 加速,实现更快的推理。

    如需更多详细信息,请参阅为什么导出为 NCNN?部分。

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

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

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

  • NCNN 具有良好的通用性,支持多种平台:

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

    如需提升 Raspberry Pi 上的性能,可以考虑使用我们的 Raspberry Pi 指南中详细介绍的 NCNN 格式。

  • 要在 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
    
    # 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 加速部分。

评论