[テクニカルレポート]Directions in synthetic data development

## Info
- タイトル：Synthetic Data for Deep Learning
- 著者：Sergey I. Nikolenko
- 論文：https://arxiv.org/abs/1909.11512

## 概要
テクニカルレポートの5章にある、コンピュータビジョン領域の人工データ活用の方向性について概要を見る。

## 手法
### Domain randomization

Domain randomizationが明示的に命名された論文は[この論文](https://arxiv.org/abs/1703.06907)[^1]。

[^1]: Josh Tobin, Rachel Fong, Alex Ray, Jonas Schneider, Wojciech Zaremba, Pieter Abbeel, *"Domain Randomization for Transferring Deep Neural Networks from Simulation to the Real World"*, 2017

人工データ$D_{\mathrm{syn}}\sim P_{\mathrm{syn}}$で学習し、実データ$D_{\mathrm{real}}\sim P_{\mathrm{real}}$を推論するモデルを考える。
Domain randomizationの考え方は簡単で、合成データ分布$P_{\mathrm{syn}}$を十分に広く、多様にすることで、モデルが$P_{\mathrm{real}}$でうまく動作するようにロバスト性を持たせるというもの。

コンピュータビジョンにおける合成データは、3Dシーンの構築や2D画像のレンダリングのレベルで、様々な方法でランダム化し、多様化させることができる。

- シーン構築レベルでは、合成データ生成器（SDG）は、オブジェクトの数、その相対位置と絶対位置、遮蔽オブジェクトの数と形状、背景、オブジェクトのテクスチャなどをランダムにすることができる。
- レンダリングレベルでは、照明条件、特に光源の位置、方向、強度のランダム化、画像解像度、レイトレーシングなどのレンダリングタイプや他のオプションの変更によるレンダリング品質の変更、結果画像へのランダムノイズの付加などが可能である。

実データが少量で、十分量生成されたランダム合成データ（特に大量のランダムテクスチャ）があるときにDomain randomizationは有効である。

[こちらの論文](https://arxiv.org/pdf/1804.06516.pdf)[^2]では、以下の手順で合成データで物体検出モデルの学習を行った。

- ランダムな3Dシーンを作成し、そのシーンにランダムで関心のあるオブジェクトを配置する。
- 物体検出のためのネガティブなサンプルとして機能すると想定される多様な幾何学的形状、いわゆる*flying distractors*を追加する。
- すべてのオブジェクトにランダムなテクスチャを追加し、カメラパラメータや照明などのパラメータをランダム化する。

Virtual KITTI Datasetにおいて、R-FCNやSSDでは改善が見られた（R-CNNでは悪化した）。

<img width="600px" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/211712/500324db-1567-3550-d46f-5dcc523b0e1a.png">

[^2]: Jonathan Tremblay, Aayush Prakash, David Acuna, Mark Brophy, Varun Jampani, Cem Anil, Thang To, Eric Cameracci, Shaad Boochoon, Stan Birchfield, *"Training Deep Networks with Synthetic Data: Bridging the Reality Gap by Domain Randomization"*, 2018

以降、Domain Randomizationはいくつかの方向性に研究が進んでいる。

- Tobin[^3]は、ピッキングロボットの把持点特定にDomain randomizationを適用し、人工データのみで学習させた把持モデルを、現実的な物体にうまく転移させることができることが示された。
- Prakash[^4]は、*Structured Domain Randomization*という、特定のシーンの構造とコンテキストを考慮した現実的な範囲でランダム化する。
- Van Vuong[^5]は、Domain Randomizationを制御するパラメータをどのように決定するかといった問題にアプローチし、マルコフ決定過程で決定する方法を提案した。

[^3]: Joshua Tobin, Lukas Biewald, Rocky Duan, Marcin Andrychowicz, Ankur Handa, Vikash Kumar, Bob McGrew, Jonas Schneider, Peter Welinder, Wojciech Zaremba, Pieter Abbeel, *"Domain Randomization and Generative Models for Robotic Grasping"*, 2017
[^4]: Aayush Prakash, Shaad Boochoon, Mark Brophy, David Acuna, Eric Cameracci, Gavriel State, Omer Shapira, Stan Birchfield, *"Structured Domain Randomization: Bridging the Reality Gap by Context-Aware Synthetic Data"*, 2018
[^5]: Quan Vuong, Sharad Vikram, Hao Su, Sicun Gao, Henrik I. Christensen, *"How to pick the domain randomization parameters for sim-to-real transfer of reinforcement learning policies?"*, 2019


### Computer Graphics Imaging (CGI) による画像生成の発展

CGI生成におけるリアリズムの付加には、2つの方向性がある。

1. よりリアルなオブジェクトを作ること。オブジェクトの自然な変形を3Dモデルでシミュレートするものや、データから類似画像を合成するために必要なレンダリングパラメータを推定するものがある。
2. より現実的な「センサ」を作ること。実際のカメラ／センサのノイズ特性を模倣した合成データの後処理を導入することである。

また、特定の分野の合成データ生成を改善するドメイン固有の開発も数多く行われている。

### 実データを合成した合成データセット構築

また、合成データとデータ補強の境界に位置するものとして、異なる実画像の組み合わせや融合により、より大規模で多様な学習用画像群を生成することも注目されている。これは、合成画像のレンダリングにCGIを使用する必要はないが、実画像のデータセットが必要である。

[^6]: Christian Eggert, Anton Winschel, Rainer Lienhart, *"On the Benefit of Synthetic Data for Company Logo Detection"*, 2015


- Eggert[^6]は、企業ロゴの検出に集中している。彼らは合成画像を生成するために、ロゴがはっきりと見える少数の実際のベース画像とセグメンテーションマスクを供給し、ランダムなワープ、色変換、ぼかしを適用し、新しい背景画像に修正（セグメント化）されたロゴを貼り付けて、ロゴ検出結果を向上させている。

この分野はDwibediらによるCut, Paste, and Learnアプローチ[^7]から本格的に始まった。

- オブジェクト検出器の学習にはパッチレベルのリアリズムのみが必要であるという仮定に基づいている。
- オブジェクトのインスタンス画像をセグメンテーションモデルで切り出し（インスタンス画像はセグメンテーションがほぼ完璧に機能するほど単純であると仮定する）、スケールやシーン構成を考慮せずに、ランダムな背景に貼り付ける。
- 貼り付け後の境界の影響を緩和するために、異なる古典的なコンピュータビジョンのブレンドアプローチ（例えば、ガウスブレンドとポアソンブレンド[^8]）を比較し、インスタンス検出結果の改善している。

[^7]: Debidatta Dwibedi, Ishan Misra, Martial Hebert, *"Cut, Paste and Learn: Surprisingly Easy Synthesis for Instance Detection"*, 2017
[^8]: Perez Patrick, Gangnet Michel, Blake Andrew, *"Poisson image editing"*, 2003



その後の研究は、より現実的な合成データセットを生成するために、このアプローチを拡張している。

- Dvornik[^9]は、画像の所定のバウンディングボックスにどのようなオブジェクトを配置できるかを予測する別のモデルを使用した手法を提案した。
- Wang[^10]は、訓練セットの同一クラスのインスタンスを入れ替える手法を提案した。この方法では、コンテクストが自動的に正しくなり、形状やスケールも考慮することができる。また、Wangらは、インスタンス切り替えを利用して、訓練セットのクラス間のインスタンスの分布を調整し、スコアの高いクラスに対してより多くの切り替えを追加することで、クラスの重要性を考慮することを提案している。

[^9]: Nikita Dvornik, Julien Mairal, Cordelia Schmid, *"Modeling Visual Context is Key to Augmenting Object Detection Datasets"*, 2018
[^10]: Hao Wang, Qilong Wang, Fan Yang, Weiqi Zhang, Wangmeng Zuo, *"Data Augmentation for Object Detection via Progressive and Selective Instance-Switching"*, 2019

条件付き生成モデルの発展により、この分野はカットアンドペーストを超えた、より複雑な条件付き生成、通常画像融合と呼ばれるものへ発展した。

### 生成モデルによる人工データの構築

植物の画像における葉の数え方を扱った研究がある。GiuffridaらによるARIGAN[^11]は葉の数を条件としてアラビドプシス植物の画像を生成し、Zhuらはセグメンテーションマスクを条件として同じものを生成し[^12]、Kuznichovら[^13]は葉の幾何構造を保持する合成的に拡張されたデータを生成し、すべての研究が計数の改善を報告している。

[^11]: Mario Valerio Giuffrida, Hanno Scharr, Sotirios A Tsaftaris, *"ARIGAN: Synthetic Arabidopsis Plants using Generative Adversarial Network"*, 2017
[^12]: Yezi Zhu, Marc Aoun, Marcel Krijn, Joaquin Vanschoren, *"Data Augmentation using Conditional Generative Adversarial Networks for Leaf Counting in Arabidopsis Plants"*, 2018
[^13]: Dmitry Kuznichov, Alon Zvirin, Yaron Honen, Ron Kimmel, *"Data Augmentation for Leaf Segmentation and Counting Tasks in Rosette Plants"*, 2019

生成モデルによって純粋にゼロから合成データを生成するような印象的なアプリケーションを見つけることは難しく、これは原理的な限界なのかもしれない。

関連するが異なる分野として、敵対的アーキテクチャに基づくセグメンテーションや他のコンピュータビジョン問題に対する教師なしアプローチがある。これにはカットアンドペーストによるセグメンテーションの学習[^14]、インペインティングによる画像ペア間のオブジェクト移動による教師なしセグメンテーション [^15]、注釈なし医療画像から学ぶセグメンテーション [^16] などがある。これらは合成データそのものではないが、一般にコンピュータビジョンにおける教師なしアプローチは、合成データの利用において重要なトレンドになると予想される。

[^14]: Tal Remez, Jonathan Huang, Matthew Brown, *"Learning to Segment via Cut-and-Paste"*, 2018
[^15]: Pavel Ostyakov, Roman Suvorov, Elizaveta Logacheva, Oleg Khomenko, Sergey I. Nikolenko, *"SEIGAN: Towards Compositional Image Generation by Simultaneously Learning to Segment, Enhance, and Inpaint"*, 2018
[^16]: Yizhe Zhang, Lin Yang, Jianxu Chen, Maridel Fredericksen, David P. Hughes, Danny Z. Chen, *"Deep adversarial networks for biomedical image segmentation utilizing unannotated images"*, 2017

## まとめ・感想
- 手軽に試せる人工データ生成はDomain randomizationと実データを合成した合成データセット構築かな。
- Domain randomizationのパラメータをMDPで決定する方法は、結局GANに取り込まれそう。
- 極少数実データのGANが出来れば、GANも選択肢に入りそう。
- データを生成するよりもFew-shot learning等が時間の節約や電気代的に有利か？