UnityのPerception Packageを使ったオブジェクト位置姿勢推定用学習データの作成(1/6)
この記事では、部屋の中にあるオブジェクトの位置姿勢を推定するための学習データを、Unityを使って生成する環境の構築を目指します。学習データを生成するために、Domain Randomizationの機能があるperception packageをベースに開発していきます。perception packageは、コンピュータビジョンのための大規模な合成データセットを生成するツールキットであり、インスタンスセグメンテーションやオブジェクト検出などのタスクに対応しています。また、Domain Randomizationという手法を用いて、シーン内のオブジェクトや光源やカメラなどのパラメータをランダムに変化させることで、合成データの多様性や汎化性能を向上させることができます。 さらに、オブジェクト指向設計を学ぶために、利用するperception packageの機能がどのように設計・実装されているかも、利用する機能から順に解析していきたいと思います。 ## 目標設定 今回のプロジェクトの目標は、部屋にあるオブジェクトの位置姿勢を推定するための学習データ生成、になります。 想定する学習モデルとしては、家の中で撮影した画像から何がどの位置姿勢にあるかを出力するモデルを想定しています。そのため、学習データとしては下記データを作成する予定です。 - インスタンスセグメンテーション用ラベル:画像内の各ピクセルに対してオブジェクトIDやカテゴリIDを割り当てた画像 - 各オブジェクトのバウンディングボックス:画像内でオブジェクトが占める領域を表す四角形 - 各オブジェクトの位置姿勢:3次元空間内でオブジェクトが持つ座標と回転角度 ## データ生成の流れ データ生成の流れは以下を想定しています。 1. ベースの部屋を初期状態に設定 1. 部屋の中にオブジェクトをランダムに配置 1. 光源をランダムに設定 1. カメラでランダムな位置姿勢で複数撮影 1. 一定数上記を繰り返す ランダム化する要素としては下記を想定しています。 - オブジェクトの位置姿勢やスケール - オブジェクトの種類や数 - オブジェクトの色やテクスチャや形状 - 光源の位置や色や強度 - カメラの位置や回転や視野角 ## 勉強会の実施ステップ 以下の順番で記事を作成して環境...