AKARI Tech Blog

燈株式会社のエンジニア・開発メンバーによる技術ブログです

独自プラットフォームで学習画像を自動生成しSim2Realを実現

皆さんこんにちは!

今週のAKARI Tech Blogは、DX Solution 事業本部 Dev Nebulaの黒川が担当します。 今回は「独自プラットフォームで学習画像を自動生成しSim2Realを実現」についてお伝えしようと思います!

機械学習モデル、特に画像認識モデルの精度を上げるには大量の学習データが必要不可欠です。しかし、実世界の画像をたくさん集めるのは非常に大変ですよね...😭。 そこで私たちは、シミュレーション技術を使って学習データを生成し、実世界のタスクに応用する「Sim2Real」というアプローチに取り組みました。

この記事では、弊社インターン生が中心となって進めてくれた取り組みと、それを通じて私たちが得た知見や試行錯誤の過程を共有します!

TL;DR

  • 学習用データのシミュレーション画像の生成は、現実世界を包含するように広く設定することで、モデルの汎化性能を高めることができる。
  • レンダリング時のライティングの品質や推論用の参照用画像のトリミングがモデルの精度向上に大幅に寄与。
  • 独自プラットフォームで画像生成。

背景:なぜシミュレーションで学習データを生成するのか?

機械学習モデルとデータの規模感

今日の高性能な画像分類モデルは、その裏側で非常に大規模なデータセットによって支えられています。例えば、画像認識の世界でベンチマークとして広く使われているデータセットには、以下のようなものがあります。

データセット 画像枚数(約) クラス数 主な用途 出典(公式サイト)
ImageNet 1400万枚 20,000以上 物体認識 ImageNet
COCO 33万枚 80 物体検出、セグメンテーション COCO
Open Images 900万枚 600 物体検出、画像分類 Open Images

※各データセットの画像枚数やクラス数はバージョンやサブセットによって異なります。

現実世界におけるデータ収集の壁

では、もし私たちが「自社製品」や「工場の特定の部品」など、オリジナルの物体を認識するモデルを作りたくなったらどうでしょう?当然、そのための都合の良いデータセットは世の中に存在しません。

そうなると、自分たちでデータを収集、つまりひたすら写真を撮影し、ラベル付け(アノテーション)をする必要があります。これは多くのプロジェクトにとって、非常に高いハードルとなります。

シミュレーションによる解決策

そこで着目されたのが、シミュレーションによる学習データの生成です。

シミュレーション空間では、物体の位置、カメラの角度、照明の当たり方などをプログラムで完全にコントロールできます。これにより、現実で撮影するのが難しいような多様なシチュエーションを、自動で、かつ大規模に生成することが可能になります。燈で開発しているシミュレーション基盤では、高度なレンダリングに加え、1秒間に数10枚という圧倒的な速度で画像を生成できこれが、データセット構築を実現する鍵となりました。

【コラム】「一晩で実装⁉」データ生成機能の追加秘話

そもそも、この詳細な検証がなぜ可能になったのか、その背景を少しお話しします。 当初、私たちはOmniverseのような既存ソフトウェアの活用を検討していましたが、コスト面の課題や、当時はまだドキュメントが乏しかったことなどから、開発は難航していました。

そんな中、私が「開発中の3次元処理の独自プラットフォームに、機械学習用のデータ生成機能を追加できないか?」と責任者に相談したのが転機となります。驚くべきことに、その機能のプロトタイプは、なんと一晩足らずで実装されたのです。

その後も、私たちが検証で必要とする細かい生成条件やレンダリング機能について、開発チームが一つひとつ爆速で要望を反映してくれたおかげで、本記事で紹介するような詳細な分析が可能になりました。

独自プラットフォームで生成された画像の例

この記事では、この距離学習での事例を例にシミュレーションで生成した画像(Sim)を使って、現実世界(Real)のタスクを解く「Sim2Real」の取り組みについて解説していきます。


アプローチ:シミュレーション画像を用いた学習〜距離学習を例に〜

学習と推論の全体像

今回のアプローチの全体像はシンプルです。

  1. シミュレーションで学習用画像を生成する。
  2. その画像を使って「距離学習(Metric Learning)」モデルを訓練する。
  3. 学習済みモデルを使い、実世界の画像がどのクラスに属するかを分類する。

[参考]「距離学習」とは何か?

「画像分類」と聞くと、ある画像が「犬」か「猫」かを直接当てるようなモデルを想像するかもしれません。しかし、今回は少し異なる「距離学習」という手法が採用されました。

距離学習とは、画像そのものを分類するのではなく、画像を「特徴ベクトル」と呼ばれる数値の配列に変換する方法を学習するモデルです。この特徴ベクトルは、画像の「らしさ」を凝縮した一種のデジタル指紋のようなものです。

  • 似ている画像は、特徴ベクトル空間上で距離が近くなる。
  • 似ていない画像は、特徴ベクトル空間上で距離が遠くなる。

この性質を利用することで、学習時に存在しなかった未知のクラスの画像にも対応できるなど、非常に柔軟で強力なモデルを構築できます。これは画像検索や顔認証などで広く使われている技術です。

学習後の推論フェーズでは、分類したい実世界の画像と、あらかじめクラスごとに用意しておいた「テンプレート画像」をそれぞれ特徴ベクトルに変換し、ベクトル同士の距離(類似度)を計算します。そして、最も距離が近いテンプレート画像のクラスを、その実画像の分類結果とします。


実践:距離学習におけるSim2Realの精度を向上させるためのポイント

ここからは、今回の検証を通じて私たちが得た、距離学習におけるSim2-Realの精度を向上させるための重要なポイントをご紹介します!

