MRが楽しい

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

Unity AIのドキュメントを読む その45(モデルのシリアル化)

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

Unity AI

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

モデルのシリアル化

大規模なモデルの場合はファイル拡張子が.sentisであるシリアル化されたアセットを使用することをお勧めします。

シリアル化されたアセットの作成

ONNXモデルをUnityプロジェクトにインポートしたら以下の手順に従います。
プロジェクトウィンドウでモデルファイルを選択し、Inspectorウィンドウで[Serialize to StreamingAssets]を選択します。

Unityはモデルのシリアル化されたバージョンを作成し、StreamingAssetsフォルダに.sentisファイルとして保存します。

シリアル化されたアセットの読み込み

実行時にシリアル化されたモデルをプロジェクトに読み込むには以下のようなコードを使用します。

Model model = ModelLoader.Load(Application.streamingAssetsPath + "/mymodel.sentis");



シリアル化されたモデルを使用するメリット

シリアル化されたモデルを使用するメリットは次のとおりです。

  • プロジェクトのディスク容量を節約
  • 読み込み時間が短縮
  • Unityで動作することが検証済み
  • 共有が容易

シリアル化レイアウト

推論エンジンはFlatBuffersを使用して.sentisファイルをシリアル化します。

             ┌───────────────────────────────────┐
             │Flatbuffer-serialized              |
             | model desription                  │
             │                                   │
          ┌─ ├───────────────────────────────────┤
          │  │ Weight chunk data                 |
          │  │                                   │
          │  │                                   │
Weights  ─┤  ├───────────────────────────────────┤
          │  │ Weight chunk data                 │
          │  │                                   │
          │  │                                   │
          │  ├───────────────────────────────────┤
          │  │...                                │
          └─ └───────────────────────────────────┘