Exportation Ultralytics YOLO vers NCNN#
Le déploiement de modèles de vision par ordinateur sur des appareils à puissance de calcul limitée, comme les systèmes mobiles ou embarqués, nécessite de choisir soigneusement le format. L’utilisation d’un format optimisé garantit que même les appareils aux ressources limitées peuvent exécuter efficacement des tâches avancées de vision par ordinateur.
L’exportation au format NCNN te permet d’optimiser tes modèles Ultralytics YOLO26 pour des applications légères exécutées sur appareil. Ce guide explique comment convertir tes modèles au format NCNN afin d’améliorer leurs performances sur les appareils mobiles et embarqués.
Pourquoi exporter vers NCNN ?#
Le framework NCNN, développé par Tencent, est un framework de calcul d’inférence des réseaux neuronaux hautes performances, optimisé spécifiquement pour les plateformes mobiles, notamment les téléphones mobiles, les appareils embarqués et les appareils IoT. NCNN est compatible avec un large éventail de plateformes, dont Linux, Android, iOS et macOS.
NCNN est réputé pour sa vitesse de traitement sur les CPU mobiles et permet de déployer rapidement des modèles de deep learning sur les plateformes mobiles, ce qui en fait un excellent choix pour créer des applications basées sur l’IA.
Principales fonctionnalités des modèles NCNN#
Les modèles NCNN offrent plusieurs fonctionnalités clés qui permettent le machine learning sur appareil et aident les développeurs à déployer des modèles sur des appareils mobiles, embarqués et périphériques :
-
Efficaces et performants : les modèles NCNN sont légers et optimisés pour les appareils mobiles et embarqués aux ressources limitées, comme Raspberry Pi, tout en maintenant une précision élevée pour les tâches de vision par ordinateur.
-
Quantification : NCNN prend en charge la quantification, une technique qui réduit la précision des poids et des activations du modèle afin d'améliorer les performances et de réduire l'empreinte mémoire.
-
Compatibilité : les modèles NCNN sont compatibles avec les frameworks populaires de deep learning, notamment TensorFlow, Caffe et ONNX, ce qui permet aux développeurs de tirer parti des modèles et des workflows existants.
-
Facilité d'utilisation : NCNN fournit des outils conviviaux pour convertir les modèles entre différents formats et garantir une interopérabilité fluide entre divers environnements de développement.
-
Accélération GPU avec Vulkan : NCNN prend en charge Vulkan pour accélérer l'inférence sur GPU de plusieurs fabricants, notamment AMD, Intel et d'autres GPU non NVIDIA, ce qui permet un déploiement hautes performances sur une plus grande variété de matériel.
Options de déploiement avec NCNN#
Les modèles NCNN sont compatibles avec diverses plateformes de déploiement :
-
Déploiement mobile : optimisé pour Android et iOS, pour une intégration fluide dans les applications mobiles et une inférence efficace directement sur l'appareil.
-
Systèmes embarqués et appareils IoT : idéal pour les appareils aux ressources limitées comme Raspberry Pi et NVIDIA Jetson. Si l'inférence standard sur Raspberry Pi avec le guide Ultralytics ne suffit pas, NCNN peut apporter d'importants gains de performances.
-
Déploiement sur ordinateur et serveur : prend en charge le déploiement sous Linux, Windows et macOS pour les workflows de développement, d'entraînement et d'évaluation.
Accélération GPU avec Vulkan#
NCNN prend en charge l'accélération GPU via Vulkan, ce qui permet une inférence hautes performances sur un large éventail de GPU, notamment les cartes graphiques AMD, Intel et d'autres fabricants non NVIDIA. Cette fonctionnalité est particulièrement utile pour :
- Prise en charge des GPU de différents fabricants : contrairement à CUDA, limité aux GPU NVIDIA, Vulkan fonctionne avec les GPU de plusieurs fabricants.
- Systèmes multi-GPU : sélectionne un appareil Vulkan spécifique sur les systèmes équipés de plusieurs GPU à l'aide de
device="vulkan:0",device="vulkan:1", etc. - Déploiements en périphérie et sur ordinateur : tire parti de l'accélération GPU sur les appareils où CUDA n'est pas disponible.
Pour utiliser l'accélération Vulkan, indique l'appareil Vulkan lors de l'exécution de l'inférence :
from ultralytics import YOLO
# Charger le modèle exporté au format NCNN
ncnn_model = YOLO("./yolo26n_ncnn_model")
# Exécuter l'inférence avec l'accélération GPU Vulkan (premier appareil Vulkan)
results = ncnn_model("https://ultralytics.com/images/bus.jpg", device="vulkan:0")
# Utiliser le deuxième appareil Vulkan sur les systèmes multi-GPU
results = ncnn_model("https://ultralytics.com/images/bus.jpg", device="vulkan:1")Vérifie que les pilotes Vulkan sont installés pour ton GPU. La plupart des pilotes GPU modernes prennent en charge Vulkan par défaut. Sous Linux, tu peux vérifier la disponibilité de Vulkan avec des outils comme vulkaninfo, ou utiliser le SDK Vulkan sous Windows.
Tâches prises en charge#
L'export NCNN prend en charge les sept tâches Ultralytics. La segmentation sémantique et l'estimation de profondeur sont disponibles uniquement avec YOLO26, la seule famille à intégrer ces têtes.
| Tâche | YOLOv8 | YOLO11 | YOLO26 |
|---|---|---|---|
| Détecter | ✅ | ✅ | ✅ |
| Segmenter | ✅ | ✅ | ✅ |
| Sémantique | ❌ | ❌ | ✅ |
| Profondeur | ❌ | ❌ | ✅ |
| Classifier | ✅ | ✅ | ✅ |
| Pose | ✅ | ✅ | ✅ |
| OBB | ✅ | ✅ | ✅ |
Exporter vers NCNN : convertir ton modèle YOLO26#
Tu peux élargir la compatibilité et la flexibilité de déploiement de tes modèles en convertissant les modèles YOLO26 au format NCNN.
Installation#
Pour installer les paquets requis, exécute :
# Install the required package for YOLO26
pip install ultralyticsPour obtenir des instructions détaillées et connaître les bonnes pratiques, consulte le guide d'installation d'Ultralytics. En cas de difficulté, consulte notre guide des problèmes courants pour trouver des solutions.
Utilisation#
Tous les modèles Ultralytics YOLO26 sont conçus pour prendre en charge l’exportation dès leur installation, ce qui facilite leur intégration à ton flux de déploiement préféré. Tu peux consulter la liste complète des formats d’exportation pris en charge et des options de configuration pour choisir la configuration la mieux adaptée à ton application.
Le format NCNN prend en charge les modes Export, Predict et Validate. Exporte ton modèle, puis charge le modèle exporté pour exécuter l'inférence ou valider sa précision.
from ultralytics import YOLO
# Charger un modèle YOLO26
model = YOLO("yolo26n.pt")
# Exporter le modèle au format NCNN
model.export(format="ncnn") # creates 'yolo26n_ncnn_model'from ultralytics import YOLO
# Charger le modèle exporté au format NCNN
model = YOLO("./yolo26n_ncnn_model")
# Exécuter l’inférence
results = model("https://ultralytics.com/images/bus.jpg")from ultralytics import YOLO
# Charger le modèle exporté au format NCNN
model = YOLO("./yolo26n_ncnn_model")
# Valider la précision sur le jeu de données COCO8
metrics = model.val(data="coco8.yaml")Arguments d’exportation#
| Argument | Type | Valeur par défaut | Description |
|---|---|---|---|
format | str | 'ncnn' | Format cible du modèle exporté, qui définit sa compatibilité avec différents environnements de déploiement. |
imgsz | int ou tuple | 640 | Taille d’image souhaitée pour l’entrée du modèle. Peut être un entier pour les images carrées ou un tuple (height, width) pour définir des dimensions spécifiques. |
quantize | int ou str | None | Précision de quantification : 16 (FP16) réduit de moitié la taille des poids exportés ; 32/non défini exporte des poids FP32, que l'environnement d'exécution CPU de NCNN calcule tout de même en FP16 par défaut lorsque le matériel le permet. Remplace l'indicateur obsolète half. |
batch | int | 1 | Indique la taille de lot pour l’inférence du modèle exporté ou le nombre maximal d’images que le modèle exporté traitera simultanément en mode predict. |
device | str | None | Définit l’appareil utilisé pour l’export : GPU (device=0), CPU (device=cpu), MPS pour Apple Silicon (device=mps). |
Pour en savoir plus sur le processus d’export, consulte la page de la documentation Ultralytics consacrée à l’export.
Déployer les modèles YOLO26 NCNN exportés#
Après avoir exporté tes modèles Ultralytics YOLO26 au format NCNN, tu peux les déployer à l'aide de la méthode YOLO("yolo26n_ncnn_model/"), comme le montre l'exemple d'utilisation ci-dessus. Pour obtenir des instructions de déploiement propres à chaque plateforme, consulte les ressources suivantes :
-
Android : crée et intègre des modèles NCNN pour la détection d'objets dans les applications Android.
-
macOS : déploie des modèles NCNN sur des systèmes macOS.
-
Linux : déploie des modèles NCNN sur des appareils Linux, notamment Raspberry Pi et d'autres systèmes embarqués similaires.
-
Windows x64 : déploie des modèles NCNN sur Windows x64 avec Visual Studio.
Résumé#
Ce guide expliquait comment exporter des modèles Ultralytics YOLO26 au format NCNN afin d'améliorer l'efficacité et la vitesse sur les appareils aux ressources limitées.
Pour plus de détails, consulte la documentation officielle de NCNN. Pour découvrir d'autres options d'export, consulte notre page des guides d'intégration.
FAQ#
Pour exporter ton modèle Ultralytics YOLO26 au format NCNN :
-
Python : utilise la méthode
exportde la classe YOLO.from ultralytics import YOLO # Charger un modèle YOLO26 model = YOLO("yolo26n.pt") # Exporter au format NCNN model.export(format="ncnn") # creates 'yolo26n_ncnn_model' -
CLI : utilise la commande
yolo export.yolo export model=yolo26n.pt format=ncnn # creates 'yolo26n_ncnn_model'
Pour connaître les options d'export détaillées, consulte la documentation Export.
-
L'export de tes modèles Ultralytics YOLO26 vers NCNN offre plusieurs avantages :
- Efficacité : les modèles NCNN sont optimisés pour les appareils mobiles et embarqués, et offrent des performances élevées même avec des ressources de calcul limitées.
- Quantification : NCNN prend en charge des techniques comme la quantification, qui accélèrent les modèles et réduisent leur consommation mémoire.
- Large compatibilité : tu peux déployer des modèles NCNN sur plusieurs plateformes, notamment Android, iOS, Linux et macOS.
- Accélération GPU avec Vulkan : tire parti de l'accélération GPU via Vulkan sur les GPU AMD, Intel et d'autres fabricants non NVIDIA pour accélérer l'inférence.
Pour en savoir plus, consulte la section Pourquoi exporter vers NCNN ?.
Développé par Tencent, NCNN est spécialement optimisé pour les plateformes mobiles. Voici quelques raisons clés d'utiliser NCNN :
- Hautes performances : conçu pour un traitement efficace et rapide sur les CPU mobiles.
- Multiplateforme : compatible avec des frameworks populaires comme TensorFlow et ONNX, ce qui facilite la conversion et le déploiement de modèles sur différentes plateformes.
- Soutien de la communauté : une communauté active assure des améliorations et des mises à jour continues.
Pour en savoir plus, consulte la section Principales fonctionnalités des modèles NCNN.
NCNN est polyvalent et prend en charge diverses plateformes :
- Mobile : Android, iOS.
- Systèmes embarqués et appareils IoT : appareils comme Raspberry Pi et NVIDIA Jetson.
- Ordinateurs de bureau et serveurs : Linux, Windows et macOS.
Pour améliorer les performances sur Raspberry Pi, envisage le format NCNN, comme indiqué dans notre guide Raspberry Pi.
Pour déployer tes modèles YOLO26 sur Android :
- Créer une version pour Android : suis le guide de compilation de NCNN pour Android.
- Intégrer à ton application : utilise le SDK Android de NCNN pour intégrer le modèle exporté dans ton application et exécuter efficacement l'inférence directement sur l'appareil.
Pour obtenir des instructions détaillées, consulte Déployer les modèles YOLO26 NCNN exportés.
Pour découvrir des guides et des cas d'utilisation plus avancés, consulte le guide de déploiement d'Ultralytics.
NCNN prend en charge Vulkan pour accélérer les calculs sur les GPU AMD, Intel et d'autres fabricants non NVIDIA. Pour utiliser Vulkan :
from ultralytics import YOLO # Charger un modèle NCNN et l'exécuter avec le GPU Vulkan model = YOLO("yolo26n_ncnn_model") results = model("image.jpg", device="vulkan:0") # Utiliser le premier appareil VulkanSur les systèmes multi-GPU, indique l'index de l'appareil (par exemple,
vulkan:1pour le deuxième GPU). Vérifie que les pilotes Vulkan sont installés pour ton GPU. Consulte la section Accélération GPU avec Vulkan pour plus de détails.