跳至内容

如何从YOLOv8 导出到NCNN 以便顺利部署

在计算能力有限的设备(如移动或嵌入式系统)上部署计算机视觉模型可能很棘手。您需要确保使用经过优化的格式,以获得最佳性能。这样,即使处理能力有限的设备也能很好地处理高级计算机视觉任务。

导出为NCNN 格式的功能可让您优化您的 Ultralytics YOLOv8模型,使其适用于基于设备的轻量级应用程序。在本指南中,我们将指导您如何将模型转换为NCNN 格式,使您的模型更容易在各种移动和嵌入式设备上良好运行。

为什么要导出到NCNN ?

NCNN 概况

NCNNNCNN 兼容多种平台,包括 Linux、Android 、iOS 和 macOS。

NCNN 以其在移动 CPU 上的快速处理速度而著称,可将深度学习模型快速部署到移动平台。这使得构建智能应用程序变得更加容易,让人工智能的力量触手可及。

NCNN 机型的主要特点

NCNN 模型提供了广泛的关键功能,通过帮助开发人员在移动、嵌入式和边缘设备上运行模型,实现了设备上的机器学习:

  • 高效和高性能:NCNN 模型高效轻便,经过优化,可在资源有限的移动和嵌入式设备(如 Raspberry Pi)上运行。它们还能在各种基于计算机视觉的任务中实现高性能和高精度。

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

  • 兼容性:NCNN 模型与流行的深度学习框架兼容,如 TensorFlowCaffeONNX.这种兼容性使开发人员可以轻松使用现有模型和工作流程。

  • 易于使用:NCNN 模型与流行的深度学习框架兼容,可轻松集成到各种应用程序中。此外,NCNN 还提供用户友好型工具,用于在不同格式之间转换模型,确保在整个开发环境中实现流畅的互操作性。

部署选项NCNN

在我们查看导出代码之前 YOLOv8 模型到 NCNN 格式,让我们了解如何 NCNN 通常使用模型。

NCNN 这些型号专为提高效率和性能而设计,与各种部署平台兼容:

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

  • 嵌入式系统和物联网设备Ultralytics NCNN NCNN 非常适合 Raspberry Pi 和NVIDIA Jetson等设备,尤其是在需要在设备上快速处理的情况下。

  • 桌面和服务器部署:可在 Linux、Windows 和 macOS 的桌面和服务器环境中部署,支持开发、培训和评估,具有更高的计算能力。

导出到NCNN :转换您的YOLOv8 模型

您可以通过将YOLOv8 模型转换为NCNN 格式,扩大模型兼容性和部署灵活性。

安装

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

安装

# Install the required package for YOLOv8
pip install ultralytics

有关安装过程的详细说明和最佳实践,请查阅我们的Ultralytics 安装指南。在安装YOLOv8 所需的软件包时,如果遇到任何困难,请查阅我们的常见问题指南,了解解决方案和技巧。

使用方法

在了解使用说明之前,需要注意的是,虽然Ultralytics YOLOv8 的所有 型号都可以导出,但您可以在此确保您选择的型号支持导出功能。

使用方法

from ultralytics import YOLO

# Load the YOLOv8 model
model = YOLO("yolov8n.pt")

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

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

# Run inference
results = ncnn_model("https://ultralytics.com/images/bus.jpg")
# Export a YOLOv8n PyTorch model to NCNN format
yolo export model=yolov8n.pt format=ncnn  # creates '/yolov8n_ncnn_model'

# Run inference with the exported model
yolo predict model='./yolov8n_ncnn_model' source='https://ultralytics.com/images/bus.jpg'

有关支持的导出选项的详细信息,请访问Ultralytics 部署选项文档页面

部署导出的YOLOv8 NCNN 模型

成功将Ultralytics YOLOv8 模型导出为NCNN 格式后,现在就可以部署它们了。运行NCNN 模型的首要和推荐的第一步是使用YOLO("./model_ncn_model") 方法,如前面的使用代码片段所述。不过,有关在其他各种设置中部署NCNN 模型的深入说明,请参阅以下资源:

  • Android:本博客介绍了如何通过Android 应用程序使用NCNN 模型执行物体检测等任务。

  • MacOS:了解如何使用NCNN 模型通过 macOS 执行任务。

  • Linux:浏览本页,了解如何在资源有限的设备(如 Raspberry Pi 和其他类似设备)上部署NCNN 模型。

  • 使用 VS2017 的 Windows x64:浏览本博客,了解如何使用 Visual Studio Community 2017 在 Windows x64 上部署NCNN 模型。

摘要

在本指南中,我们将介绍如何将Ultralytics YOLOv8 模型导出为NCNN 格式。这一转换步骤对于提高YOLOv8 模型的效率和速度至关重要,可使其更加有效,并适用于资源有限的计算环境。

有关使用的详细说明,请参阅 NCNN 官方文档

此外,如果您有兴趣探索Ultralytics YOLOv8 的其他集成选项,请务必访问我们的集成指南页面,了解更多信息。

常见问题

如何将Ultralytics YOLOv8 模型导出为NCNN 格式?

要将Ultralytics YOLOv8 模型导出为NCNN 格式,请按照以下步骤操作:

  • Python:使用 export YOLO 函数。

    from ultralytics import YOLO
    
    # Load the YOLOv8 model
    model = YOLO("yolov8n.pt")
    
    # Export to NCNN format
    model.export(format="ncnn")  # creates '/yolov8n_ncnn_model'
    
  • CLI:使用 yolo 命令与 export 争论。

    yolo export model=yolov8n.pt format=ncnn  # creates '/yolov8n_ncnn_model'
    

有关详细的导出选项,请查看文档中的导出页面。

出口YOLOv8 型号到NCNN 有哪些优势?

将Ultralytics YOLOv8 模型导出到NCNN 有几个好处:

  • 效率:NCNN 模型针对移动和嵌入式设备进行了优化,即使计算资源有限也能确保高性能。
  • 量化:NCNN 支持量化等技术,可提高模型速度并减少内存使用。
  • 广泛的兼容性:您可以在多个平台上部署NCNN 模型,包括Android 、iOS 、Linux 和 macOS。

更多详情,请参阅文档中的导出到NCNN部分。

为什么要在移动人工智能应用中使用NCNN ?

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

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

要了解更多信息,请访问文档中的NCNN 概述

NCNN 模型部署支持哪些平台?

NCNN 功能多样,支持各种平台:

  • 手机:Android,iOS.
  • 嵌入式系统和物联网设备:Raspberry Pi 和NVIDIA Jetson 等设备。
  • 台式机和服务器:Linux、Windows 和 macOS。

如果在 Raspberry Pi 上运行模型的速度不够快,转换为NCNN 格式可以加快速度,详见我们的《Raspberry Pi 指南》

如何在Android 上部署Ultralytics YOLOv8 NCNN 模型?

要在Android 上部署YOLOv8 模型:

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

有关分步说明,请参阅我们的 "部署YOLOv8 NCNN 模型"指南。

有关更多高级指南和使用案例,请访问Ultralytics 文档页面



创建于 2024-03-01,更新于 2024-07-05
作者:glenn-jocher(6)、abirami-vina(1)

评论