Skip to content

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.

Ce guide te montre comment déployer YOLOv8 à l'aide de Neural Magic's DeepSparse, comment exécuter des inférences, et aussi comment évaluer les performances pour s'assurer qu'elles sont optimisées.

Neural MagicDeepSparse de

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:

  • Vitesse d'infĂ©rence amĂ©liorĂ©e: Atteint jusqu'Ă  525 FPS (sur YOLOv8n), ce qui accĂ©lère considĂ©rablement les capacitĂ©s d'infĂ©rence de YOLOv8 par rapport aux mĂ©thodes traditionnelles.

Vitesse d'inférence améliorée

  • Optimisation de l'efficacitĂ© du modèle: Utilise l'Ă©lagage et la quantification pour amĂ©liorer l'efficacitĂ© de YOLOv8, en rĂ©duisant la taille du modèle et les besoins de calcul tout en maintenant la prĂ©cision.

Efficacité du modèle optimisé

  • Haute performance sur les unitĂ©s centrales standard: Offre des performances comparables Ă  celles d'un GPU sur des unitĂ©s centrales, ce qui constitue une option plus accessible et plus rentable pour diverses applications.

  • IntĂ©gration et dĂ©ploiement simplifiĂ©s: Offre des outils conviviaux pour faciliter l'intĂ©gration de YOLOv8 dans les applications, y compris des fonctions d'annotation d'images et de vidĂ©os.

  • Prise en charge de divers types de modèles: Compatible avec les modèles YOLOv8 standard et optimisĂ©s en termes d'espace, ce qui ajoute Ă  la flexibilitĂ© du dĂ©ploiement.

  • Solution rentable et Ă©volutive: RĂ©duit les dĂ©penses opĂ©rationnelles et offre un dĂ©ploiement Ă©volutif des modèles de dĂ©tection d'objets avancĂ©s.

Comment fonctionne la technologie DeepSparse de Neural Magic?

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:

  • SparsitĂ©: Le processus de sparsification consiste Ă  Ă©laguer les informations redondantes des rĂ©seaux d'apprentissage profond, ce qui permet d'obtenir des modèles plus petits et plus rapides sans compromettre la prĂ©cision. Cette technique permet de rĂ©duire considĂ©rablement la taille du rĂ©seau et les besoins en calcul.

  • LocalitĂ© de rĂ©fĂ©rence: DeepSparse utilise une mĂ©thode d'exĂ©cution unique, en divisant le rĂ©seau en Tensor Columns. Ces colonnes sont exĂ©cutĂ©es en profondeur et s'insèrent entièrement dans la mĂ©moire cache de l'unitĂ© centrale. Cette approche imite l'efficacitĂ© du cerveau, en minimisant le mouvement des donnĂ©es et en maximisant l'utilisation de la mĂ©moire cache de l'unitĂ© centrale.

Comment fonctionne la technologie DeepSparse de Neural Magic?

Pour plus de détails sur le fonctionnement de la technologie DeepSparse de Neural Magic, consulte leur article de blog.

Création d'une version éparse de YOLOv8 entraînée sur un ensemble de données personnalisé

SparseZoo, un dépôt de modèles open-source de Neural Magic, offre une collection de points de contrôle de modèles YOLOv8 pré-sparsifiés. Avec SparseML, parfaitement intégré à Ultralytics, les utilisateurs peuvent affiner sans effort ces points de contrôle épars sur leurs ensembles de données spécifiques à l'aide d'une interface de ligne de commande simple.

Consulte la documentation SparseML YOLOv8 deNeural Magic pour plus de détails.

Utilisation : DĂ©ploiement de YOLOV8 Ă  l'aide de DeepSparse

Le déploiement de YOLOv8 avec Neural Magic's DeepSparse comporte quelques étapes simples. Avant de te plonger dans les instructions d'utilisation, n'oublie pas de jeter un coup d'œil à la gamme de modèlesYOLOv8 proposés par Ultralytics. Cela t'aidera à choisir le modèle le plus approprié aux exigences de ton projet. Voici comment tu peux commencer.

Étape 1 : Installation

Pour installer les paquets nécessaires, exécute :

Installation

# Install the required packages
pip install deepsparse[yolov8]

Étape 2 : Exporter YOLOv8 au format ONNX

DeepSparse Engine requiert les modèles YOLOv8 au format ONNX . L'exportation de ton modèle dans ce format est essentielle pour la compatibilité avec DeepSparse. Utilise la commande suivante pour exporter les modèles YOLOv8 :

Modèle Export

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

Cette commande permet d'enregistrer le yolov8n.onnx modèle sur ton disque.

Étape 3 : Déploiement et exécution des inférences

Avec ton modèle YOLOv8 au format ONNX , tu peux déployer et exécuter des inférences à l'aide de DeepSparse. Cela peut se faire facilement grâce à l'API intuitive Python :

Déployer et exécuter les inférences

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)

Étape 4 : Analyse comparative des performances

Il est important de vérifier que ton modèle YOLOv8 fonctionne de façon optimale sur DeepSparse. Tu peux comparer les performances de ton modèle pour analyser le débit et la latence :

Benchmarking

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

Étape 5 : Fonctionnalités supplémentaires

DeepSparse offre des fonctions supplémentaires pour l'intégration pratique de YOLOv8 dans des applications, telles que l'annotation d'images et l'évaluation d'ensembles de données.

Caractéristiques supplémentaires

# 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"

En exécutant la commande annotate, tu traites l'image que tu as spécifiée, tu détectes les objets et tu enregistres l'image annotée avec les boîtes de délimitation et les classifications. L'image annotée sera stockée dans un dossier annotation-results. Cela permet de fournir une représentation visuelle des capacités de détection du modèle.

Fonction d'annotation d'image

Après avoir exécuté la commande eval, tu recevras des mesures de sortie détaillées telles que la précision, le rappel et la mAP (précision moyenne). Tu auras ainsi une vue d'ensemble des performances de ton modèle sur l'ensemble des données. Cette fonctionnalité est particulièrement utile pour affiner et optimiser tes modèles YOLOv8 pour des cas d'utilisation spécifiques, en garantissant une précision et une efficacité élevées.

Résumé

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.

De plus, pour mieux comprendre les différentes intégrations de YOLOv8 , visite la page du guide d'intégration deUltralytics , où tu pourras découvrir toute une série d'autres possibilités d'intégration passionnantes.



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

Commentaires