iOSでのモバイル物体検出
モバイル物体検出iOSアプリケーションを作成する
Section titled “モバイル物体検出iOSアプリケーションを作成する”ONNX Runtimeを使用してiOS物体検出アプリを構築する方法を学びます。このアプリケーションは、iOSデバイスの背面カメラが見るフレーム内のオブジェクトを継続的に検出し、以下を表示します:
- 検出されたオブジェクトのクラス(タイプ)
- 検出されたオブジェクトのバウンディングボックス
- 推論の信頼度
アプリケーションは、事前トレーニング済みの量子化されたMobileNet SSD V1モデルを使用します。
この例は、Google Tensorflow lite - Object Detection Examplesに大きく基づいています。
アプリのスクリーンショットの例を以下に示します:

- Xcode 12.5以上(できれば最新バージョン)
- 有効なApple Developer ID
- カメラ付きの実iOSデバイス(できればiPhone 12/iPhone 12 Pro)
- Xcodeコマンドラインツール
xcode-select --install - onnxruntime-inference-examplesソースコードリポジトリをクローン
モバイルデプロイメント用にモデルを準備する
Section titled “モバイルデプロイメント用にモデルを準備する”-
このアプリの依存関係が他のPythonプロジェクトから分離されるように、別のPython環境を作成する
Terminal window conda create -n ios-app Python=3.8conda activate ios-app -
Python依存関係をインストールする
Terminal window cd <onnxruntime-inference-example-root>/mobile/examples/object_detection/ios/ORTObjectDetectionpip install -r ./prepare_model.requirements.txt要件ファイルには、次のステップでモデル変換に必要なonnxruntime、tf2onnx、およびtensorflowのPythonパッケージが含まれています。
-
モデルをダウンロードしてORT形式に変換する
Terminal window ./prepare_model.shスクリプトは次のことを行います:
- 元のtfliteモデルとモデルメタデータ
labelmap.txtをダウンロードする - ONNX形式に変換する
- ONNXモバイルランタイムで実行できるORT形式にさらに変換する
スクリプトは
ModelsAndDataディレクトリを出力し、これにはORT形式モデルssd_mobilenet_v1.all.ortとモデルラベルデータファイルlabelmap.txtが含まれます。このモデルの変換は2段階のプロセスです。元のモデルはtflite形式です。これは、tf2onnxコンバーターを使用して最初にONNX形式に変換されます。
その後、モデルはonnx to ortコンバーターを使用してORT形式に変換されます。
ORT形式でモデルを生成することに加えて、変換スクリプトは演算子設定ファイルも出力します
- 元のtfliteモデルとモデルメタデータ
iOSアプリケーションを作成する
Section titled “iOSアプリケーションを作成する”-
CocoaPodsをインストールする
Terminal window sudo gem install cocoapods -
依存関係をインストールし、ワークスペースファイルを生成する
Terminal window cd <onnxruntime-inference-example-root>/mobile/examples/object_detection/ios/pod installPodfileにはonnxruntime-objc依存関係が含まれており、これはObjective C APIを含むPodです。このステップの最後に、
mobile/examples/object_detection/iosディレクトリにORTObjectDetection.xcworkspaceというファイルが表示されるはずです。このチュートリアルでは、ONNX Runtimeモバイル用の事前ビルドパッケージの1つを使用します。ターゲット環境の要件で必要に応じて、独自のカスタムランタイムをビルドすることもできます。iOSアプリにカスタムONNX Runtimeビルドを含めるには、カスタムiOSパッケージを参照してください
-
プロジェクトをビルドする
Xcodeで
<onnxruntime-inference-example-root>/mobile/examples/object_detection/ios/ORTObjectDetection.xcworkspaceを開きます。Signing & Capabilitiesワークスペース設定でDevelopment Teamを選択します。Product->Build for Runningをクリックしてアプリケーションをコンパイルします。 -
アプリケーションを実行する
iOSデバイスを接続してアプリを実行します。アプリがデバイスのカメラを使用するための許可を付与する必要があります。
デバイスにONNX Runtimeロゴがあるアプリが表示されるはずです。アプリを実行すると、カメラが開き、物体検出が実行されます。
-
このアプリは、物体検出機能を実行するためにONNX Runtime Objective-C APIを使用します。
これは完全にSwiftで記述されており、Swiftアプリでフレームワークを使用するためのブリッジヘッダーファイルを使用しています。
-
元のTensorFlowチュートリアルとモデルはこちらです
-
tfliteモデルをONNXに変換する詳細については、TFliteモデルをONNXに変換する