Unity を検索

Unity Computer Vision Datasets を使ったデータ中心型 AI

2021年12月10日 カテゴリ: テクノロジー | 10 分 で読めます
House, pantry, and store images side by side
House, pantry, and store images side by side
取り上げているトピック
シェア

生産現場で使う AI システムの開発は困難ですが、投資に対するリターンは非常に魅力的であるため、多くの企業が機械学習(ML)ベースのコンピュータービジョン機能を生産現場のアプリケーションやシステムに搭載しています。Unity は、顧客がシステムを市場に投入するまでの時間を短縮し、コンピュータービジョンシステムの品質を向上させ、データ中心型 AI の開発能力をさらに高めます。この記事の続きでは、Unity Computer Vision Datasets を使って、学習データが限られていた ML モデルを迅速に改良し、ベースライン指標比で 28% の改善を達成した方法について解説します。

Unity Computer Vision Datasets は、データが不足しているコンピュータービジョンアプリケーションのためのソリューションです。Unity は顧客と協力して、学習データセットのサイズを増やし、データに関する実験を可能にし、ターゲット指標を改善し、市場投入までの時間を短縮するために特別に設計されたカスタムデータジェネレーターを構築します。

以前のブログ記事では、家庭環境で動作するコンピュータービジョン機能が、プライバシー上の制限のためにデータの入手が困難になる理由を説明しました。私たちはこの製品を試すために、限られた実世界のデータセットで学習したモデルの性能を向上させるという課題に取り組みました。 

私たちが選んだユースケースは、スマートカメラアプリケーションの機能例として、家庭環境内の犬を検出することでした。私たちは、家庭環境に現れる犬に特に関心があったので、ソファ、電子レンジ、ヘアドライヤーなどの一般的な家庭用品と一緒に犬が写っている COCO および OIDSv6 画像データセットのサブセットを使用しました。結果として得られたデータセットは、バウンディングボックスでラベル付けされた 1,538 枚の犬の画像で、これを 1,200 枚の学習用画像、200 枚のテスト画像、138 枚の検証画像に分割しました。

ベースラインモデルと指標の確立

最初の目的は、実世界のデータだけでベースラインモデルとベースライン測定値を作成することでした。Detectron2 の Faster RCNN アーキテクチャは、ImageNet の重みで事前に学習されたもので、すぐに利用可能でした。この単一クラスの物体検出タスクの評価基準は、平均適合率(AP)と平均再現率(AR)です。その平均値は、IoU(Intersection over Union)を 0.5 から 0.95 まで、0.05 のステップサイズで変化させながら計算しました。私たちは単一のクラスのみを検出するため、MAP/MAR ではなく、平均適合率(AP)と平均再現率(AR)を選択しました。エッジケースではよくあることですが、このように限られた学習データしか利用できないということもあり、パフォーマンスのベースラインの測定結果は AP が 51.16、および AR が 50.3 となりました。この段階では、モデルの最適化は行わず、モデルを固定してデータにのみ反復修正を施し、このベースラインを改善することを最優先にしました。

ステップ 1:Unity Computer Vision Datasets を用いた指標の改善

Unity の Unity Computer Vision Datasets サービス を利用しました。このサービスでは、Unity のコンテンツ制作チームが、ライティングや配置のランダム化などのパラメーターを公開されている環境を構築・公開し、ML 開発者が設定して実験用のデータを作成できるようにしています。このデータジェネレーターが公開されると、ML 開発チームはデータセットを生成し、モデルを再学習しました。私たちは、多くのプロジェクトで成果を上げている、合成データセットでの事前学習と、実データセットでの微調整という手法を採用しました。新しい結果は AP が 56.83、および AR が 55.1 となり、両指標ともに改善されました。

Visually inspecting the created dataset in Unity Computer Vision Datasets
作成したデータセットを Unity Computer Vision Datasets で目視確認する

ステップ 2:改良された合成データセットを迅速に作成する

まず、基本的な分布分析を行い、合成データセットと実データセットの分布をいくつかの次元で比較して、パフォーマンスの低下につながる懸念事項がないかどうかを確認しました。2D 画像内の犬の位置の分布を比較すると、下の図のように、実データと合成データでは顕著な違いがあることがわかりました。

犬の位置分布ヒートマップ

real and synthetic data distributions for dog position within the image
v1 データセットの画像内の犬の位置について、実データと合成データの分布に明らかな不一致が見られる。Synthetic Train v1 に見られるような集中的な分布があると、モデルの一般化が不十分になる可能性がある。これは、Synthetic Train v2データセットで改善された。

