MRが楽しい

MRやVRについて学習したことを書き残す

Unity AIのドキュメントを読む その52(ONNXモデルのインポート設定)

本日はUnityの技術調査枠です。
Unity AIのドキュメントを読みながら実際に操作を試して記事に残します。

Unity AI

以下のUnity AIのドキュメントを試しながら実行時のキャプチャをしていきます。
docs.unity3d.com

ONNXモデルのインポート設定

モデルアセットインポート設定を使用して機械学習(ML)モデルを.onnx形式でインポートできます。
これらの設定はUnityが実行時にモデルを処理する前にモデルをどのように処理するかを制御します。

動的入力シェイプのサポート

推論エンジンは動的入力ディメンションを持つONNXモデルをサポートしています。
つまり、モデルは特定のパターンに一致するさまざまなシェイプの入力テンソルと互換性があります。
ONNXモデルの動的ディメンションは.batch_sizesequence_lengthや.batch_sizeのように名前が付けられます。

例えばシェイプ(batch_size, 3, 256, 256)の入力は以下のように異なるバッチサイズの入力テンソルを受け入れることができます。

  • (1, 3, 256, 256)
  • (2, 3, 256, 256)
  • (4, 3, 256, 256)

動的ディメンションの値が事前にわかっている場合、それを静的な値に設定できます。
これにより推論エンジンはモデルを最適化し、推論速度とメモリ効率を向上させることができます。

インポート設定を構成する

モデルのインポート設定を変更するにはModel Asset Import Settingsウィンドウを使用します。
動的なディメンションに静的な値を設定するには以下の手順に従います。

  1. Projectウィンドウから[Model Asset Import Settings]を開きます。
  2. 動的な入力ディメンションに静的な値を設定します。
  3. [Apply]を選択します。

更新された値は推論エンジンモデルのインスペクターに反映されます。
モデルをファイルにシリアル化すると割り当てられた静的な値が保存されます。
ただし、シリアル化後は入力ディメンションを変更することはできません。

動的入力ディメンション

動的入力ディメンションで使用できるプロパティは以下の通りです。

プロパティ 説明
name 動的ディメンションの名前。ONNXモデルから自動的に入力されます。このフィールドは変更できません。
value 動的入力ディメンションに割り当てられる値。ディメンションを動的に保ちますが、負でない値は静的サイズに設定します。