Ultralytics-YOLO-NCNN-Export#
Die Bereitstellung von Computer-Vision-Modellen auf Geräten mit begrenzter Rechenleistung, etwa Mobilgeräten oder eingebetteten Systemen, erfordert eine sorgfältige Auswahl des Formats. Ein optimiertes Format stellt sicher, dass auch Geräte mit begrenzten Ressourcen komplexe Computer-Vision-Aufgaben effizient bewältigen können.
Durch den Export ins NCNN-Format kannst du deine Ultralytics-YOLO26-Modelle für Anwendungen auf Geräten mit begrenzten Ressourcen optimieren. Diese Anleitung erklärt, wie du deine Modelle ins NCNN-Format konvertierst, um die Leistung auf Mobilgeräten und eingebetteten Geräten zu verbessern.
Warum ins NCNN-Format exportieren?#
Das von Tencent entwickelte NCNN-Framework ist ein leistungsstarkes Framework zur Inferenz neuronaler Netze, das speziell für mobile Plattformen optimiert ist, darunter Mobiltelefone, eingebettete Geräte und IoT-Geräte. NCNN ist mit einer Vielzahl von Plattformen kompatibel, darunter Linux, Android, iOS und macOS.
NCNN ist für seine hohe Verarbeitungsgeschwindigkeit auf mobilen CPUs bekannt und ermöglicht die schnelle Bereitstellung von Deep-Learning-Modellen auf mobilen Plattformen. Dadurch eignet sich NCNN hervorragend für die Entwicklung KI-gestützter Anwendungen.
Wichtige Merkmale von NCNN-Modellen#
NCNN-Modelle bieten mehrere wichtige Funktionen, die maschinelles Lernen direkt auf dem Gerät ermöglichen und Entwickler dabei unterstützen, Modelle auf Mobilgeräten, eingebetteten Geräten und Edge-Geräten bereitzustellen:
-
Effizient und leistungsstark: NCNN-Modelle sind leichtgewichtig und für Mobilgeräte und eingebettete Geräte wie Raspberry Pi mit begrenzten Ressourcen optimiert. Gleichzeitig bewahren sie eine hohe Genauigkeit bei Computer-Vision-Aufgaben.
-
Quantisierung: NCNN unterstützt Quantisierung, eine Technik, die die Genauigkeit von Modellgewichten und Aktivierungen verringert, um die Leistung zu verbessern und den Speicherbedarf zu senken.
-
Kompatibilität: NCNN-Modelle sind mit gängigen Deep-Learning-Frameworks wie TensorFlow, Caffe und ONNX kompatibel. So können Entwickler bestehende Modelle und Arbeitsabläufe nutzen.
-
Einfache Nutzung: NCNN bietet benutzerfreundliche Werkzeuge zum Konvertieren von Modellen zwischen verschiedenen Formaten und gewährleistet so eine reibungslose Interoperabilität in unterschiedlichen Entwicklungsumgebungen.
-
Vulkan-GPU-Beschleunigung: NCNN unterstützt Vulkan für GPU-beschleunigte Inferenz auf GPUs verschiedener Hersteller, darunter AMD, Intel und andere GPUs, die nicht von NVIDIA stammen. Dadurch wird eine leistungsstarke Bereitstellung auf einer größeren Auswahl an Hardware ermöglicht.
Bereitstellungsoptionen mit NCNN#
NCNN-Modelle sind mit verschiedenen Bereitstellungsplattformen kompatibel:
-
Bereitstellung auf Mobilgeräten: Für Android und iOS optimiert, ermöglicht NCNN die nahtlose Integration in mobile Anwendungen und effiziente Inferenz direkt auf dem Gerät.
-
Eingebettete Systeme und IoT-Geräte: Ideal für Geräte mit begrenzten Ressourcen wie Raspberry Pi und NVIDIA Jetson. Wenn die standardmäßige Inferenz auf einem Raspberry Pi mit dem Ultralytics-Leitfaden nicht ausreicht, kann NCNN die Leistung deutlich verbessern.
-
Bereitstellung auf Desktop und Server: Unterstützt die Bereitstellung unter Linux, Windows und macOS für Entwicklungs-, Trainings- und Evaluierungsabläufe.
Vulkan-GPU-Beschleunigung#
NCNN unterstützt die GPU-Beschleunigung über Vulkan und ermöglicht so leistungsstarke Inferenz auf einer großen Auswahl an GPUs, darunter AMD, Intel und andere Grafikkarten, die nicht von NVIDIA stammen. Das ist besonders nützlich für:
- GPU-Unterstützung verschiedener Hersteller: Anders als CUDA, das auf NVIDIA-GPUs beschränkt ist, funktioniert Vulkan mit GPUs verschiedener Hersteller.
- Systeme mit mehreren GPUs: Wähle in Systemen mit mehreren GPUs ein bestimmtes Vulkan-Gerät mit
device="vulkan:0",device="vulkan:1"usw. aus. - Bereitstellung am Edge und auf Desktop-Systemen: Nutze die GPU-Beschleunigung auf Geräten, auf denen CUDA nicht verfügbar ist.
Gib zur Verwendung der Vulkan-Beschleunigung das Vulkan-Gerät an, wenn du die Inferenz ausführst:
from ultralytics import YOLO
# Das exportierte NCNN-Modell laden
ncnn_model = YOLO("./yolo26n_ncnn_model")
# Inferenz mit Vulkan-GPU-Beschleunigung ausführen (erstes Vulkan-Gerät)
results = ncnn_model("https://ultralytics.com/images/bus.jpg", device="vulkan:0")
# Zweites Vulkan-Gerät in Systemen mit mehreren GPUs verwenden
results = ncnn_model("https://ultralytics.com/images/bus.jpg", device="vulkan:1")Stelle sicher, dass die Vulkan-Treiber für deine GPU installiert sind. Die meisten modernen GPU-Treiber unterstützen Vulkan standardmäßig. Unter Linux kannst du die Vulkan-Verfügbarkeit mit Werkzeugen wie vulkaninfo überprüfen, unter Windows mit dem Vulkan SDK.
Unterstützte Aufgaben#
Der NCNN-Export unterstützt alle sieben Ultralytics-Aufgaben. Semantische Segmentierung und Tiefenschätzung sind nur mit YOLO26 verfügbar, der einzigen Modellfamilie, die diese Köpfe enthält.
| Aufgabe | YOLOv8 | YOLO11 | YOLO26 |
|---|---|---|---|
| Erkennung | ✅ | ✅ | ✅ |
| Segmentierung | ✅ | ✅ | ✅ |
| Semantik | ❌ | ❌ | ✅ |
| Tiefe | ❌ | ❌ | ✅ |
| Klassifizierung | ✅ | ✅ | ✅ |
| Pose | ✅ | ✅ | ✅ |
| OBB | ✅ | ✅ | ✅ |
Export nach NCNN: Dein YOLO26-Modell konvertieren#
Du kannst die Modellkompatibilität und Flexibilität bei der Bereitstellung erweitern, indem du YOLO26-Modelle in das NCNN-Format konvertierst.
Installation#
Führe zum Installieren der erforderlichen Pakete Folgendes aus:
# Install the required package for YOLO26
pip install ultralyticsAusführliche Anleitungen und bewährte Vorgehensweisen findest du im Ultralytics-Installationsleitfaden. Wenn du auf Schwierigkeiten stößt, findest du Lösungen in unserem Leitfaden zu häufigen Problemen.
Verwendung#
Alle Ultralytics YOLO26-Modelle sind so ausgelegt, dass sie sofort exportiert werden können. Dadurch lassen sie sich problemlos in deinen bevorzugten Bereitstellungsablauf integrieren. In der vollständigen Liste der unterstützten Exportformate und Konfigurationsoptionen findest du die passende Konfiguration für deine Anwendung.
Das NCNN-Format unterstützt die Modi Export, Vorhersage und Validierung. Exportiere dein Modell und lade anschließend das exportierte Modell, um Inferenz auszuführen oder seine Genauigkeit zu validieren.
from ultralytics import YOLO
# Ein YOLO26-Modell laden
model = YOLO("yolo26n.pt")
# Das Modell ins NCNN-Format exportieren
model.export(format="ncnn") # creates 'yolo26n_ncnn_model'from ultralytics import YOLO
# Das exportierte NCNN-Modell laden
model = YOLO("./yolo26n_ncnn_model")
# Inferenz ausführen
results = model("https://ultralytics.com/images/bus.jpg")from ultralytics import YOLO
# Das exportierte NCNN-Modell laden
model = YOLO("./yolo26n_ncnn_model")
# Die Genauigkeit anhand des COCO8-Datensatzes validieren
metrics = model.val(data="coco8.yaml")Exportargumente#
| Argument | Typ | Standard | Beschreibung |
|---|---|---|---|
format | str | 'ncnn' | Zielformat des exportierten Modells, das die Kompatibilität mit verschiedenen Bereitstellungsumgebungen festlegt. |
imgsz | int oder tuple | 640 | Gewünschte Bildgröße für die Modelleingabe. Kann eine Ganzzahl für quadratische Bilder oder ein Tupel (height, width) für bestimmte Abmessungen sein. |
quantize | int oder str | None | Quantisierungsgenauigkeit: 16 (FP16) halbiert die exportierten Gewichte; mit 32/nicht gesetzt werden FP32-Gewichte exportiert, die NCNNs CPU-Laufzeit standardmäßig weiterhin mit FP16 berechnet, sofern die Hardware dies unterstützt. Ersetzt das veraltete Flag half. |
batch | int | 1 | Gibt die Batchgröße für die Inferenz des Exportmodells oder die Höchstzahl der Bilder an, die das exportierte Modell gleichzeitig im predict-Modus verarbeiten kann. |
device | str | None | Legt das Exportgerät fest: GPU (device=0), CPU (device=cpu), MPS für Apple Silicon (device=mps). |
Weitere Informationen zum Exportvorgang findest du auf der Ultralytics-Dokumentationsseite zum Export.
Exportierte YOLO26-NCNN-Modelle bereitstellen#
Nachdem du deine Ultralytics-YOLO26-Modelle in das NCNN-Format exportiert hast, kannst du sie wie im obigen Anwendungsbeispiel gezeigt mit der Methode YOLO("yolo26n_ncnn_model/") bereitstellen. Plattformbezogene Anleitungen zur Bereitstellung findest du in den folgenden Ressourcen:
-
Android: Erstelle NCNN-Modelle und integriere sie für die Objekterkennung in Android-Anwendungen.
-
macOS: Stelle NCNN-Modelle auf macOS-Systemen bereit.
-
Linux: Stelle NCNN-Modelle auf Linux-Geräten bereit, darunter Raspberry Pi und ähnliche eingebettete Systeme.
-
Windows x64: Stelle NCNN-Modelle unter Windows x64 mit Visual Studio bereit.
Zusammenfassung#
Dieser Leitfaden behandelte den Export von Ultralytics-YOLO26-Modellen in das NCNN-Format, um Effizienz und Geschwindigkeit auf Geräten mit begrenzten Ressourcen zu verbessern.
Weitere Einzelheiten findest du in der offiziellen NCNN-Dokumentation. Weitere Exportoptionen findest du auf unserer Seite zu Integrationen.
Häufig gestellte Fragen#
So exportierst du dein Ultralytics-YOLO26-Modell in das NCNN-Format:
-
Python: Verwende die Methode
exportder YOLO-Klasse.from ultralytics import YOLO # Ein YOLO26-Modell laden model = YOLO("yolo26n.pt") # Ins NCNN-Format exportieren model.export(format="ncnn") # creates 'yolo26n_ncnn_model' -
CLI: Verwende den Befehl
yolo export.yolo export model=yolo26n.pt format=ncnn # creates 'yolo26n_ncnn_model'
Ausführliche Informationen zu den Exportoptionen findest du in der Exportdokumentation.
-
Der Export deiner Ultralytics-YOLO26-Modelle nach NCNN bietet mehrere Vorteile:
- Effizienz: NCNN-Modelle sind für Mobilgeräte und eingebettete Systeme optimiert und bieten auch bei begrenzten Rechenressourcen eine hohe Leistung.
- Quantisierung: NCNN unterstützt Techniken wie die Quantisierung, die die Modellgeschwindigkeit verbessern und den Speicherbedarf verringern.
- Breite Kompatibilität: Du kannst NCNN-Modelle auf verschiedenen Plattformen bereitstellen, darunter Android, iOS, Linux und macOS.
- Vulkan-GPU-Beschleunigung: Nutze Vulkan, um die GPU-Beschleunigung auf AMD-, Intel- und anderen GPUs einzusetzen, die nicht von NVIDIA stammen, und so die Inferenz zu beschleunigen.
Weitere Einzelheiten findest du im Abschnitt Warum nach NCNN exportieren?.
NCNN wurde von Tencent entwickelt und ist speziell für mobile Plattformen optimiert. Zu den wichtigsten Gründen für die Verwendung von NCNN zählen:
- Hohe Leistung: Für eine effiziente und schnelle Verarbeitung auf mobilen CPUs entwickelt.
- Plattformübergreifende Unterstützung: Kompatibel mit gängigen Frameworks wie TensorFlow und ONNX. Dadurch lassen sich Modelle einfacher für verschiedene Plattformen konvertieren und bereitstellen.
- Community-Unterstützung: Eine aktive Community sorgt für kontinuierliche Verbesserungen und Aktualisierungen.
Weitere Informationen findest du im Abschnitt Wichtige Funktionen von NCNN-Modellen.
NCNN ist vielseitig und unterstützt verschiedene Plattformen:
- Mobilgeräte: Android, iOS.
- Eingebettete Systeme und IoT-Geräte: Geräte wie Raspberry Pi und NVIDIA Jetson.
- Desktop und Server: Linux, Windows und macOS.
Für eine bessere Leistung auf Raspberry Pi solltest du das NCNN-Format verwenden, wie in unserem Raspberry-Pi-Leitfaden beschrieben.
So stellst du deine YOLO26-Modelle auf Android bereit:
- Für Android erstellen: Folge dem Leitfaden NCNN für Android erstellen.
- In deine App integrieren: Verwende das NCNN Android SDK, um das exportierte Modell in deine Anwendung zu integrieren und effiziente Inferenz direkt auf dem Gerät auszuführen.
Ausführliche Anweisungen findest du unter Exportierte YOLO26-NCNN-Modelle bereitstellen.
Weitere Anleitungen und Anwendungsfälle findest du im Ultralytics-Leitfaden zur Bereitstellung.
NCNN unterstützt Vulkan zur GPU-Beschleunigung auf AMD-, Intel- und anderen GPUs, die nicht von NVIDIA stammen. So verwendest du Vulkan:
from ultralytics import YOLO # NCNN-Modell laden und mit Vulkan-GPU ausführen model = YOLO("yolo26n_ncnn_model") results = model("image.jpg", device="vulkan:0") # Erstes Vulkan-Gerät verwendenGib bei Systemen mit mehreren GPUs den Geräteindex an (z. B.
vulkan:1für die zweite GPU). Stelle sicher, dass die Vulkan-Treiber für deine GPU installiert sind. Weitere Einzelheiten findest du im Abschnitt Vulkan-GPU-Beschleunigung.