この情報だけでは、合成学習データの犬の位置の分布が狭いことが、ターゲット指標に影響を与えているとは判断できませんでした。早速、この分布を広げることで効果があるかどうかの実験をしてみました。Unity Computer Vision Datasets の合成データジェネレーターはカメラに対する 3 次元の位置関係に関わるパラメーターを公開していたため、ML の開発者は、Unity プロジェクト自体に変更を加えることなく、2 次元画像内での犬の位置の多様性が高い新しいデータセットを約 30 分で生成することができました。

Configuring a dataset in Unity Computer Vision Datasets. Here we show some of the exposed parameters for data generation.
Unity Computer Vision Datasets でのデータセットの設定。ここでは、データ生成のために公開されたパラメータの一部を紹介する。
Camera placement randomizer
シーン内のカメラ配置サンプリング範囲の設定。

その後、チームはこの新しいデータセット(v2)に基づいてモデルを再学習し、結果として指標は AP が 57.18 へとわずかに改善しました。AR は同じ値を維持しました。

ステップ 3:より大きなデータセットでの迅速な実験

この時点で、データ生成の戦略とパラメーターには納得できたので、データセットのサイズを大きくすることにしました。Unity Computer Vision Datasets では、同じ構成でより大きなデータセットを作ることが簡単にできました。4 万枚の画像と 10 万枚の画像からなる 2 つのデータセットを作成することにしました。

Unity のリアルタイムレンダリングエンジンを利用して作られた Unity Computer Vision Datasets は、データ生成をクラウド上で水平的にスケーリングすることで、10 万枚の画像からなるリアルなデータセットを 90 分足らずで作成することができました。モデルを再学習した後、データセットを大きくしていくにつれて徐々に性能が向上していることがわかります。

Our progression through experiments to the best results. All experiments were initialized with ImageNet weights and fine-tuned on the dataset of 1,200 real images.
実験を重ねるにつれて徐々に性能が向上していく様子。すべての実験は ImageNet の重みで初期化され、1,200 枚の実画像のデータセットで微調整された。

このモデルは本番システムに導入するにはまだ不十分ですが、データの反復修正を迅速に行い、モデルを修正しておくだけで、重要な指標に素早く影響し、絶対 AP の値が 14絶対 AR の値がおよそ 10 改善する結果を得ました。10 万枚の画像データからなるデータセットを生成し、更新されたモデルを学習するという一連のプロセスを、5 時間以内に完了することができました。これがデータ中心型 AI の実践です。

Github Sample Project

Indoor Pet Detection

Please refer to this project which we used majorly for training the above mentioned experiments. The project provides scripts necessary for the specific use case of dog detection in an indoor home environment, as well as instructions on how to generate synthetic data for it using Unity Computer Vision Datasets. And after generating the required datasets, how to train & evaluate a model.

We have all the model checkpoint released, which were used for running our experiments, with different strategies around the amount of synthetic data. You can find all the experiments with their results for each checkpoint here.

If you want to try it out yourself please check out our space here.

結論

Unity Computer Vision Datasets は、合成データ開発者と機械学習チームとのコラボレーションを大幅に促進し、合成データを使った実験をより迅速に繰り返すことを可能にします。合成データを使った実験を繰り返し行うことで、最高の結果を出すための最適なデータセットをより迅速に作成することができます。

Unity Computer Vision Datasets が現在サポートしている機能は以下の通りです。

  • カスタムデータジェネレーター:Unity のリアルタイム 3D と機械学習の専門家が、顧客のユースケースに特化した、顧客の組織だけで利用できるカスタムデータジェネレーターを構築します。このサービスの詳細についてはお問い合わせください。
  • パラメトリック合成データセットの生成:反復修正と実験を継続的に行うために、事前に構築されたパラメトリック環境のデータセットを作成します。
  • 合成データセットのホスティング:1 つのプロジェクトのための複数の合成データセットを管理します。
  • データセットの可視化:データセットを真の正解となるラベル付きで可視化します。
  • ダウンロードまたは転送:データセットをローカルストレージまたは Google Cloud Storage のバケットにダウンロードします。
  • 無料データ生成:あらかじめ用意された環境(一般物体検出、ホームインテリア、リテール)に合わせて、最大 10,000 枚の画像を生成します。

Unity Computer Vision Datasets に登録すると、サンプルデータセットを探索したり、事前に構築された環境で独自のサンプルデータセットを生成したりすることができます。

2021年12月10日 カテゴリ: テクノロジー | 10 分 で読めます
取り上げているトピック