Sony IMX500 Export for Ultralytics YOLO11
This guide covers exporting and deploying Ultralytics YOLO11 models to Raspberry Pi AI Cameras that feature the Sony IMX500 sensor.
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.
The IMX500 model format is designed to use minimal power while delivering fast performance for neural networks. It allows you to optimize your Ultralytics YOLO11 models for high-speed and low-power inferencing. In this guide, we'll walk you through exporting and deploying your models to the IMX500 format while making it easier for your models to perform well on the Raspberry Pi AI Camera.
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.
Sony's IMX500 Export for YOLO11 Models
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.
Before You Begin: For best results, ensure your YOLO11 model is well-prepared for export by following our Model Training Guide, Data Preparation Guide, and Hyperparameter Tuning Guide.
Exemples d'utilisation
Export an Ultralytics YOLO11 model to IMX500 format and run inference with the exported model.
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 YOLO11n PyTorch model
model = YOLO("yolo11n.pt")
# Export the model
model.export(format="imx", data="coco8.yaml") # exports with PTQ quantization by default
# Load the exported model
imx_model = YOLO("yolo11n_imx_model")
# Run inference
results = imx_model("https://ultralytics.com/images/bus.jpg")
Avertissement
The Ultralytics package installs additional export dependencies at runtime. The first time you run the export command, you may need to restart your console to ensure it works correctly.
Arguments d'exportation
Argument | Type | Défaut | Description |
---|---|---|---|
format |
str |
'imx' |
Format cible pour le modèle exporté, définissant la compatibilité avec divers environnements de déploiement. |
imgsz |
int ou tuple |
640 |
Taille de l'image souhaitée pour l'entrée du modèle. Il peut s'agir d'un entier pour les images carrées ou d'un tuple (height, width) pour les dimensions spécifiques. |
int8 |
bool |
True |
Active la quantification INT8, ce qui permet de comprimer davantage le modèle et d'accélérer l'inférence avec une perte de précision minimale, principalement pour les appareils périphériques. |
data |
str |
'coco8.yaml' |
Chemin d'accès à la ensemble de données fichier de configuration (par défaut : coco8.yaml ), essentielle pour la quantification. |
fraction |
float |
1.0 |
Spécifie la fraction de l'ensemble de données à utiliser pour l'étalonnage de la quantification INT8. Permet de calibrer sur un sous-ensemble du jeu de données complet, utile pour les expériences ou lorsque les ressources sont limitées. Si elle n'est pas spécifiée lorsque la fonction INT8 est activée, le jeu de données complet sera utilisé. |
device |
str |
None |
Spécifie le dispositif à exporter : GPU (device=0 ), CPU (device=cpu ). |
Conseil
Si vous exportez sur un GPU avec support CUDA , passez l'argument device=0
pour une exportation plus rapide.
Pour plus de détails sur le processus d'exportation, consultez la page de documentationUltralytics sur l'exportation.
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.
yolo11n_imx_model
├── dnnParams.xml
├── labels.txt
├── packerOut.zip
├── yolo11n_imx.onnx
├── yolo11n_imx500_model_MemoryReport.json
└── yolo11n_imx500_model.pbtxt
Utilisation de l'exportation IMX500 dans le cadre d'un déploiement
After exporting Ultralytics YOLO11n model to IMX500 format, it can be deployed to Raspberry Pi AI Camera for inference.
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 https://github.com/raspberrypi/picamera2
cd picamera2
pip install -e . --break-system-packages
cd examples/imx500
Step 3: Run YOLO11 object detection, using the labels.txt file that has been generated during the IMX500 export.
python imx500_object_detection_demo.py --model path/to/network.rpk --fps 17 --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 and YOLO11n benchmarks below were run by the Ultralytics team on Raspberry Pi AI Camera with imx
format de modèle vitesse de mesure et précision.
Modèle | Format | Statut | Size of RPK (MB) |
mAP50-95(B) | Temps d'inférence (ms/im) |
---|---|---|---|---|---|
YOLOv8n | imx | ✅ | 3.1 | 0.602 | 58.82 |
YOLO11n | imx | ✅ | 3.2 | 0.644 | 62.50 |
Note
Validation for the above benchmark was done using coco8 dataset on a Raspberry Pi 5
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)
The IMX500 Converter Tool is integral to the IMX500 toolset, allowing the compilation of models for deployment on Sony's IMX500 sensor (for instance, Raspberry Pi AI Cameras). This tool facilitates the transition of Ultralytics YOLO11 models processed through Ultralytics software, ensuring they are compatible and perform efficiently on the specified hardware. The export procedure following model quantization involves the generation of binary files that encapsulate essential data and device-specific configurations, streamlining the deployment process on the Raspberry Pi AI Camera.
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é.
- Smart Cities: Use IMX500-exported YOLO11 models for traffic monitoring and safety analysis with faster processing and minimal latency.
- 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
Exporting Ultralytics YOLO11 models to Sony's IMX500 format allows you to deploy your models for efficient inference on IMX500-based cameras. By leveraging advanced quantization techniques, you can reduce model size and improve inference speed without significantly compromising accuracy.
Pour plus d'informations et des directives détaillées, consultez le site web IMX500 de Sony.
FAQ
How do I export a YOLO11 model to IMX500 format for Raspberry Pi AI Camera?
To export a YOLO11 model to IMX500 format, use either the Python API or CLI command:
from ultralytics import YOLO
model = YOLO("yolo11n.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
)
What performance can I expect from YOLO11 models on the IMX500?
Basé sur Ultralytics benchmarks sur Raspberry Pi AI Camera :
- YOLO11n achieves 58.82ms inference time per 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é :