【論文読み】人工的に作った画像で物体検出の精度をあげる方法【Structured Domain Randomization】
今回は物体検出のデータセット拡張技術論文として「Structured Domain Randomization」について要点書いていきます。
読んだ論文のPDFはこちら。
arxiv.org
そもそもデータセットの拡張って何?
物体検出では大量の画像データを学習する必要があります。
画像データの数が不十分だと予測の精度が悪かったり、偏った画像データしかないと過学習に陥ることが予想されます。
これらの問題を解決するため、画像データを加工して人口的にデータの数を増やすというのがデータセットの拡張技術となります。
物体検出では、一般的に「Augmentation」というものが実装されています。
Augmentationについては前回の記事でもCutMixという手法について触れました。
yonesuke0716.hatenablog.com
今回の論文は、実際の画像データではなく、CG画像を使って画像データを増やすというのが特徴です。
Domain Randomazation
このような試みは結構前からありました。
やっぱり実際のデータを集めるの大変ですし、多様性のあるデータセットにしようとすると更に大変ですよね。
代表的な例としてDomain Randomazation(以下DR)というものがあります。
詳細は割愛しますが、簡単に言うとシミュレーション画像のカメラアングルや色、物体の位置等をランダム化することで、実世界にも適用できるデータセットを作ろうという試みです。
Structured Domain Randomization
では今回の「Structured」Domain Randomizationとは一体どういうものなのでしょう。
Structured Domain Randomization(以下SDR)は、まず自動運転向けのデータセットを前提としています。
この研究をしているのがNVIDIAです。
NVIDIAはUnreal Engineを用いて、よりリアルで現実世界に適用できる学習データの研究をしているんですね。
SDRの特徴を端的に述べると、ランダムはランダムでも意味のあるランダム化をするのが特徴です。
ドメイン配置アルゴリズム
まず初めにシナリオ(s)が決まります。
例えば田舎の2車線を走っているだとか、都会の4車線を走っている等の世界観が最初に決まります。
これが20パターンぐらいあるらしいのですが、それぞれのシナリオ内でのみ適用されるパラメータ(g)が決まってくるようです。
次にコンテキスト(c)として、太陽の角度や空の色、雲の密度や道路の状態など、出来上がった世界に細かい情報が付与されていきます。
最後にオブジェクトとして、車や人が配置されていくという順番で画像が構築されます。
これにより、例えば田舎の町にビルが建ったりだとか、都会に舗装されていない道路があったりとかがなくなるようになるわけです。
またDRでは車の上に人が立ってたり、歩道の上を車が走っているなど、現実的にはありえにくい画像データができていました。
そういった現実離れしたデータではなく、意味のある配置を行うことで現実世界に適用できるデータセットの生成を目指したというわけです。
一番下がSDRで、その他のシミュレーション画像との比較です。
精度も飛躍的に上がってます。
KITTIという自動運転のデータセットと組み合わせると、KITTI単体よりも精度があがるようです。
個人的にこの検証方法はいかがなものかなと思いながら読んでました。。
多分ですが、学習データの総数はKITTI+SDRの方がKITTI単体よりSDR分多くしてないかなこれ・・。
とはいえDRを混ぜると精度が下がるのに対して、SDRは上がっているという事実は意味としてとても大きいと思います。
仮想データが現実世界でも通用する時代
シミュレーションソフトとして、Unreal Engineを採用しているのも特徴です。
実はNVIDIAだけでなく、日本の企業のアイシン精機も似たような取り組みに挑戦しています。
先月以下の記事を見かけたのが、実は今回のブログを書くきっかけだったりします。
このような流れは、人間が仮想と現実の違いをどのように認識しているのかを追及する試みだと思います。
それをコンピュータービジョンでどう表現するか、そこが分かると、今までのCNNのような物体の塊単位ではなく、一枚の世界全体での物体同士の関連性が重要になる気がします。
何を言ってるかわからないかもしれませんが、最近注目されているTransformerのような技術がますます注目を浴びるのではないかということです。
今読んでるところです。
またまとめられそうなときにアップします。