Point 1: 学習用データ

シミュレーションで生成する画像の「質」は、モデルの精度に直結します。特に重要なのがランダム性とリアリティです。

生成条件の設定

一般にモデルの汎化性能(未知の状況への対応力)を高めることが重要です。今回はシミュレーション上で可能なものについては条件をランダム化し、モデルに本質的な特徴のみを学習させるテクニックを用いました。具体的には、以下の2つのルールに沿って条件を設定しました。

  • 変動させる要素: 物体の配置、背景、照明の向き、カメラアングルなど、モデルの汎化性能を高めるために積極的にランダム化する条件。
  • 固定すべき要素: レンダリング方法(PBR)や影の有無など、現実世界でも一貫している、あるいは推論環境と揃えるべき普遍的な条件。

レンダリング方法の影響

画像のリアルさを左右する要素の一つに、レンダリング(描画)方法があります。特に、光の物理的な挙動をシミュレートする物理ベースレンダリング(PBR)は、現実世界とシミュレーション世界の見た目のギャップ(リアリティギャップ)を埋める上で極めて重要です。

学習段階ではライティングが不適切なデータ(レンダリングの設定がオフになっていた)で学習させても、「シミュレーション画像同士で評価」する限りは高い精度を示していましたが、「実画像で推論すると精度が著しく落ちる」という現象に遭遇した際は、原因がシミュレーション生成のうちのライティングの部分であることを特定することが非常に困難でした。

結論から言うと、不適切な照明で学習したモデルが生成する特徴ベクトルと、適切な照明下で撮影された実画像から生成される特徴ベクトルとの間に、大きな隔たりが生まれてしまったためです。モデルは照明環境の違いをそのまま特徴ベクトルの違いとして出力してしまい、結果としてベクトル間の距離が遠く(=類似度が低い)なったことで、正しく分類できなかったのです。

ライティングの違い

この経験から、今回のように中規模のSim2Realを用いた距離学習においては、実世界の照明環境を適切に再現し、特徴ベクトル間の距離が正しく計算されるようにすることが、重要であるという知見を得ることができました。※

※ これはやや厳密ではなく、Sim2Realの学習においてはシミュレーションデータセットが実世界の状況を包含していれば適切に動作するとされる(ドメインランダム化)と言うことが主張されている。今回のプロジェクトの序盤では、レンダリング設定がオフとなっており、包含しない状況になっていた。設定をオンもオフもやりながら生成するならいわゆるドメインランダム化の考え方が適用できるはずではある。

Point 2: 推論用のデータ

推論時の参照用画像の用意方法

顔認証モデルを学習・推論させる際、顔の輪郭を正確に切り出してデータにするのと同様に、私たちのタスクでも、対象物が画像内で適切な大きさで写っていることが重要でした。当初、カメラの位置を広くランダム化しすぎた結果、対象物が小さく写った画像も生成されてしまいました。これらをそのまま推論時の参照用画像に用いた場合と、適切にトリミングされた画像を用いた場合とでは、精度に大きな差が生まれました。

トリミングカメラ距離の違い

距離学習においては、この比較が示す通り、対象物があまりに小さく写った画像は、モデルにとって有益な情報よりも無関係な背景情報が多くなりすぎ、学習・推論の「ノイズ」として作用してしまいます。つまり、モデルが物体の本質的な特徴ではなく、背景や照明の違いを「差」として誤認識してしまい、精度が著しく低下します。

このことから、「参照用画像は常に対象物を中心に適切にトリミングする必要がある」という、このテクニックを実践する上で非常に基本的で見落とされがちですが重要な知見を得ることができました。

条件を一致させた場合とそうでない場合でAccuracyが約0.3も異なるという衝撃的な結果になりました。

結果

今回の検証では、上記のポイントに従い画像を生成して学習させました。実画像を用いて評価したところ、9割近い精度を達成しました。 モデルが経験する画像の枚数の増加に伴い精度が向上しました。

実画像からなる評価データセットに対する精度と学習枚数の関係性

展望

本検証では、まず現実世界で起こりうる範囲(物体の配置、背景、照明の向き、カメラアングルなど)で多様性を確保する、いわば現実準拠のランダム化に取り組み、大きな成果を上げてきました。今後の精度向上の指針は、現在の性能の天井を打破するため、ランダム化の範囲を物理的な制約の外にまで拡張した、より積極的なドメインランダム化を導入することです。このアプローチにより、モデルが未見の状況に対してさらに頑健になることを期待しています。


終わりに

本記事では、シミュレーション画像を用いた距離学習モデルの構築方法と、その精度を最大化するための重要なポイントについて解説しました。

今回ご紹介した一連の検証と貴重な知見は、中心となってこの課題に取り組んでくれたインターン生の探究心と実行力なくしては得られませんでした。この場を借りて、彼の素晴らしい貢献に深く感謝します。 ちなみにこのモデルは、別記事で紹介したCore MLフレームワークを用いてiPhone上へ実装され、実際に動作するところまで漕ぎ着けました。 tech.akariinc.co.jp

燈では、このようにインターン生の皆さんにも圧倒的当事者意識を持って、ビジネスの現場に直結する本格的な技術課題に挑戦してもらっています。リアルな課題解決を通じて自身の技術力を試してみたい、成長させたい、と考えている皆さん(インターン生も中途も!)。もしご興味があれば、ぜひ弊社の採用情報もチェックしてみてください。

We’re Hiring!

燈では、最新論文を社会実装するAIエンジニアを募集しております!

興味がある方は、ぜひカジュアル面談でお話しましょう!🔥

akariinc.co.jp