Skip to content

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.

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.

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

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

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

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

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 ?

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)

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 :

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

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

    git clone -b next 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 25 --bbox-normalization --labels <path to labels.txt>
    
📅C réé il y a 1 mois ✏️ Mis à jour il y a 20 jours

Commentaires