跳至内容

利用Neural Magic的 DeepSparse 引擎优化YOLOv8 推论

在各种硬件上部署对象检测模型(如 Ultralytics YOLOv8等物体检测模型时,会遇到优化等特殊问题。这就是YOLOv8与Neural Magic的 DeepSparse Engine 集成的作用所在。它改变了YOLOv8 模型的执行方式,可直接在 CPU 上实现 GPU 级性能。

本指南将向您介绍如何使用Neural Magic 的 DeepSparse 部署YOLOv8 、如何运行推论,以及如何对性能进行基准测试以确保优化。

Neural Magic的 DeepSparse

Neural Magic的 DeepSparse 概述

Neural MagicDeepSparse是一种推理运行时,旨在优化神经网络在 CPU 上的执行。它应用稀疏性、剪枝和量化等先进技术,在保持准确性的同时大幅降低计算需求。DeepSparse 为在各种设备上高效、可扩展地执行神经网络提供了灵活的解决方案。

将Neural Magic's DeepSparse 与下列软件集成的优势YOLOv8

在深入了解如何使用 DeepSparse 部署YOLOV8 之前,我们先来了解一下使用 DeepSparse 的好处。一些主要优势包括

  • 推理速度更快:最高可达 525 FPS(在YOLOv8n 上),与传统方法相比,大大加快了YOLOv8 的推理能力。

提高推理速度

  • 优化模型效率:利用剪枝和量化提高YOLOv8 的效率,在保持准确性的同时减少模型大小和计算需求。

优化模型效率

  • 在标准 CPU 上实现高性能:在 CPU 上提供类似 GPU 的性能,为各种应用提供更方便、更经济的选择。

  • 简化集成和部署:提供用户友好型工具,可将YOLOv8 轻松集成到应用程序中,包括图像和视频注释功能。

  • 支持各种模型类型:兼容标准和稀疏性优化的YOLOv8 模型,增加了部署的灵活性。

  • 经济高效、可扩展的解决方案:降低运营成本,提供可扩展的高级对象检测模型部署。

Neural Magic 的 DeepSparse 技术如何工作?

Neural MagicDeep Sparse 技术的灵感来源于人脑在神经网络计算中的效率。它采用了大脑的以下两个关键原则:

  • 稀疏性:稀疏化过程包括修剪深度学习网络中的冗余信息,从而在不影响准确性的前提下,建立更小、更快的模型。这种技术能显著缩小网络规模,减少计算需求。

  • 参照位置:DeepSparse 采用独特的执行方法,将网络分解为Tensor 列。这些列按深度执行,完全位于 CPU 的缓存中。这种方法模仿了大脑的效率,最大限度地减少了数据移动,最大限度地利用了 CPU 的缓存。

Neural Magic 的 DeepSparse 技术如何工作

有关Neural Magic DeepSparse 技术工作原理的详细信息,请查看他们的博客文章

创建基于自定义数据集训练的YOLOv8 稀疏版本

SparseZoo 是Neural Magic 的一个开源模型库,它提供了一系列预先解析的YOLOv8 模型检查点。通过与Ultralytics 无缝集成的 SparseML,用户可以使用直接的命令行界面在其特定数据集上毫不费力地对这些稀疏检查点进行微调。

详情请查看Neural Magic 的 SparseMLYOLOv8 文档

使用方法:使用 DeepSparse 部署YOLOV8

使用Neural Magic 的 DeepSparse 部署YOLOv8 只需几个简单的步骤。在深入了解使用说明之前,请务必查看 Ultralytics 提供的一系列YOLOv8 模型。这将帮助您根据项目要求选择最合适的模型。以下是开始使用的方法。

步骤 1:安装

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

安装

# Install the required packages
pip install deepsparse[yolov8]

第 2 步:将YOLOv8 导出为ONNX 格式

DeepSparse 引擎要求YOLOv8 ONNX 格式的模型。为了与 DeepSparse 兼容,必须将模型导出为这种格式。使用以下命令导出YOLOv8 模型:

出口型号

# Export YOLOv8 model to ONNX format
yolo task=detect mode=export model=yolov8n.pt format=onnx opset=13

该命令将保存 yolov8n.onnx 模型到磁盘中。

步骤 3:部署和运行推理

有了ONNX 格式的YOLOv8 模型,您就可以使用 DeepSparse 部署和运行推论。这可以通过其直观的Python API 轻松完成:

部署和运行推理

from deepsparse import Pipeline

# Specify the path to your YOLOv8 ONNX model
model_path = "path/to/yolov8n.onnx"

# Set up the DeepSparse Pipeline
yolo_pipeline = Pipeline.create(task="yolov8", model_path=model_path)

# Run the model on your images
images = ["path/to/image.jpg"]
pipeline_outputs = yolo_pipeline(images=images)

步骤 4:绩效基准

检查YOLOv8 模型在 DeepSparse 上的性能是否达到最佳状态非常重要。您可以对模型的性能进行基准测试,分析吞吐量和延迟:

制定基准

# Benchmark performance
deepsparse.benchmark model_path="path/to/yolov8n.onnx" --scenario=sync --input_shapes="[1,3,640,640]"

步骤 5:附加功能

DeepSparse 还为YOLOv8 在图像标注和数据集评估等应用中的实际集成提供了其他功能。

附加功能

# For image annotation
deepsparse.yolov8.annotate --source "path/to/image.jpg" --model_filepath "path/to/yolov8n.onnx"

# For evaluating model performance on a dataset
deepsparse.yolov8.eval --model_path "path/to/yolov8n.onnx"

运行注释命令可处理指定图像、检测对象并保存带有边框和分类的注释图像。注释后的图像将保存在注释结果文件夹中。这有助于直观地展示模型的检测能力。

图像注释功能

运行 eval 命令后,您将收到精确度、召回率和 mAP(平均精确度)等详细的输出指标。这可以让您全面了解模型在数据集上的表现。该功能对于微调和优化YOLOv8 模型以适用于特定用例,确保高精度和高效率尤为有用。

摘要

本指南探讨了如何将Ultralytics'YOLOv8 与Neural Magic 的 DeepSparse Engine 集成。它强调了这种集成如何提高YOLOv8 在 CPU 平台上的性能,提供 GPU 级的效率和先进的神经网络稀疏性技术。

更多详细信息和高级用法,请访问Neural Magic的 DeepSparse 文档。此外,还可以在这里查看Neural Magic与YOLOv8 集成的文档,并在这里观看有关的精彩会议。

此外,如需更广泛地了解YOLOv8 的各种集成,请访问Ultralytics 集成指南页面,在那里您可以发现一系列其他令人兴奋的集成可能性。



创建于 2023-12-30,更新于 2024-05-18
作者:glenn-jocher(4)、abirami-vina(1)

评论