Skip to content

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.

Caméra IA Raspberry Pi

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")
# Export a YOLO11n PyTorch model to imx format with Post-Training Quantization (PTQ)
yolo export model=yolo11n.pt format=imx data=coco8.yaml

# Run inference with the exported model
yolo predict model=yolo11n_imx_model source='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 :

  1. Raspberry Pi 5 ou Raspberry Pi 4 Model B
  2. 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.

sudo apt update && sudo apt full-upgrade

Étape 2 : Installer le micrologiciel IMX500, qui est nécessaire pour faire fonctionner le capteur IMX500, ainsi qu'un outil de conditionnement.

sudo apt install imx500-all imx500-tools

Étape 3 : Installation des conditions préalables à l'exécution picamera2 (application). Nous utiliserons cette application ultérieurement pour le processus de déploiement.

sudo apt install python3-opencv python3-munkres

Étape 4 : Redémarrer le Raspberry Pi pour que les modifications soient prises en compte

sudo reboot

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

imx500-package -i path/to/packerOut.zip -o path/to/output/folder

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

Inférence sur la caméra IA du Raspberry Pi

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 ?

Déploiement de l'IMX500

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 :

  1. 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.
  2. 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.
  3. 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é.
  4. 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 :

  1. Quantification post-entraînement (PTQ):
    • Disponible via les API Keras et PyTorch .
    • Complexité : Faible
    • Coût de calcul : Faible (CPU minutes)
  2. 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)
  3. 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 :

  1. Puissance deux (adaptée au matériel)
  2. Symétrique
  3. 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 :

  1. Utilisez l'outil d'empaquetage pour créer un fichier RPK :

    imx500-package -i path/to/packerOut.zip -o path/to/output/folder
    
  2. Clonez et installez picamera2 :

    git clone https://github.com/raspberrypi/picamera2
    cd picamera2 && pip install -e . --break-system-packages
    
  3. Lancer l'inférence à l'aide du fichier RPK généré :

    python imx500_object_detection_demo.py --model path/to/network.rpk --fps 17 --bbox-normalization --labels path/to/labels.txt
    
📅C réé il y a 5 mois ✏️ Mis à jour il y a 3 jours

Commentaires