Eine mobile Objekterkennungs-iOS-Anwendung schreiben
Erfahren Sie, wie Sie eine iOS-Objekterkennungs-App mit ONNX Runtime erstellen. Diese Anwendung erkennt kontinuierlich Objekte in den von der Rückkamera Ihres iOS-Geräts aufgenommenen Bildern und zeigt
- die Klasse (den Typ) der erkannten Objekte an
- die Begrenzungsrahmen der erkannten Objekte an
- die Inferenz-Konfidenz an
Die Anwendung verwendet das vortrainierte, quantisierte MobileNet SSD V1-Modell.
Dieses Beispiel basiert stark auf Google Tensorflow Lite - Objekterkennungsbeispiele
Hier ist ein Beispiel-Screenshot der App

Inhalt
Voraussetzungen
- Xcode 12.5 und höher (vorzugsweise die neueste Version)
- Eine gültige Apple Developer ID
- Ein echtes iOS-Gerät mit Kamera (vorzugsweise iPhone 12 / iPhone 12 Pro)
- Xcode-Befehlszeilentools
xcode-select --install - Klonen Sie das Quellcode-Repository onnxruntime-inference-examples
Vorbereitung des Modells für die mobile Bereitstellung
-
Erstellen Sie eine separate Python-Umgebung, damit die Abhängigkeiten dieser App von anderen Python-Projekten getrennt sind.
conda create -n ios-app Python=3.8 conda activate ios-app -
Python-Abhängigkeiten installieren
cd <onnxruntime-inference-example-root>/mobile/examples/object_detection/ios/ORTObjectDetection pip install -r ./prepare_model.requirements.txtDie Anforderungen-Datei enthält die Python-Pakete onnxruntime, tf2onnx und tensorflow, die für die Modellkonvertierung im nächsten Schritt erforderlich sind.
-
Modell herunterladen und in ORT-Format konvertieren
./prepare_model.shDas Skript
- lädt das ursprüngliche tflite-Modell zusammen mit den Modelldaten
labelmap.txtherunter - konvertiert es in das ONNX-Format
- konvertiert es weiter in das ORT-Format, das vom ONNX Mobile Runtime ausgeführt werden kann
Das Skript gibt ein Verzeichnis
ModelsAndDataaus, das das ORT-Format-Modell,ssd_mobilenet_v1.all.ort, und die Modelletikett-Datendatei,labelmap.txt, enthält.Die Konvertierung dieses Modells ist ein zweistufiger Prozess. Das ursprüngliche Modell liegt im tflite-Format vor. Dieses wird zunächst mit dem tf2onnx-Konverter in das ONNX-Format konvertiert.
Anschließend wird das Modell mit dem onnx-zu-ort-Konverter in das ORT-Format konvertiert.
Zusätzlich zur Generierung des Modells im ORT-Format gibt das Konvertierungsskript auch eine Operator-Konfigurationsdatei aus.
- lädt das ursprüngliche tflite-Modell zusammen mit den Modelldaten
iOS-Anwendung erstellen
-
CocoaPods installieren
sudo gem install cocoapods -
Abhängigkeiten installieren und Workspace-Datei generieren
cd <onnxruntime-inference-example-root>/mobile/examples/object_detection/ios/ pod installDie Datei
Podfileenthält die Abhängigkeitonnxruntime-objc, welche der Pod ist, der die Objective-C-API enthält.Am Ende dieses Schritts sollten Sie eine Datei namens
ORTObjectDetection.xcworkspaceim Verzeichnismobile/examples/object_detection/iossehen.Dieses Tutorial verwendet eines der vorkompilierten Pakete für ONNX Runtime Mobile. Sie können auch Ihre eigene benutzerdefinierte Runtime erstellen, wenn die Anforderungen Ihrer Zielumgebung dies erfordern. Um die benutzerdefinierte ONNX Runtime-Build in Ihre iOS-App einzubinden, siehe Benutzerdefiniertes iOS-Paket
-
Projekt erstellen
Öffnen Sie
<onnxruntime-inference-example-root>/mobile/examples/object_detection/ios/ORTObjectDetection.xcworkspacein Xcode.Wählen Sie Ihr
Development Teamin denSigning & CapabilitiesWorkspace-Einstellungen aus.Klicken Sie auf
Product->Build for Running, um die Anwendung zu kompilieren. -
Anwendung ausführen
Verbinden Sie Ihr iOS-Gerät und führen Sie die App aus. Sie müssen Berechtigungen erteilen, damit die App die Kamera des Geräts verwenden kann.
Sie sollten eine App mit dem ONNX Runtime-Logo auf Ihrem Gerät sehen. Wenn Sie die App ausführen, öffnet sich Ihre Kamera und führt Objekterkennung durch. «Screenshot einfügen»
Verwandte Informationen
-
Diese App verwendet die ONNX Runtime Objective-C API für die Objekterkennungsfunktionalität.
Sie ist vollständig in Swift geschrieben und verwendet eine Bridging-Header-Datei, damit das Framework in einer Swift-App verwendet werden kann.
-
Das ursprüngliche TensorFlow-Tutorial und das Modell finden Sie hier.
-
Weitere Informationen zur Konvertierung von TFlite-Modellen in ONNX finden Sie unter Konvertierung von TFlite-Modellen in ONNX.