📌

既存のラベル付きデータセットから、新たなラベル付きデータを生成する方法

2 min read

既存のラベル付きデータセットから、新たなラベル付きデータを生成する方法

学習データセットを自動生成する方法として、カメラ系のタスクであれば、Unityなどを使って、3DCGを使って合成するという手があります。CGでデータセットを構築する方法は、現状全く学習データがなかったたり、実データを収集することが困難である場合に非常に有用です。3DCGを合成する場合、3Dのモデルやシーンの構築が必要だったり、そういったことをやってくれる専用のサービスなどを利用する必要があり、そういう点では時間とお金がかかりますが、その時間コストと実データ収集のコストを天秤に欠けて採用するのはありだと思います。

実データの収集やアノテーションが低コストな場合、実データを収集してアノテーションしてしまったり、CGと組み合わせるという手があり、そのような方針を取っているプロジェクトがネット上の情報を見る限り多そうです。

また、CGと実データを組み合わせる方法もあり、組み合わせた場合、モデルの性能向上につながることはわかっていますが、合成データと実データの最適な配分を決定する方法が確立しているわけではなく、性能やデータを管理しながら学習データ構築を進めていくことが主となると思います。

本記事では、実データ収集+アノテーションがメインのプロジェクトを対象に、
ラベル付きのデータセットすでに持っているデータセットから、データとラベル(データも)を自動的に生成するための手法を解説します。

ラベルとデータ自体を完全に自動で生成する手法

ラベルとデータをGANで生成するようなものは研究レベルであると思いましたが、
さくっと調べたところ、特に見当たりませんでした。

自動のData Augmentation

通常、Data Augmentationというと、ルールベースで古典的な手法を組み合わせたものですが、
GANを使って、データから自動的にData AugmentationをGANでやるような手法もあります。ただ、学習データセットの数が少ないかつ、極端にClass Imbalanceが強い場合にのみ、通常のData Augmentationと比較して強い手法のようで、学習データセットの数が多い場合は、特に差がなかったようです。しかも、これが2021年時点の論文で、まだClassificationができたという段階のようで、もう少し実用的なものが出るまで待つ必要がありそうです。

ルールベースのデータセット生成と使える技術

現時点では、ルールベースのデータセット生成を作る技術が最も有用だと私は考えています。
ルールベースのデータセット生成に関する手法のうち、関連する研究も合わせて、面白いものをまとめます。

Copy & Paste系のData Augmentation

Cut & Paste系の手法は、すでにあるBoundingBoxやマスクつきの画像を他の画像に貼り付けることで、既存のラベル付きデータセットから、新たなラベル付きデータを生成する手法です。画像はInstance Seguemtationの例で、既存の2つのデータセットから、様々なバリエーションを持つラベル付きデータが生成されています。

この手法は、Object DetectionInstance Segmentationで有効であることが研究により明らかになっています。
特にサイズのJitteringと組み合わせることで、COCOベンチマークにおいて、約5mAPが向上しており、導入の容易さに対して、大きな効果が得られることがわかります。(論文グラフ)

ライブラリとしては、

  1. CAP_augmentation
  2. Copy Paste

があります。どちらも、AlbumentationというData Augmentationのライブラリと連携しているのでどちらを使ってもいいでしょうが、1のみがSemantic Segmentationに対応しております。

Discussion

ログインするとコメントできます