Intel OpenVINO Exporter
Dans ce guide, nous abordons l'exportation des modèles YOLOv8 au format OpenVINO ce qui permet de gagner jusqu'à 3 fois plus de temps. CPU ainsi que l'accélération de l'inférence de YOLO sur le matériel de Intel GPU et NPU.
OpenVINO, abréviation de Open Visual Inference & Neural Network Optimization toolkit, est une boîte à outils complète pour l'optimisation et le déploiement de modèles d'inférence d'IA. Bien que le nom contienne Visual, OpenVINO prend également en charge diverses tâches supplémentaires, notamment le langage, l'audio, les séries temporelles, etc.
Regarde : Comment exporter et optimiser un modèle Ultralytics YOLOv8 pour l'inférence avec OpenVINO.
Exemples d'utilisation
Exporte un modèle YOLOv8n au format OpenVINO et effectue une inférence avec le modèle exporté.
Exemple
from ultralytics import YOLO
# Load a YOLOv8n PyTorch model
model = YOLO("yolov8n.pt")
# Export the model
model.export(format="openvino") # creates 'yolov8n_openvino_model/'
# Load the exported OpenVINO model
ov_model = YOLO("yolov8n_openvino_model/")
# Run inference
results = ov_model("https://ultralytics.com/images/bus.jpg")
Arguments
Clé | Valeur | Description |
---|---|---|
format |
'openvino' |
format vers lequel exporter |
imgsz |
640 |
taille de l'image sous forme de scalaire ou de liste (h, w), c'est-Ă -dire (640, 480) |
half |
False |
Quantification FP16 |
int8 |
False |
INT8 quantification |
batch |
1 |
taille du lot pour l'inférence |
dynamic |
False |
permet des tailles d'entrée dynamiques |
Avantages de la OpenVINO
- Performance: OpenVINO offre une inférence de haute performance en utilisant la puissance des CPU Intel , des GPU intégrés et discrets, et des FPGA.
- Prise en charge de l'exécution hétérogène: OpenVINO fournit une API permettant d'écrire une fois et de déployer sur n'importe quel matériel Intel pris en charge (CPU, GPU, FPGA, VPU, etc.).
- Optimiseur de modèle: OpenVINO fournit un optimiseur de modèle qui importe, convertit et optimise les modèles des frameworks d'apprentissage profond populaires tels que PyTorch, TensorFlow, TensorFlow Lite, Keras, ONNX, PaddlePaddle, et Caffe.
- Facilité d'utilisation: La boîte à outils est livrée avec plus de 80 cahiers de tutoriels (y compris YOLOv8 optimization) qui enseignent différents aspects de la boîte à outils.
OpenVINO Structure des exportations
Lorsque tu exporteras un modèle au format OpenVINO , tu obtiendras un répertoire contenant les éléments suivants :
- Fichier XML: Décrit la topologie du réseau.
- Fichier BIN: Contient les données binaires de weights and biases .
- Fichier de correspondance: Contient les correspondances entre les tenseurs de sortie du modèle original et les noms de OpenVINO tensor .
Tu peux utiliser ces fichiers pour faire de l'inférence avec le moteur d'inférence OpenVINO .
Utilisation de OpenVINO Export dans le déploiement
Une fois que tu as les fichiers OpenVINO , tu peux utiliser le Runtime OpenVINO pour exécuter le modèle. Le Runtime fournit une API unifiée pour l'inférence sur tout le matériel Intel pris en charge. Il offre également des fonctionnalités avancées telles que l'équilibrage de la charge sur le matériel Intel et l'exécution asynchrone. Pour plus d'informations sur l'exécution de l'inférence, reporte-toi au Guide de l'inférence avec OpenVINO Runtime.
N'oublie pas que tu auras besoin des fichiers XML et BIN ainsi que de tous les paramètres spécifiques à l'application comme la taille de l'entrée, le facteur d'échelle pour la normalisation, etc. pour configurer et utiliser correctement le modèle avec le Runtime.
Dans ton application de déploiement, tu ferais généralement les étapes suivantes :
- Initialise OpenVINO en créant
core = Core()
. - Charge le modèle à l'aide de la fonction
core.read_model()
méthode. - Compile le modèle à l'aide de la fonction
core.compile_model()
fonction. - Prépare l'entrée (image, texte, audio, etc.).
- Exécute l'inférence en utilisant
compiled_model(input_data)
.
Pour des étapes plus détaillées et des extraits de code, reporte-toi à la documentation deOpenVINO ou au tutoriel de l'API.
OpenVINO YOLOv8 Repères
YOLOv8 Les benchmarks ci-dessous ont été réalisés par l'équipe de Ultralytics sur 4 formats de modèles différents, mesurant la vitesse et la précision : PyTorch, TorchScript, ONNX et OpenVINO. Les tests ont été effectués sur les GPU Flex et Arc de Intel et sur les CPU Xeon de Intel en précision FP32 (avec la fonction half=False
argument).
Note
Les résultats des analyses comparatives ci-dessous sont donnés à titre de référence et peuvent varier en fonction de la configuration matérielle et logicielle exacte d'un système, ainsi que de la charge de travail actuelle du système au moment où les analyses comparatives sont effectuées.
Tous les points de repère sont exécutés avec openvino
Python version du paquet 2023.0.1.
Intel Flex GPU
La série Intel® Data Center GPU Flex est une solution polyvalente et robuste conçue pour le cloud visuel intelligent. Ce GPU prend en charge un large éventail de charges de travail, notamment le streaming multimédia, le cloud gaming, l'inférence visuelle de l'IA et les charges de travail de l'infrastructure de bureau virtuel. Il se distingue par son architecture ouverte et sa prise en charge intégrée de l'encodage AV1, offrant ainsi une pile logicielle basée sur des normes pour des applications hautes performances et inter-architectures. La série Flex GPU est optimisée pour la densité et la qualité, offrant une fiabilité, une disponibilité et une évolutivité élevées.
Les tests ci-dessous sont effectués sur Intel® Data Center GPU Flex 170 avec une précision FP32.
Modèle | Format | Statut | Taille (MB) | mAP50-95(B) | Temps d'inférence (ms/im) |
---|---|---|---|---|---|
YOLOv8n | PyTorch | âś… | 6.2 | 0.3709 | 21.79 |
YOLOv8n | TorchScript | âś… | 12.4 | 0.3704 | 23.24 |
YOLOv8n | ONNX | âś… | 12.2 | 0.3704 | 37.22 |
YOLOv8n | OpenVINO | âś… | 12.3 | 0.3703 | 3.29 |
YOLOv8s | PyTorch | âś… | 21.5 | 0.4471 | 31.89 |
YOLOv8s | TorchScript | âś… | 42.9 | 0.4472 | 32.71 |
YOLOv8s | ONNX | âś… | 42.8 | 0.4472 | 43.42 |
YOLOv8s | OpenVINO | âś… | 42.9 | 0.4470 | 3.92 |
YOLOv8m | PyTorch | âś… | 49.7 | 0.5013 | 50.75 |
YOLOv8m | TorchScript | âś… | 99.2 | 0.4999 | 47.90 |
YOLOv8m | ONNX | âś… | 99.0 | 0.4999 | 63.16 |
YOLOv8m | OpenVINO | âś… | 49.8 | 0.4997 | 7.11 |
YOLOv8l | PyTorch | âś… | 83.7 | 0.5293 | 77.45 |
YOLOv8l | TorchScript | âś… | 167.2 | 0.5268 | 85.71 |
YOLOv8l | ONNX | âś… | 166.8 | 0.5268 | 88.94 |
YOLOv8l | OpenVINO | âś… | 167.0 | 0.5264 | 9.37 |
YOLOv8x | PyTorch | âś… | 130.5 | 0.5404 | 100.09 |
YOLOv8x | TorchScript | âś… | 260.7 | 0.5371 | 114.64 |
YOLOv8x | ONNX | âś… | 260.4 | 0.5371 | 110.32 |
YOLOv8x | OpenVINO | âś… | 260.6 | 0.5367 | 15.02 |
Ce tableau représente les résultats du benchmark pour cinq modèles différents (YOLOv8n, YOLOv8s, YOLOv8m, YOLOv8l, YOLOv8x) sur quatre formats différents (PyTorch, TorchScript, ONNX, OpenVINO), nous donnant le statut, la taille, la métrique mAP50-95(B), et le temps d'inférence pour chaque combinaison.
Intel Arc GPU
Intel® Arc™ représente l'incursion de Intel'sur le marché des ordinateurs dédiés GPU . La série Arc™, conçue pour concurrencer les principaux fabricants de GPU comme AMD et Nvidia, s'adresse aussi bien au marché des ordinateurs portables qu'à celui des ordinateurs de bureau. La série comprend des versions mobiles pour les appareils compacts comme les ordinateurs portables, et des versions plus grandes et plus puissantes pour les ordinateurs de bureau.
La série Arc™ est divisée en trois catégories : Arc™ 3, Arc™ 5 et Arc™ 7, chaque numéro indiquant le niveau de performance. Chaque catégorie comprend plusieurs modèles, et le 'M' dans le nom du modèle GPU signifie une variante mobile et intégrée.
Les premières critiques ont fait l'éloge de la série Arc™, en particulier de l'A770M intégré GPU, pour ses performances graphiques impressionnantes. La disponibilité de la série Arc™ varie selon les régions, et d'autres modèles devraient bientôt voir le jour. Les GPU Intel® Arc™ offrent des solutions très performantes pour toute une série de besoins informatiques, du jeu à la création de contenu.
Les tests ci-dessous sont effectués sur Intel® Arc 770 GPU à la précision FP32.
Modèle | Format | Statut | Taille (MB) | métriques/mAP50-95(B) | Temps d'inférence (ms/im) |
---|---|---|---|---|---|
YOLOv8n | PyTorch | âś… | 6.2 | 0.3709 | 88.79 |
YOLOv8n | TorchScript | âś… | 12.4 | 0.3704 | 102.66 |
YOLOv8n | ONNX | âś… | 12.2 | 0.3704 | 57.98 |
YOLOv8n | OpenVINO | âś… | 12.3 | 0.3703 | 8.52 |
YOLOv8s | PyTorch | âś… | 21.5 | 0.4471 | 189.83 |
YOLOv8s | TorchScript | âś… | 42.9 | 0.4472 | 227.58 |
YOLOv8s | ONNX | âś… | 42.7 | 0.4472 | 142.03 |
YOLOv8s | OpenVINO | âś… | 42.9 | 0.4469 | 9.19 |
YOLOv8m | PyTorch | âś… | 49.7 | 0.5013 | 411.64 |
YOLOv8m | TorchScript | âś… | 99.2 | 0.4999 | 517.12 |
YOLOv8m | ONNX | âś… | 98.9 | 0.4999 | 298.68 |
YOLOv8m | OpenVINO | âś… | 99.1 | 0.4996 | 12.55 |
YOLOv8l | PyTorch | âś… | 83.7 | 0.5293 | 725.73 |
YOLOv8l | TorchScript | âś… | 167.1 | 0.5268 | 892.83 |
YOLOv8l | ONNX | âś… | 166.8 | 0.5268 | 576.11 |
YOLOv8l | OpenVINO | âś… | 167.0 | 0.5262 | 17.62 |
YOLOv8x | PyTorch | âś… | 130.5 | 0.5404 | 988.92 |
YOLOv8x | TorchScript | âś… | 260.7 | 0.5371 | 1186.42 |
YOLOv8x | ONNX | âś… | 260.4 | 0.5371 | 768.90 |
YOLOv8x | OpenVINO | âś… | 260.6 | 0.5367 | 19 |
Intel Xeon CPU
Le processeur Intel® Xeon® CPU est un processeur haute performance de niveau serveur conçu pour les charges de travail complexes et exigeantes. Du cloud computing et de la virtualisation haut de gamme aux applications d'intelligence artificielle et d'apprentissage automatique, les processeurs Xeon® offrent la puissance, la fiabilité et la flexibilité nécessaires aux centres de données d'aujourd'hui.
Notamment, les CPU Xeon® offrent une densité de calcul et une évolutivité élevées, ce qui les rend idéales pour les petites entreprises comme pour les grandes. En choisissant les CPU Intel® Xeon®, les entreprises peuvent gérer en toute confiance leurs tâches informatiques les plus exigeantes et favoriser l'innovation tout en maintenant la rentabilité et l'efficacité opérationnelle.
Les tests ci-dessous sont effectués sur des ordinateurs Intel® Xeon® Scalable de 4e génération CPU avec une précision FP32.
Modèle | Format | Statut | Taille (MB) | métriques/mAP50-95(B) | Temps d'inférence (ms/im) |
---|---|---|---|---|---|
YOLOv8n | PyTorch | âś… | 6.2 | 0.3709 | 24.36 |
YOLOv8n | TorchScript | âś… | 12.4 | 0.3704 | 23.93 |
YOLOv8n | ONNX | âś… | 12.2 | 0.3704 | 39.86 |
YOLOv8n | OpenVINO | âś… | 12.3 | 0.3704 | 11.34 |
YOLOv8s | PyTorch | âś… | 21.5 | 0.4471 | 33.77 |
YOLOv8s | TorchScript | âś… | 42.9 | 0.4472 | 34.84 |
YOLOv8s | ONNX | âś… | 42.8 | 0.4472 | 43.23 |
YOLOv8s | OpenVINO | âś… | 42.9 | 0.4471 | 13.86 |
YOLOv8m | PyTorch | âś… | 49.7 | 0.5013 | 53.91 |
YOLOv8m | TorchScript | âś… | 99.2 | 0.4999 | 53.51 |
YOLOv8m | ONNX | âś… | 99.0 | 0.4999 | 64.16 |
YOLOv8m | OpenVINO | âś… | 99.1 | 0.4996 | 28.79 |
YOLOv8l | PyTorch | âś… | 83.7 | 0.5293 | 75.78 |
YOLOv8l | TorchScript | âś… | 167.2 | 0.5268 | 79.13 |
YOLOv8l | ONNX | âś… | 166.8 | 0.5268 | 88.45 |
YOLOv8l | OpenVINO | âś… | 167.0 | 0.5263 | 56.23 |
YOLOv8x | PyTorch | âś… | 130.5 | 0.5404 | 96.60 |
YOLOv8x | TorchScript | âś… | 260.7 | 0.5371 | 114.28 |
YOLOv8x | ONNX | âś… | 260.4 | 0.5371 | 111.02 |
YOLOv8x | OpenVINO | âś… | 260.6 | 0.5371 | 83.28 |
Intel Noyau CPU
La série Intel® Core® est une gamme de processeurs haute performance de Intel. La gamme comprend le Core i3 (entrée de gamme), le Core i5 (milieu de gamme), le Core i7 (haut de gamme) et le Core i9 (performances extrêmes). Chaque série répond à différents besoins informatiques et budgets, des tâches quotidiennes aux charges de travail professionnelles exigeantes. À chaque nouvelle génération, des améliorations sont apportées aux performances, à l'efficacité énergétique et aux fonctionnalités.
Les tests ci-dessous sont effectués sur des ordinateurs Intel® Core® i7-13700H de 13e génération CPU avec une précision FP32.
Modèle | Format | Statut | Taille (MB) | métriques/mAP50-95(B) | Temps d'inférence (ms/im) |
---|---|---|---|---|---|
YOLOv8n | PyTorch | âś… | 6.2 | 0.4478 | 104.61 |
YOLOv8n | TorchScript | âś… | 12.4 | 0.4525 | 112.39 |
YOLOv8n | ONNX | âś… | 12.2 | 0.4525 | 28.02 |
YOLOv8n | OpenVINO | âś… | 12.3 | 0.4504 | 23.53 |
YOLOv8s | PyTorch | âś… | 21.5 | 0.5885 | 194.83 |
YOLOv8s | TorchScript | âś… | 43.0 | 0.5962 | 202.01 |
YOLOv8s | ONNX | âś… | 42.8 | 0.5962 | 65.74 |
YOLOv8s | OpenVINO | âś… | 42.9 | 0.5966 | 38.66 |
YOLOv8m | PyTorch | âś… | 49.7 | 0.6101 | 355.23 |
YOLOv8m | TorchScript | âś… | 99.2 | 0.6120 | 424.78 |
YOLOv8m | ONNX | âś… | 99.0 | 0.6120 | 173.39 |
YOLOv8m | OpenVINO | âś… | 99.1 | 0.6091 | 69.80 |
YOLOv8l | PyTorch | âś… | 83.7 | 0.6591 | 593.00 |
YOLOv8l | TorchScript | âś… | 167.2 | 0.6580 | 697.54 |
YOLOv8l | ONNX | âś… | 166.8 | 0.6580 | 342.15 |
YOLOv8l | OpenVINO | âś… | 167.0 | 0.0708 | 117.69 |
YOLOv8x | PyTorch | âś… | 130.5 | 0.6651 | 804.65 |
YOLOv8x | TorchScript | âś… | 260.8 | 0.6650 | 921.46 |
YOLOv8x | ONNX | âś… | 260.4 | 0.6650 | 526.66 |
YOLOv8x | OpenVINO | âś… | 260.6 | 0.6619 | 158.73 |
Reproduis nos résultats
Pour reproduire les repères Ultralytics ci-dessus sur tous les formats d' exportation, exécute ce code :
Exemple
Note que les résultats des analyses comparatives peuvent varier en fonction de la configuration matérielle et logicielle exacte d'un système, ainsi que de la charge de travail actuelle du système au moment de l'exécution des analyses comparatives. Pour obtenir les résultats les plus fiables, utilise un ensemble de données contenant un grand nombre d'images, c'est-à -dire data='coco128.yaml' (128 val images), or
data='coco.yaml'` (5000 val images).
Conclusion
Les résultats de l'analyse comparative démontrent clairement les avantages de l'exportation du modèle YOLOv8 vers le format OpenVINO . Parmi les différents modèles et plates-formes matérielles, le format OpenVINO est toujours plus performant que les autres formats en termes de vitesse d'inférence, tout en conservant une précision comparable.
Pour la série Intel® Data Center GPU Flex, le format OpenVINO a permis d'obtenir des vitesses d'inférence presque 10 fois plus rapides que le format original PyTorch . Sur le Xeon CPU, le format OpenVINO était deux fois plus rapide que le format PyTorch . La précision des modèles est restée pratiquement identique entre les différents formats.
Les benchmarks soulignent l'efficacité de OpenVINO en tant qu'outil de déploiement de modèles d'apprentissage profond. En convertissant les modèles au format OpenVINO , les développeurs peuvent obtenir des améliorations significatives des performances, ce qui facilite le déploiement de ces modèles dans des applications réelles.
Pour obtenir des informations et des instructions plus détaillées sur l'utilisation de OpenVINO, reporte-toi à la documentation officielle de OpenVINO .
FAQ
Comment exporter les modèles YOLOv8 au format OpenVINO ?
L'exportation des modèles YOLOv8 au format OpenVINO peut considérablement améliorer la vitesse de CPU et permettre GPU et les accélérations NPU sur le matériel Intel . Pour exporter, tu peux utiliser Python ou CLI comme indiqué ci-dessous :
Exemple
Pour plus d'informations, reporte-toi Ă la documentation sur les formats d'exportation.
Quels sont les avantages de l'utilisation de OpenVINO avec les modèles YOLOv8 ?
L'utilisation de la boîte à outils Intel's OpenVINO avec les modèles YOLOv8 offre plusieurs avantages :
- Performance: Accélère jusqu'à 3 fois l'inférence sur CPU et tire parti des GPU et NPU Intel pour l'accélération.
- Optimiseur de modèle: Convertir, optimiser et exécuter des modèles à partir de cadres populaires tels que PyTorch, TensorFlow, et ONNX.
- Facilité d'utilisation: Plus de 80 cahiers de tutoriels sont disponibles pour aider les utilisateurs à démarrer, y compris des cahiers pour YOLOv8.
- Exécution hétérogène: Déploie des modèles sur différents matériels Intel avec une API unifiée.
Pour des comparaisons de performances détaillées, visite notre section de benchmarks.
Comment puis-je effectuer une inférence à l'aide d'un modèle YOLOv8 exporté vers OpenVINO?
Après avoir exporté un modèle YOLOv8 au format OpenVINO , tu peux effectuer une inférence à l'aide de Python ou CLI:
Exemple
Reporte-toi à notre documentation sur le mode prédictif pour plus de détails.
Pourquoi devrais-je choisir Ultralytics YOLOv8 plutôt que d'autres modèles pour l'exportation OpenVINO ?
Ultralytics YOLOv8 est optimisé pour la détection d'objets en temps réel avec une grande précision et une grande rapidité. Plus précisément, lorsqu'il est associé à OpenVINO, YOLOv8 offre :
- Jusqu'Ă 3 fois plus rapide sur Intel CPUs
- DĂ©ploiement transparent sur Intel GPU et NPU
- Précision cohérente et comparable entre les différents formats d'exportation.
Pour une analyse approfondie des performances, consulte nos benchmarks détaillés deYOLOv8 sur différents matériels.
Puis-je comparer les modèles YOLOv8 sur différents formats tels que PyTorch, ONNX, et OpenVINO?
Oui, tu peux comparer les modèles YOLOv8 dans différents formats, notamment PyTorch, TorchScript, ONNX, et OpenVINO. Utilise l'extrait de code suivant pour effectuer des analyses comparatives sur l'ensemble de données que tu as choisi :
Exemple
Pour les résultats détaillés des tests de performance, reporte-toi à notre section sur les tests de performance et à la documentation sur les formats d'exportation.