生産現場で使う 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 となりました。この段階では、モデルの最適化は行わず、モデルを固定してデータにのみ反復修正を施し、このベースラインを改善することを最優先にしました。
Unity の Unity Computer Vision Datasets サービス を利用しました。このサービスでは、Unity のコンテンツ制作チームが、ライティングや配置のランダム化などのパラメーターを公開されている環境を構築・公開し、ML 開発者が設定して実験用のデータを作成できるようにしています。このデータジェネレーターが公開されると、ML 開発チームはデータセットを生成し、モデルを再学習しました。私たちは、多くのプロジェクトで成果を上げている、合成データセットでの事前学習と、実データセットでの微調整という手法を採用しました。新しい結果は AP が 56.83、および AR が 55.1 となり、両指標ともに改善されました。
まず、基本的な分布分析を行い、合成データセットと実データセットの分布をいくつかの次元で比較して、パフォーマンスの低下につながる懸念事項がないかどうかを確認しました。2D 画像内の犬の位置の分布を比較すると、下の図のように、実データと合成データでは顕著な違いがあることがわかりました。
この情報だけでは、合成学習データの犬の位置の分布が狭いことが、ターゲット指標に影響を与えているとは判断できませんでした。早速、この分布を広げることで効果があるかどうかの実験をしてみました。Unity Computer Vision Datasets の合成データジェネレーターはカメラに対する 3 次元の位置関係に関わるパラメーターを公開していたため、ML の開発者は、Unity プロジェクト自体に変更を加えることなく、2 次元画像内での犬の位置の多様性が高い新しいデータセットを約 30 分で生成することができました。
その後、チームはこの新しいデータセット(v2)に基づいてモデルを再学習し、結果として指標は AP が 57.18 へとわずかに改善しました。AR は同じ値を維持しました。
この時点で、データ生成の戦略とパラメーターには納得できたので、データセットのサイズを大きくすることにしました。Unity Computer Vision Datasets では、同じ構成でより大きなデータセットを作ることが簡単にできました。4 万枚の画像と 10 万枚の画像からなる 2 つのデータセットを作成することにしました。
Unity のリアルタイムレンダリングエンジンを利用して作られた Unity Computer Vision Datasets は、データ生成をクラウド上で水平的にスケーリングすることで、10 万枚の画像からなるリアルなデータセットを 90 分足らずで作成することができました。モデルを再学習した後、データセットを大きくしていくにつれて徐々に性能が向上していることがわかります。
このモデルは本番システムに導入するにはまだ不十分ですが、データの反復修正を迅速に行い、モデルを修正しておくだけで、重要な指標に素早く影響し、絶対 AP の値が 14、絶対 AR の値がおよそ 10 改善する結果を得ました。10 万枚の画像データからなるデータセットを生成し、更新されたモデルを学習するという一連のプロセスを、5 時間以内に完了することができました。これがデータ中心型 AI の実践です。
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 Computer Vision Datasets に登録すると、サンプルデータセットを探索したり、事前に構築された環境で独自のサンプルデータセットを生成したりすることができます。