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

Оптимизация умозаключений YOLOv8 с помощью Neural Magic'DeepSparse Engine

При развертывании таких моделей обнаружения объектов, как Ultralytics' YOLOv8, на различном оборудовании ты можешь столкнуться с такими уникальными проблемами, как оптимизация. Именно здесь на помощь приходит YOLOv8'интеграция с Neural Magic'DeepSparse Engine. Он меняет способ выполнения моделей YOLOv8 и обеспечивает производительность на уровне GPU непосредственно на центральных процессорах.

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

Neural Magic'DeepSparse

Neural MagicОбзор DeepSparse

Neural MagicDeepSparse - это время выполнения вычислений, предназначенное для оптимизации работы нейронных сетей на центральных процессорах. Она применяет такие передовые техники, как разреженность, обрезка и квантование, чтобы значительно снизить вычислительные требования, сохранив при этом точность. DeepSparse предлагает гибкое решение для эффективного и масштабируемого выполнения нейронных сетей на различных устройствах.

Преимущества интеграции Neural Magic'DeepSparse с YOLOv8

Прежде чем погрузиться в то, как развернуть YOLOV8 с помощью DeepSparse, давай разберемся в преимуществах использования DeepSparse. К основным преимуществам относятся:

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

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

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

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

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

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

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

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

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

Neural MagicТехнология Deep Sparse вдохновлена эффективностью человеческого мозга в вычислениях нейронных сетей. Она переняла у мозга два следующих ключевых принципа:

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

  • 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 под конкретные случаи использования, обеспечивая высокую точность и эффективность.

Резюме

В этом руководстве рассматривается интеграция Ultralytics' YOLOv8 с Neural Magic'DeepSparse Engine. В нем рассказывалось о том, как эта интеграция повышает производительность YOLOv8 на CPU-платформах, предлагая эффективность на уровне GPU и продвинутые техники разреженности нейронных сетей.

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

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



Создано 2023-12-30, Обновлено 2024-01-05
Авторы: glenn-jocher (1), abirami-vina (1)

Комментарии