Sony IMX500 Export pour Ultralytics YOLOv8
Ce guide couvre l'exportation et le déploiement des modèles Ultralytics YOLOv8 vers les caméras Raspberry Pi AI dotées du capteur Sony IMX500.
Le déploiement de modèles de vision par ordinateur sur des appareils dotés d'une puissance de calcul limitée, tels que la Raspberry Pi AI Camera, peut s'avérer délicat. L'utilisation d'un format de modèle optimisé pour des performances plus rapides fait une énorme différence.
Le modèle IMX500 est conçu pour consommer un minimum d'énergie tout en offrant des performances rapides pour les réseaux neuronaux. Il vous permet d'optimiser vos Ultralytics YOLOv8 modèles pour l'inférence à grande vitesse et à faible consommation d'énergie. Dans ce guide, nous vous aiderons à exporter et à déployer vos modèles au format IMX500, tout en facilitant les performances de vos modèles sur la caméra Raspberry Pi AI.
Pourquoi exporter vers IMX500
Le capteur de vision intelligent IMX500 de Sony est un matériel qui change la donne en matière de traitement de l'intelligence artificielle. Il s'agit du premier capteur de vision intelligent au monde doté de capacités d'IA sur puce. Ce capteur permet de relever de nombreux défis dans le domaine de l'IA périphérique, notamment les goulets d'étranglement dans le traitement des données, les problèmes de confidentialité et les limites de performance.
Alors que les autres capteurs se contentent de transmettre des images et des trames, l'IMX500 raconte toute une histoire. Il traite les données directement sur le capteur, ce qui permet aux appareils de générer des informations en temps réel.
Exportation de l'IMX500 de Sony pour les modèles YOLOv8
L'IMX500 est conçu pour transformer la façon dont les appareils traitent les données directement sur le capteur, sans avoir à les envoyer dans le nuage pour traitement.
L'IMX500 fonctionne avec des modèles quantifiés. La quantification rend les modèles plus petits et plus rapides sans perdre beaucoup de précision. Elle est idéale pour les ressources limitées de l'informatique en périphérie, car elle permet aux applications de réagir rapidement en réduisant la latence et en permettant un traitement rapide des données au niveau local, sans dépendance à l'égard du cloud. Le traitement local permet également de préserver la confidentialité et la sécurité des données des utilisateurs puisqu'elles ne sont pas envoyées à un serveur distant.
IMX500 Caractéristiques principales :
- Sortie des métadonnées : Au lieu de transmettre uniquement des images, l'IMX500 peut transmettre à la fois des images et des métadonnées (résultat de l'inférence), et peut transmettre uniquement des métadonnées pour minimiser la taille des données, réduire la bande passante et diminuer les coûts.
- Réponse aux préoccupations en matière de protection de la vie privée : En traitant les données sur l'appareil, l'IMX500 répond aux préoccupations en matière de confidentialité, ce qui est idéal pour les applications centrées sur l'homme telles que le comptage de personnes et le suivi de l'occupation.
- Traitement en temps réel : Le traitement rapide sur le capteur permet de prendre des décisions en temps réel, ce qui est parfait pour les applications d'IA de pointe telles que les systèmes autonomes.
Avant de commencer : Pour obtenir les meilleurs résultats, assurez-vous que votre modèle YOLOv8 est bien préparé pour l'exportation en suivant notre Guide de formation au modèle, notre Guide de préparation des données et notre Guide de réglage des hyperparamètres.
Exemples d'utilisation
Exporter un modèle Ultralytics YOLOv8 au format IMX500 et exécuter l'inférence avec le modèle exporté.
Note
Ici, nous effectuons une inférence pour nous assurer que le modèle fonctionne comme prévu. Cependant, pour le déploiement et l'inférence sur la caméra Raspberry Pi AI, veuillez passer à l'utilisation de l'exportation IMX500 dans la section Déploiement.
Exemple
from ultralytics import YOLO
# Load a YOLOv8n PyTorch model
model = YOLO("yolov8n.pt")
# Export the model
model.export(format="imx") # exports with PTQ quantization by default
# Load the exported model
imx_model = YOLO("yolov8n_imx_model")
# Run inference
results = imx_model("https://ultralytics.com/images/bus.jpg")
Le processus d'exportation créera un modèle ONNX pour la validation de la quantification, ainsi qu'un répertoire nommé <model-name>_imx_model
. Ce répertoire comprendra le fichier packerOut.zip
qui est essentiel pour emballer le modèle en vue de son déploiement sur le matériel IMX500. En outre, le fichier <model-name>_imx_model
contiendra un fichier texte (labels.txt
) énumérant toutes les étiquettes associées au modèle.
yolov8n_imx_model
├── dnnParams.xml
├── labels.txt
├── packerOut.zip
├── yolov8n_imx.onnx
├── yolov8n_imx500_model_MemoryReport.json
└── yolov8n_imx500_model.pbtxt
Arguments
Lors de l'exportation d'un modèle au format IMX500, vous pouvez spécifier différents arguments :
Clé | Valeur | Description |
---|---|---|
format |
imx |
Format d'exportation (imx) |
int8 |
True |
Activer la quantification INT8 pour le modèle (par défaut : True ) |
imgsz |
640 |
Taille de l'image pour l'entrée du modèle (par défaut : 640 ) |
Utilisation de l'exportation IMX500 dans le cadre d'un déploiement
Après avoir exporté le modèle Ultralytics YOLOv8n au format IMX500, il peut être déployé sur la caméra Raspberry Pi AI pour l'inférence.
Conditions préalables relatives au matériel
Assurez-vous que vous disposez du matériel ci-dessous :
- Raspberry Pi 5 ou Raspberry Pi 4 Model B
- Caméra IA Raspberry Pi
Connectez la caméra Raspberry Pi AI au connecteur MIPI CSI à 15 broches du Raspberry Pi et mettez le Raspberry Pi sous tension.
Prérequis du logiciel
Note
Ce guide a été testé avec Raspberry Pi OS Bookworm fonctionnant sur un Raspberry Pi 5.
Étape 1 : Ouvrez une fenêtre de terminal et exécutez les commandes suivantes pour mettre à jour le logiciel du Raspberry Pi à la dernière version.
Étape 2 : Installer le micrologiciel IMX500, qui est nécessaire pour faire fonctionner le capteur IMX500, ainsi qu'un outil de conditionnement.
Étape 3 : Installation des conditions préalables à l'exécution picamera2
(application). Nous utiliserons cette application ultérieurement pour le processus de déploiement.
Étape 4 : Redémarrer le Raspberry Pi pour que les modifications soient prises en compte
Modèle de paquetage et déploiement sur la caméra d'IA
Après avoir obtenu packerOut.zip
du processus de conversion IMX500, vous pouvez passer ce fichier dans l'outil packager pour obtenir un fichier RPK. Ce fichier peut ensuite être déployé directement sur la caméra AI à l'aide de l'outil picamera2
.
Étape 1 : Transformation du modèle en fichier RPK
L'opération ci-dessus génère un network.rpk
dans le dossier de sortie spécifié.
Étape 2 : Clonage picamera2
l'installer et naviguer vers les exemples imx500
git clone -b next https://github.com/raspberrypi/picamera2
cd picamera2
pip install -e . --break-system-packages
cd examples/imx500
Étape 3 : Exécutez la détection d'objets sur YOLOv8 , en utilisant le fichier labels.txt qui a été généré lors de l'exportation IMX500.
python imx500_object_detection_demo.py --model <path to network.rpk> --fps 25 --bbox-normalization --ignore-dash-labels --bbox-order xy --labels <path to labels.txt>
Vous pourrez alors voir les résultats de l'inférence en direct comme suit
Critères de référence
YOLOv8 Les benchmarks ci-dessous ont été réalisés par l'équipe de Ultralytics sur Raspberry Pi AI Camera avec imx
format de modèle vitesse de mesure et précision.
Modèle | Format | Statut | Taille (MB) | mAP50-95(B) | Temps d'inférence (ms/im) |
---|---|---|---|---|---|
YOLOv8n | imx | âś… | 2.9 | 0.522 | 66.66 |
Note
La validation du benchmark ci-dessus a été effectuée à l'aide de l'ensemble de données coco8
Qu'y a-t-il sous le capot ?
Kit d'outils de compression de modèles (MCT) de Sony
Le Model Compression Toolkit (MCT) de Sony est un outil puissant qui permet d'optimiser les modèles d'apprentissage profond par la quantification et l'élagage. Il prend en charge diverses méthodes de quantification et fournit des algorithmes avancés pour réduire la taille du modèle et la complexité de calcul sans sacrifier significativement la précision. MCT est particulièrement utile pour déployer des modèles sur des appareils à ressources limitées, en garantissant une inférence efficace et une latence réduite.
Caractéristiques prises en charge par le MCT
Le MCT de Sony offre une gamme de fonctions conçues pour optimiser les modèles de réseaux neuronaux :
- Optimisations graphiques: Transforme les modèles en versions plus efficaces en repliant les couches telles que la normalisation des lots dans les couches précédentes.
- Recherche de paramètres de quantification: Minimise le bruit de quantification à l'aide de mesures telles que l'erreur quadratique moyenne, l'absence d'écrêtage et l'erreur moyenne.
- Algorithmes de quantification avancés:
- Correction du décalage négatif: Résout les problèmes de performance liés à la quantification de l'activation symétrique.
- Filtrage des valeurs aberrantes: Utilise le score z pour détecter et supprimer les valeurs aberrantes.
- Regroupement: Utilise des grilles de quantification non uniformes pour une meilleure correspondance des distributions.
- Recherche en précision mixte: Attribue différentes largeurs de bits de quantification par couche en fonction de la sensibilité.
- Visualisation: Utilisez TensorBoard pour observer les performances du modèle, les phases de quantification et les configurations de la largeur de bits.
Quantification
MCT prend en charge plusieurs méthodes de quantification afin de réduire la taille du modèle et d'améliorer la vitesse d'inférence :
- Quantification post-entraînement (PTQ):
- Disponible via les API Keras et PyTorch .
- Complexité : Faible
- Coût de calcul : Faible (CPU minutes)
- Quantification post-entraînement basée sur le gradient (GPTQ):
- Disponible via les API Keras et PyTorch .
- Complexité : Moyenne
- Coût de calcul : Modéré (2-3 GPU heures)
- Formation consciente de la quantification (QAT):
- Complexité : élevée
- Coût de calcul : élevé (12-36 GPU heures)
MCT prend également en charge différents schémas de quantification pour les poids et les activations :
- Puissance deux (adaptée au matériel)
- Symétrique
- Uniforme
Élagage structuré
MCT introduit un élagage de modèle structuré et adapté au matériel, conçu pour des architectures matérielles spécifiques. Cette technique exploite les capacités SIMD (Single Instruction, Multiple Data) de la plate-forme cible en élaguant les groupes SIMD. Cela permet de réduire la taille et la complexité du modèle tout en optimisant l'utilisation des canaux, en s'alignant sur l'architecture SIMD pour une utilisation ciblée des ressources de l'empreinte mémoire des poids. Disponible via les API Keras et PyTorch .
Outil de conversion IMX500 (compilateur)
L'outil de conversion IMX500 fait partie intégrante de l'ensemble d'outils IMX500, permettant la compilation de modèles pour le déploiement sur le capteur IMX500 de Sony (par exemple, les caméras IA Raspberry Pi). Cet outil facilite la transition des modèles Ultralytics YOLOv8 traités par le logiciel Ultralytics , en veillant à ce qu'ils soient compatibles et fonctionnent efficacement sur le matériel spécifié. La procédure d'exportation qui suit la quantification du modèle implique la génération de fichiers binaires qui encapsulent les données essentielles et les configurations spécifiques à l'appareil, rationalisant ainsi le processus de déploiement sur la caméra Raspberry Pi AI.
Cas d'utilisation dans le monde réel
L'exportation au format IMX500 est largement applicable dans tous les secteurs d'activité. En voici quelques exemples :
- Edge AI et IoT: Permettre la détection d'objets sur les drones ou les caméras de sécurité, où le traitement en temps réel sur des appareils à faible consommation est essentiel.
- Appareils portables: Déployer des modèles optimisés pour le traitement de l'IA à petite échelle sur des dispositifs portables de surveillance de la santé.
- Villes intelligentes: Utilisez les modèles YOLOv8 exportés par IMX500 pour la surveillance du trafic et l'analyse de la sécurité avec un traitement plus rapide et une latence minimale.
- Analyse de la vente au détail: Améliorer la surveillance en magasin en déployant des modèles optimisés dans les systèmes de points de vente ou les étagères intelligentes.
Conclusion
L'exportation des modèles Ultralytics YOLOv8 vers le format IMX500 de Sony vous permet de déployer vos modèles pour une inférence efficace sur les caméras IMX500. En exploitant des techniques de quantification avancées, vous pouvez réduire la taille des modèles et améliorer la vitesse d'inférence sans compromettre la précision de manière significative.
Pour plus d'informations et des directives détaillées, consultez le site web IMX500 de Sony.
FAQ
Comment exporter un modèle YOLOv8 au format IMX500 pour la caméra Raspberry Pi AI ?
Pour exporter un modèle YOLOv8 au format IMX500, utilisez l'API Python ou la commande CLI :
from ultralytics import YOLO
model = YOLO("yolov8n.pt")
model.export(format="imx") # Exports with PTQ quantization by default
Le processus d'exportation créera un répertoire contenant les fichiers nécessaires au déploiement, notamment packerOut.zip
qui peut être utilisé avec l'outil IMX500 packager sur Raspberry Pi.
Quels sont les principaux avantages de l'utilisation du format IMX500 pour le déploiement de l'IA périphérique ?
Le format IMX500 offre plusieurs avantages importants pour le déploiement en périphérie :
- Le traitement de l'IA sur la puce réduit la latence et la consommation d'énergie
- Produit à la fois l'image et les métadonnées (résultat de l'inférence) au lieu de l'image seule
- Amélioration de la protection de la vie privée grâce au traitement local des données sans dépendance à l'égard de l'informatique dématérialisée
- Capacités de traitement en temps réel idéales pour les applications sensibles au facteur temps
- Quantification optimisée pour un déploiement efficace de modèles sur des appareils à ressources limitées
Quelles sont les conditions matérielles et logicielles requises pour le déploiement d'IMX500 ?
Pour déployer les modèles IMX500, vous aurez besoin des éléments suivants :
Matériel :
- Raspberry Pi 5 ou Raspberry Pi 4 Model B
- Caméra IA Raspberry Pi avec capteur IMX500
Logiciel :
- Livre sur l'OS du Raspberry Pi
- Micrologiciel et outils IMX500 (
sudo apt install imx500-all imx500-tools
) - Python paquets pour
picamera2
(sudo apt install python3-opencv python3-munkres
)
Quelles performances puis-je attendre des modèles YOLOv8 sur l'IMX500 ?
Basé sur Ultralytics benchmarks sur Raspberry Pi AI Camera :
- YOLOv8n atteint un temps d'inférence de 66,66 ms par image
- mAP50-95 de 0,522 sur l'ensemble de données COCO8
- Taille du modèle de seulement 2,9 Mo après quantification
Cela démontre que le format IMX500 permet une inférence efficace en temps réel tout en conservant une bonne précision pour les applications d'intelligence artificielle.
Comment emballer et déployer mon modèle exporté vers la caméra d'IA du Raspberry Pi ?
Après l'exportation au format IMX500 :
-
Utilisez l'outil d'empaquetage pour créer un fichier RPK :
-
Clonez et installez picamera2 :
-
Lancer l'inférence à l'aide du fichier RPK généré :