Перейти к содержимому

Optimizing YOLOv8 Inferences with Neural Magic's DeepSparse Engine

When deploying object detection models like Ultralytics YOLOv8 on various hardware, you can bump into unique issues like optimization. This is where YOLOv8's integration with Neural Magic's DeepSparse Engine steps in. It transforms the way YOLOv8 models are executed and enables GPU-level performance directly on CPUs.

В этом руководстве ты узнаешь, как развернуть YOLOv8 с помощью DeepSparse от Neural Magic, как запустить выводы, а также как провести бенчмаркинг производительности, чтобы убедиться, что она оптимизирована.

Neural Magic'DeepSparse

Neural Magic's DeepSparse Overview

Neural Magic's DeepSparse is an inference run-time designed to optimize the execution of neural networks on CPUs. It applies advanced techniques like sparsity, pruning, and quantization to dramatically reduce computational demands while maintaining accuracy. DeepSparse offers an agile solution for efficient and scalable neural network execution across various devices.

Benefits of Integrating Neural Magic's DeepSparse with YOLOv8

Before diving into how to deploy YOLOV8 using DeepSparse, let's understand the benefits of using DeepSparse. Some key advantages include:

  • Повышенная скорость умозаключений: Достигает до 525 FPS (на YOLOv8n), значительно ускоряя возможности YOLOv8'inference по сравнению с традиционными методами.

Повышенная скорость умозаключений

  • Оптимизированная эффективность модели: Используй обрезку и квантование, чтобы повысить эффективность YOLOv8, уменьшить размер модели и вычислительные требования, сохранив при этом точность.

Оптимизированная эффективность модели

  • Высокая производительность на стандартных процессорах: Обеспечивает производительность, подобную GPU, на центральных процессорах, предоставляя более доступный и экономичный вариант для различных приложений.

  • Упрощенная интеграция и развертывание: Предлагает удобные инструменты для простой интеграции YOLOv8 в приложения, включая функции аннотирования изображений и видео.

  • Поддержка различных типов моделей: Совместим как со стандартными, так и с оптимизированными под разброс моделями YOLOv8 , что добавляет гибкости в развертывании.

  • Экономически эффективное и масштабируемое решение: Сокращает эксплуатационные расходы и предлагает масштабируемое развертывание передовых моделей обнаружения объектов.

Как работает технология Neural Magic'DeepSparse'?

Neural Magic's Deep Sparse technology is inspired by the human brain's efficiency in neural network computation. It adopts two key principles from the brain as follows:

  • Спарсификация: Процесс спарсификации подразумевает обрезку лишней информации из сетей глубокого обучения, что приводит к созданию более компактных и быстрых моделей без ущерба для точности. Эта техника значительно уменьшает размер сети и вычислительные потребности.

  • Locality of Reference: DeepSparse использует уникальный метод выполнения, разбивая сеть на Tensor колонки. Эти колонки выполняются в глубину, полностью помещаясь в кэш процессора. Такой подход имитирует эффективность работы мозга, минимизируя перемещение данных и максимально используя кэш процессора.

Как работает технология Neural Magic'DeepSparse

Более подробно о том, как работает технология Neural Magic'DeepSparse, читай в их блоге.

Создание разреженной версии YOLOv8 , обученной на пользовательском наборе данных

SparseZoo, репозиторий моделей с открытым исходным кодом Neural Magic, предлагает коллекцию предварительно спарсированных контрольных точек моделей YOLOv8 . С помощью SparseML, легко интегрированного с Ultralytics, пользователи могут без особых усилий настраивать эти разреженные контрольные точки на своих конкретных наборах данных с помощью простого интерфейса командной строки.

Ознакомься с документациейNeural Magic'SparseML YOLOv8 для получения более подробной информации.

Использование: Развертывание YOLOV8 с помощью DeepSparse

Развертывание YOLOv8 с помощью Neural Magic's DeepSparse включает в себя несколько простых шагов. Прежде чем погрузиться в инструкцию по использованию, обязательно ознакомься с ассортиментом моделейYOLOv8 , предлагаемых Ultralytics. Это поможет тебе выбрать наиболее подходящую модель под требования твоего проекта. Вот как ты можешь приступить к работе.

Шаг 1: Установка

Чтобы установить необходимые пакеты, выполни:

Установка

# Install the required packages
pip install deepsparse[yolov8]

Шаг 2: Экспорт YOLOv8 в формат ONNX

DeepSparse Engine требует моделей 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: Развертывание и запуск умозаключений

Получив модель YOLOv8 в формате ONNX, ты можешь развернуть и запустить выводы с помощью 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"

Выполнив команду annotate, ты обработаешь указанное изображение, обнаружишь объекты и сохранишь аннотированное изображение с ограничительными рамками и классификацией. Аннотированное изображение будет сохранено в папке annotation-results. Это поможет создать визуальное представление о возможностях модели по обнаружению объектов.

Функция аннотирования изображений

Выполнив команду eval, ты получишь на выходе подробные метрики, такие как precision, recall и mAP (mean Average Precision). Это дает полное представление о производительности твоей модели на наборе данных. Эта функциональность особенно полезна для тонкой настройки и оптимизации твоих моделей YOLOv8 для конкретных случаев использования, обеспечивая высокую точность и эффективность.

Резюме

This guide explored integrating Ultralytics' YOLOv8 with Neural Magic's DeepSparse Engine. It highlighted how this integration enhances YOLOv8's performance on CPU platforms, offering GPU-level efficiency and advanced neural network sparsity techniques.

For more detailed information and advanced usage, visit Neural Magic's DeepSparse documentation. Also, check out Neural Magic's documentation on the integration with YOLOv8 here and watch a great session on it here.

Кроме того, чтобы получить более широкое представление о различных интеграциях YOLOv8 , посети страницу руководства по интеграцииUltralytics , где ты сможешь открыть для себя ряд других интересных возможностей интеграции.



Created 2023-12-30, Updated 2024-06-02
Authors: glenn-jocher (6), abirami-vina (1)

Комментарии