コンテンツにスキップ

iOSでのモバイル物体検出

モバイル物体検出iOSアプリケーションを作成する

Section titled “モバイル物体検出iOSアプリケーションを作成する”

ONNX Runtimeを使用してiOS物体検出アプリを構築する方法を学びます。このアプリケーションは、iOSデバイスの背面カメラが見るフレーム内のオブジェクトを継続的に検出し、以下を表示します:

  • 検出されたオブジェクトのクラス(タイプ)
  • 検出されたオブジェクトのバウンディングボックス
  • 推論の信頼度

アプリケーションは、事前トレーニング済みの量子化されたMobileNet SSD V1モデルを使用します。

この例は、Google Tensorflow lite - Object Detection Examplesに大きく基づいています。

アプリのスクリーンショットの例を以下に示します:

iOS物体検出アプリを示すスクリーンショット

  • Xcode 12.5以上(できれば最新バージョン)
  • 有効なApple Developer ID
  • カメラ付きの実iOSデバイス(できればiPhone 12/iPhone 12 Pro)
  • Xcodeコマンドラインツールxcode-select --install
  • onnxruntime-inference-examplesソースコードリポジトリをクローン

モバイルデプロイメント用にモデルを準備する

Section titled “モバイルデプロイメント用にモデルを準備する”
  1. このアプリの依存関係が他のPythonプロジェクトから分離されるように、別のPython環境を作成する

    Terminal window
    conda create -n ios-app Python=3.8
    conda activate ios-app
  2. Python依存関係をインストールする

    Terminal window
    cd <onnxruntime-inference-example-root>/mobile/examples/object_detection/ios/ORTObjectDetection
    pip install -r ./prepare_model.requirements.txt

    要件ファイルには、次のステップでモデル変換に必要なonnxruntime、tf2onnx、およびtensorflowのPythonパッケージが含まれています。

  3. モデルをダウンロードして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形式でモデルを生成することに加えて、変換スクリプトは演算子設定ファイルも出力します

iOSアプリケーションを作成する

Section titled “iOSアプリケーションを作成する”
  1. CocoaPodsをインストールする

    Terminal window
    sudo gem install cocoapods
  2. 依存関係をインストールし、ワークスペースファイルを生成する

    Terminal window
    cd <onnxruntime-inference-example-root>/mobile/examples/object_detection/ios/
    pod install

    Podfileにはonnxruntime-objc依存関係が含まれており、これはObjective C APIを含むPodです。

    このステップの最後に、mobile/examples/object_detection/iosディレクトリにORTObjectDetection.xcworkspaceというファイルが表示されるはずです。

    このチュートリアルでは、ONNX Runtimeモバイル用の事前ビルドパッケージの1つを使用します。ターゲット環境の要件で必要に応じて、独自のカスタムランタイムをビルドすることもできます。iOSアプリにカスタムONNX Runtimeビルドを含めるには、カスタムiOSパッケージを参照してください

  3. プロジェクトをビルドする

    Xcodeで<onnxruntime-inference-example-root>/mobile/examples/object_detection/ios/ORTObjectDetection.xcworkspaceを開きます。

    Signing & Capabilitiesワークスペース設定でDevelopment Teamを選択します。

    Product -> Build for Runningをクリックしてアプリケーションをコンパイルします。

  4. アプリケーションを実行する

    iOSデバイスを接続してアプリを実行します。アプリがデバイスのカメラを使用するための許可を付与する必要があります。

    デバイスにONNX Runtimeロゴがあるアプリが表示されるはずです。アプリを実行すると、カメラが開き、物体検出が実行されます。