[NVIDIA x NXPで実現するエッジAI]
第1話 プロセス概要
第2話 データセットの作成(NVIDIA Omniverse)
第3話 AIモデルの学習(NVIDIA TAO Toolkit)
第4話 エッジデバイスへのデプロイと推論(i.MX 8M Plus EVK)

前回第1話では、NVIDIA Omniverse™とNVIDIA TAO Toolkitを使用し、エッジAI用のモデル学習からデプロイまでの一連の流れを紹介しました。
第2話では、NVIDIA Omniverseで合成データを作成した際の詳細手順を紹介していきます。
NVIDIA Omniverseのプラットフォームを活用することで、実際の現場で撮影することなく、データセット画像をフォトリアルな仮想空間内で自動生成することが可能です。
また、TAO Toolkitでの転移学習と推論モデルの性能確認までのAI開発プロセスを短時間で何度も試行することができ、期待する性能のAIモデルにカスタマイズするための追加データセット生成や学習期間を大幅に改善することが期待されます。是非本記事を参考にお試しいただければ幸いです。
NVIDIA Omniverse Replicatorとは?
NVIDIA Omnivers Replicatorは、Omniverseプラットフォームで構築された仮想空間上で、AIモデル学習に使用するデータセット生成を可能にする合成データ生成フレームワークです。
詳細についてはNVIDIA Omniverse Replicator™の記事をご覧ください。
合成データ作成手順
1. 3Dアセットの用意
まずは、人形の3Dアセットを用意します。
弊社ではCGTraderから無料の3Dアセットをダウンロードしました。
※上記アセットの加工作業についてはappendixに記載しています。よろしければご参照ください。
2. ラベルの設定
検出したい物体に対し、ラベルを設定していきます。
1. NVIDIA Isaac Sim 4.2に人形アセットをimportします。
※Isaac Simは、Omniverseを基盤としたロボットシミュレーションを行うアプリケーションツールです。詳しくはNVIDIA Isaac™をご覧ください。
2. ラベルの設定
2-1. 人形のアセットを選択し、Semantic Schema Editorタブ内のApply semantic data on selected objectsに下記のように入力。
New Semantic Type:class
New Semantic Data:figure
2-2. Add Entry On All Selected Primsをクリックします。

ラベルの設定ができているかの確認として、Sensors Output windowのBoundingBox2DTightにチェックを付けてShow Windowをクリックします。
下記のように2Dバウンディングボックスが表示されればラベルの設定の完了です。

3. スクリプト実行
Pythonスクリプトを使用して学習用のRGB画像と教師データの作成をします。
今回は人形アセットをランダムに配置し、カメラで撮影した画像とバウンディングボックスアノテーションを保存します。
これにより、自動的にラベル付けされた合成データを大量に生成することができます。
今回は下記のようにスクリプトを作成し、500枚の画像撮影とアノテーションデータ作成を実施しています。
スクリプトの解説
カメラ配置
・今回、実際のカメラ配置は人形の上方から撮影することを想定しているので、カメラは人形の上空にランダムに配置。
・人形アセットが映るようにする為、カメラは常に原点を向くように配置。
アセット配置
・ラベル付け済みの人形アセットを変数figureに格納して操作。
・人形アセットの向く方向(z軸回転)と配置をランダム化。
※ランダム配置の際に人形アセット同士が衝突しないようにする。
モデル精度向上のための施策
・ディストラクター(空き缶やはさみ等のアセット)のランダム配置。
※人形アセットとディストラクタ同士が衝突しないように配置しています。
・背景画像を様々な種類に切り替える。
※こちらの取り組みは下記のリンクを参考にしました。
下記のスクリプトをScript editorに貼り付け、Runを実行

Window > Script Editorをクリックし、Script Editor に上記のスクリプト(replicator_py)をコピー&ペーストし、Replicator > Startで画像撮影を開始します。

omni.replicator_out/figureフォルダにRGB画像とバウンディングボックスのアノテーションデータ(npyファイル/jsonファイル)が確認ができます。これで合成データ作成の完了となります。
作成した合成データ画像

Appendix
人形アセットの加工作業
ご参考までに、CGTraderでダウンロードしたアセットの編集作業を実施しました。
GUI操作で行うこともできますが、少々煩雑な為、スクリプトにまとめております。
下記のスクリプトをScript Editorで順番に実行してください。
1. ダウンロードしたフォルダ内の.objファイルをダブルクリック

2. ライトの作成,不要なアセットの削除,位置と大きさの編集

3. Xformの追加とrename

4. 着色と画像貼り付け,マテリアルプリムの移動

5. 人形アセットのコピー

以上でアセットの編集作業は完了です。
合成データ作成手順の[2.ラベルの設定]から作業を始めることができます。
第3話ではAIモデルの学習手順を解説
本記事ではNVIDIA Omniverseの3D仮想空間で実際にデータセットを作成する手順を紹介しました。
今回は一部のプログラムコード記述例をご紹介しましたが、メーカーサイトの公開情報等を参考に、多様なバリエーションの撮影シーンを実現するプログラムを記述することができます。
次回第3話では、今回作成した合成データセットとNVIDIA TAO Toolkit を用いたAIモデルの学習手順を解説します。