深層学習のための Image Data Augmentation（2：深層学習を用いた手法）

## 0. 本記事の概要
[前回の記事](https://qiita.com/syezo/items/d9bb6db9ba2f5163b3ae)では、[A survey on Image Data Augmentation for Deep Learning](https://link.springer.com/article/10.1186/s40537-019-0197-0)で紹介されている**基本的なData Augmentation手法**を中心に説明を行いました。今回の記事は、**深層学習を用いたData Augmentation手法**に焦点を当てて、説明を行いたいと思います。

- [深層学習のための Image Data Augmentation（1：基本的な手法）](https://qiita.com/syezo/items/d9bb6db9ba2f5163b3ae)
- 深層学習のための Image Data Augmentation（2：深層学習を用いた手法）**←本記事**
- 深層学習のための Image Data Augmentation（3：メタ学習を用いた手法）**（準備中...）**

## 1. 深層学習を用いたData Augmentation手法

今回は、下の図のDeep Learning Approachesに焦点を当てて説明を行います。
<img width="550" alt="コメント 2020-06-17 170929.png" src="https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/642312/eb1e9cae-ef30-aa9c-43ff-6ef9544d5522.png">

前回の復習になりますが、「**Data Augmentation**」の手法は様々存在する中、大きく2つに分けられます。
**1. Data Warping Augmentation : データのラベルを保持しつつ加工を行うことで増強**
**2. Oversampling Augmentation : データから新しいデータを生成することで増強**
つまり、「**加工**」するか「**生成**」するかで分けられています。

|   Data Warping Augmentation    |   Oversampling Augmentation    |    
|:----------------|:-----------------|
|Geometric Transformations|Mixing Images|
|Color Space Transformations|<font color="HotPink">**Feature Space Augmentations**</font>|
|Kernel Filters|<font color="HotPink">**Generative Adversarial Networks (GANs)**</font>| 
|Random Erasing|-|
|<font color="HotPink">**Adversarial Training**</font>|-|
|<font color="HotPink">**Neural Style Transfer**</font>|-|

今回Deep Learning Approachesとして扱う手法は、「**加工**」からは<font color="HotPink">**Adversarial Training**</font>と<font color="HotPink">**Neural Style Transfer**</font>、「**生成**」からは<font color="HotPink">**Feature Space Augmentations**</font>と<font color="HotPink">**Generative Adversarial Networks (GANs)**</font>となります。

### 1.1 Feature Space Augmentation
Feature Space Augmentationについて説明を行います。

|   Data Warping Augmentation    |   Oversampling Augmentation    |    
|:-----------------|:------------------|
|Geometric Transformations|Mixing Images|
|Color Space Transformations|<font color="HotPink">**Feature Space Augmentations**</font>|
|Kernel Filters|Generative Adversarial Networks (GANs)| 
|Random Erasing|-|
|Adversarial Training|-|
|Neural Style Transfer|-|

Feature Space Augmentationでは、Neural Networkによりマッピングされる低次元ベクトルに対してAugmentationを行います。Neural Networkを通して、低次元ベクトルへと変換されているデータであればAugmentationが可能なため、画像だけではなく様々なデータに適用可能性があるのが利点です。

本論文では、以下の2つの手法に関して言及がされていました。

- [Icing on the Cake](https://arxiv.org/abs/1807.06540)
- [Dataset Augmentation in Feature Space](https://arxiv.org/abs/1702.05538)

以下でそれぞれの手法について説明を行います。

#### 1.1.1 Icing on the Cake [[74](https://arxiv.org/abs/1807.06540)]

Icing on the Cakeとは洒落た名前ですが、手法のどこかの頭文字をとっているわけではなく、「Icing on the Cake」の英訳「花を添える喜び」から来ているそうです。Dataを花というあたり、洒落てるけど何か悟ってそうですね。ちなみに著者は日本人の方でした。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/642312/6c971ed1-4bcc-8d77-1743-96308bdae354.png)

こちらは[元論](https://arxiv.org/abs/1807.06540)から引用した図ですが、手法自体はシンプルのように見えます。各ステップは以下のようになっています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/642312/a0a53a5e-ed42-94c9-1424-4db9006b9546.png)

まずは通常通りDNNを学習します。
次に分類層直前の特徴ベクトルを取り出します。
さらにこの特徴ベクトルのみを用いて再学習します。
最後に再学習した分類器を元のDNNに付けなおします。

この手法のいいところは、
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/642312/39cb23ff-2487-618b-c7c1-b944a90b8360.png)
簡単にトライできる。
再学習に時間がかからない。

でした。

CIFAR-100に対して、ResNetを適用した実験では、しっかりと精度向上が確認されています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/642312/37798f1a-be76-c220-3c9b-97994de5aefc.png)

#### 1.1.2 Dataset Augmentation in Feature Space [[75](https://arxiv.org/abs/1702.05538)]

この手法では、LSTM-autoencoderを用いて得られた特徴ベクトルに対して

(a) ガウスノイズ付与
(b) Interpolation（補間）
(c) Extrapolation（外挿）

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/642312/aaccf2ee-1954-08f3-ffde-5b66d77bffd7.png)

上の図において、(a)では$c$にガウスノイズの付与を行います。また、(b)と(c)では、$c$と$c_k$に対して、InterpolationおよびExtrapolationを行います。$c_k$とは、$c$の近傍点のことで、元論では$k=3$としています。InterpolationとExtrapolationの違いは、[こちら](https://jp.midasuser.com/building/support/keyword_view.asp?idx=1263&pg=10&sk=&bid=70&nCat=&multi_search=&searchRe=&nIndex=&sHtml=)のサイトでわかりやすく説明されていました。


下の図は、InterpolationによるData Augmentationの例です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/642312/c11443a8-3f66-0374-121c-9aedbc5f15be.png)


LSTM-autoencoderを使用している手法であり、画像だけでなく時系列データなどにも適用可能ということが示唆されます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/642312/4b466f67-f33e-975c-7e65-4fb558103bac.png)

上の表は、MNISTよCIFAR-10に対してExtrapolationによるData Augmentationを行った際の精度向上を示しています。

#### 1.1.3 Feature Space Augmentationのまとめ
Feature Space Augmentationの利点としては、autoencoderの利用によりデータの生成が容易にできる点やナイーブベイズやsupport vector machine (SVM)などの機械学習手法にも特徴ベクトルをそのまま用いることができる点です。欠点としては、特徴ベクトルの解釈が難しい点や計算時間の問題が挙げられていました。また、画像に対して直接Data Augmentationができる場合は、そちらの方が良いという[報告](https://arxiv.org/abs/1609.08764)もされているようです。

### 1.2 Adversarial Training
Adversarial Trainingは、Adversarial Examplesという、モデルに誤認識させるデータを使って、モデルの頑健性を向上させようという考え方です。論文では、下の代表的な画像で例が紹介されています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/642312/9a3d7777-8ab7-0109-7c8d-a261b8c6d646.png)
これは、"panda"（パンダ）の画像に"nematode"（.007×なのでとても小さいノイズ）を加えると、"gibbon"（テナガザル）と誤分類される例です。このようなAdversarial Examplesを使って学習を行うことで、人間が直感的に気付きにくい部分の**Data Augmentation**が実現し、モデルの頑健性が向上します。この例の手法は、Fast Gradient Sign Method [[81](https://arxiv.org/abs/1412.6572)]としてGoogfellowらによって提案されています。以下では、Adversarial Trainingの考え方で成り立つ代表的なその他の手法をいくつか紹介します。

#### 1.2.1 DeepFool [[77](https://www.cv-foundation.org/openaccess/content_cvpr_2016/html/Moosavi-Dezfooli_DeepFool_A_Simple_CVPR_2016_paper.html)]
DeepFoolは、上で紹介したFast Gradient Sign Method [[81](https://arxiv.org/abs/1412.6572)] よりも小さなノイズを入れます。下の図の上側がDeepFool、下側がFast Gradient Sign Methodの元画像とノイズの例です。この手法でのノイズの入れ方は、分類境界からの距離に基づいて決められるそうです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/642312/9138bd71-f400-df72-b819-9fa9b2b0ec1e.png)

データ$x_0$があるとき、分類境界を超えるように移動させることができれば、誤分類を起こさせるサンプル（Adversarial Examples）を作ることができます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/642312/88eac453-dc83-4e4c-7854-09927c0966c9.png)

ここの移動の部分だけで良いので、ノイズが少なくなると解釈しています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/642312/9138bd71-f400-df72-b819-9fa9b2b0ec1e.png)

下の例では、"lionfish"の画像に、人間の目には確認できないようなノイズを入れるだけで、"hen"（にわとり）と識別されていることが分かります。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/642312/9f437db8-c468-f7ac-4760-11ac56bb567e.png)


#### 1.2.2 One Pixel Attack [[78](https://ieeexplore.ieee.org/abstract/document/8601309)]
One Pixel Attackdは、たった1ピクセルですが、変化を与えることで誤分類を起こすというものです。下の図では、黒文字が元のクラス、青文字が1ピクセル変化（画像中に見える小さな点）させた後のクラスとその確率値です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/642312/28f54715-9917-8936-92c6-fcc402c88bd0.png)
たった1ピクセルの違いで、これだけ分類結果が変わっていることからも、これらのモデル（AllConv、NiN、VGG）の頑健性の低さが示唆されます。この手法では、差分進化（Differential Evolution）という考え方を利用して、より少ない変化で、より多くの種類のネットワークを誤分類させることを実現しています。実験結果より、CIFAR-10データセットの画像の67.97%とImageNetデータセットの画像の16.04%が、わずか1ピクセルを修正するだけで、平均74.03%、22.91%で誤分類することを確認しています。


#### 1.2.3 DisturbLabel [[84](https://openaccess.thecvf.com/content_cvpr_2016/html/Xie_DisturbLabel_Regularizing_CNN_CVPR_2016_paper.html)]
DisturbLabelは、入力画像ではなく、ラベルに変化をもたらそうという手法です。敢えて誤ったラベルで学習を行うことで、過学習を防ぐことが狙いです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/642312/82329b45-2026-50f2-7e0a-4520e7869a30.png)

上の図では、MNISTデータセットでの学習の際に、各バッチごとにラベルをランダムに変更しています。こんなんでうまくいくのかという感じがしますが、実験では、以下のように、MNISTデータセットとSVHNデータセット（いずれも数字に関するデータセット）で誤り率の低下が確認されています。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/642312/413cd9ee-bb44-8411-d698-6db21e89de57.png)


#### 1.2.4 Adversarial Trainingのまとめ
ここまで、Adversarial Trainingとして、入力画像に対して変更を加えるAdversarial Examplesに関する手法、ラベルを変更する手法について説明を行いました。いずれもCNNの弱点を突くような手法が目立ち、それぞれモデルの頑健性にの向上を目標としています。その他の手法としては、Adversarial Trainingの損失関数に歪みを抑制する新たな項を加えることで、頑健性の高いモデルを学習しようという手法[[83](https://arxiv.org/abs/1804.07757)]もあるようです。

#### 1.3 GAN based Data Agmentation
Generative Adversarial Network (GAN)は、**Data Augmentation**への応用として期待されています。Bowlesら[[85](https://arxiv.org/abs/1810.10863)]は、GANをデータセットから新たな情報を「解き放つ手段」として説明しています。GANは計算速度が速いにも関わらず、良質な結果をもたらすことから注目を集めています。同じ生成モデルの1つとしてVariational Auto-encoder (VAE)があります。VAEは、入力画像（入力特徴）をガウス分布が仮定された低次元空間で表現します。GANとVAEを組み合わせることで、さらなる精度向上も報告されています[[31](http://papers.nips.cc/paper/5423-generative-adversarial-nets)]。



GAN[[31](http://papers.nips.cc/paper/5423-generative-adversarial-nets)]は、敵対的生成ネットワークと呼ばれ、下の図（[[A Beginner's Guide to Generative Adversarial Networks (GANs) | Skymind](https://pathmind.com/wiki/generative-adversarial-network-gan)]より引用）のように、Disciriminatorに本物と識別させようと、本物に近い偽物を生成しようとするGeneratorと、本物と偽物を識別しようとするDiscriminatorから構成され、これらを敵対的に学習します。詳しくは、他のサイトなどを眺めてみてください。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/642312/52bfc022-0520-2ce4-77e1-e51579abbef4.png)



GAN[[31](http://papers.nips.cc/paper/5423-generative-adversarial-nets)]におけるGeneratorとDiscriminatorのネットワークには、多層パーセプトロン（MLP）が採用されています。MLPでは、MNISTデータセットのように、低次元（28×28×1）なデータに対しては十分な結果をもたらします。しかし、ImageNetデータセットやCIFAR-10データセットでは、画像サイズが256×256×3程度あり、約250倍のピクセル数になります。このような高解像度な画像の生成を可能とする拡張手法として、Deep Convolutional GAN (DCGAN)[[91](https://arxiv.org/abs/1511.06434)]、Progressively Growing GAN (PGGAN)[[34](https://arxiv.org/abs/1710.10196)]、CycleGAN[[92](http://openaccess.thecvf.com/content_iccv_2017/html/Zhu_Unpaired_Image-To-Image_Translation_ICCV_2017_paper.html)]、Conditional GAN[[95](https://arxiv.org/abs/1411.1784)]などが提案されており、これらは**Data Augmentation**への応用が期待されています。これら手法をベースとした**Data Augmentation**手法を以下で説明していきます。

#### 1.3.1 DCGAN [[91](https://arxiv.org/abs/1511.06434)]
DCGAN [[91](https://arxiv.org/abs/1511.06434)]は、GeneratorとDiscriminatorの内部複雑性を拡張するために提案されたアーキテクチャです。DCGANでは、下の図のように、MLPではなくCNNを使用します。この構造は、より高解像度の画像を生成することを可能とします。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/642312/62b05768-fa03-a7b3-1409-9106aed63554.png)

Frid-Adarら[[49](https://www.semanticscholar.org/paper/GAN-based-Data-Augmentation-for-Improved-Liver-Frid-Adar/5b059d30027edecfe2c4c5ed8dc054cd239982c5)]は、DCGANを利用して、肝病変の医療画像の**Data Augmentation**を行い、その有効性を確認しました。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/642312/55fac71b-d02e-5864-831a-7b0732af921b.png)
具体的に、上の図のようなネットワークを構築するし、**Data Augmentation**を行うことで、感度78.6%、特異度88.4%を感度85.7%、特異度92.4%まで上昇させました。これは、冒頭で話したコロナウイルスの件にも応用できそうです。

#### 1.3.2 PGGAN[[34](https://arxiv.org/abs/1710.10196)]
PGGANの概要図は下のようになっています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/642312/af8eea7c-79f0-d008-a1e3-4b3a21ff11d5.png)
PGGANでは、低解像度の画像から学習を始め、層を追加していくことで徐々に画像の解像度を上げていきます。 層を追加する際、ランダム要素が強く働き、Generatorの出力が安定しません。 そこで、PGGANでは下の図のように、追加した層の影響度を段階的に増やす方法をとっています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/642312/ed624759-5e49-7d07-5774-45b42001cdcc.png)
この方法によって、学習が安定化します。論文内では具体的な**Data Augmentation**手法は紹介されておりませんでしたが、調べたところ、胃炎画像や脳のMR画像に適用する手法が提案されていました。

#### 1.3.3 CycleGAN[[92](http://openaccess.thecvf.com/content_iccv_2017/html/Zhu_Unpaired_Image-To-Image_Translation_ICCV_2017_paper.html)]
CycleGAN[[92](http://openaccess.thecvf.com/content_iccv_2017/html/Zhu_Unpaired_Image-To-Image_Translation_ICCV_2017_paper.html)]は、各ドメインの分布を学習し、スタイル変換を行う際に、1対1のペア画像を必要とせず、さらにタスクに合わせて学習方法を変える必要がない手法です。詳しくは、以前に[こちらの記事](https://qiita.com/syezo/items/821ecf01dbd1ca9fbd4c)で紹介と実装を行っています。**Data Augmentation**を行う手法として、感情分類のタスクにおいてこのCycleGANを用いる手法[[93](https://link.springer.com/chapter/10.1007/978-3-319-93040-4_28)]が提案されています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/642312/44c872b5-2ef5-3e31-c555-d3fe8334370a.png)
この手法では、感情認識用のデータセットである、FER2013[[94](https://link.springer.com/chapter/10.1007/978-3-642-42051-1_16)]を用いて、不均衡データ（怒り、嫌悪感、恐怖、幸せ、悲しみ、驚き、中立）を解消するために**Data Augmentation**を行っています。ここでCycleGANは、下の図で表されるように、オーバーサンプリング（サンプル数を増やすため）に用いられています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/642312/50a5fdd8-10b2-6552-4c9c-3f403bc9b119.png)
実験では、分類精度が5~10%上昇していることが報告されています。下の図は、t-SNE[[87](http://www.jmlr.org/papers/v9/vandermaaten08a.html)]によって二次元空間に落とし込み可視化を行ったものです。a、b、c、dでそれぞれ**Data Augmentation**の条件を変えていますが、対象のラベルの分類境界がはっきりしていることが分かります。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/642312/e54f04b2-377b-326c-1924-d87ba87df99a.png)
#### 1.3.4 Conditional GAN[[95](https://arxiv.org/abs/1411.1784)]
Conditional GANは、下の図のように、ノイズデータ（z）だけではなく、条件データ（y）も与えながらGANの学習を行います。これにより、Conditional GANでは、特定の条件のデータの生成を実現します。ここでの「条件」はクラスラベルやテキストデータであることが多いですが、特に縛りはないので、他のデータでも適用可能です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/642312/3e686d9f-272f-ca90-800a-f79355792622.png)
[Pix2Pix](https://arxiv.org/pdf/1611.07004.pdf)は、画像データに対してConditional GANを導入した代表例です。Conditional GANを用いた**Data Augmentation**としては、CT画像や音声データに適用される例もあります。様々なデータに適用可能ということから、分野を選ばず、Conditional GANの応用が期待されます。
#### 1.3.4 GAN based Data Agmentationのまとめ
GANの適用可能性に期待が持てますが、現時点では、高解像度の出力を得ることの困難さが課題として挙げられています。Generatorが生成する画像の出力サイズを大きくすると、学習が不安定になり、変換がうまくいかない可能性があります。また、GANは、学習データを大量に必要とします。**Data Augmentation**を行う前の元のデータセットによっては、GANは良い解決策になり得ないと思います。Salimansら[[99](http://papers.nips.cc/paper/6124-improved-techniques-for-training-gans)]は、GANの学習に関する問題点をより詳細に説明しています。こちらの文献も参照することで適切な**Data Augmentation**手法の選択ができるかもしれません。

#### 1.4 Neural Style Transfer
Neural Style Transferとは、画風変換と呼ばれ、ある画像のスタイルを〇〇風に変換するような技術です。具体的には下の図（CycleGAN[[92](http://openaccess.thecvf.com/content_iccv_2017/html/Zhu_Unpaired_Image-To-Image_Translation_ICCV_2017_paper.html)]の文献より引用）のように、写真をモネ風、ゴッホ風、セザンヌ風、浮世絵風に変換するような処理のことを指します。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/642312/a0e72575-c3e3-fd72-fdf7-761665c12122.png)
GAN based Data Augmentationの節でも紹介したCycleGAN[[92](http://openaccess.thecvf.com/content_iccv_2017/html/Zhu_Unpaired_Image-To-Image_Translation_ICCV_2017_paper.html)]は、Neural Style Transferの代表例です。GAN based Data AugmentationでのCycleGANは顔画像へ適用されており、画風変換とは違った意味合いを持つので、そちらで紹介されていたのだと思います。以下では、Neural Style Transferを用いた**Data Augmentation**手法として、Style Augmentation[[103](http://openaccess.thecvf.com/content_CVPRW_2019/papers/Deep%20Vision%20Workshop/Jackson_Style_Augmentation_Data_Augmentation_via_Style_Randomization_CVPRW_2019_paper.pdf)]、Domain Randamization[[104](https://ieeexplore.ieee.org/abstract/document/8202133/)]、Playing for Data[[106](https://link.springer.com/chapter/10.1007/978-3-319-46475-6_7)]について説明を行います。

#### 1.4.1 Style Augmentation[[103](http://openaccess.thecvf.com/content_CVPRW_2019/papers/Deep%20Vision%20Workshop/Jackson_Style_Augmentation_Data_Augmentation_via_Style_Randomization_CVPRW_2019_paper.pdf)]
Style Augmentation[[103](http://openaccess.thecvf.com/content_CVPRW_2019/papers/Deep%20Vision%20Workshop/Jackson_Style_Augmentation_Data_Augmentation_via_Style_Randomization_CVPRW_2019_paper.pdf)]は、[こちらの文献](https://arxiv.org/pdf/1705.06830.pdf)のStyle Transfer手法をもとに、下の図のように、色、テクスチャ、コントラストのスタイル変換を**Data Augmentation**として用いています。この際、スタイル画像を[Painter by Numbersデータセット](https://www.kaggle.com/c/painter-by-numbers)からランダムに抽出して用いております。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/642312/b3b2a3ca-f1b3-5cf2-46a6-d8b25514d073.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/642312/63844ffb-736f-91f6-7bb4-81a1cf6c463f.png)
実験では、Style Augmentationと従来の**Data Augmentation**手法を組み合わせることで精度向上を確認しています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/642312/da0ea6de-78a8-1008-0299-d84d947e4050.png)
この手法は、ドメインシフトに対するロバスト性を大幅に向上させ、ドメイン適応に代わるシンプルでドメインに依存しない代替手段として使用できると言われています。
#### 1.4.2 Domain Randamization[[104](https://ieeexplore.ieee.org/abstract/document/8202133/)]
この論文では、物体（撮像されている）をロボットで掴むという動作のシミュレーションを目的とした画像の**Data Augmentation**を行います。イメージは下の図です。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/642312/7b2b8162-3008-3b3c-2544-360cd0e532de.png)
照明の位置・数、カメラの位置・視野・向き、テーブル上の物体の数・形状、画像に付与するノイズなど、様々な条件をランダムに設定することで**Data Augmentation**を行います。**Data Augmentation**によってシミュレーションの精度向上を確認した初めての論文といわれています。これらの画像から深層学習を用いて実現するロボット制御では、誤差1.5cm以内（物体検知）の精度を達成しています。
#### 1.4.3 Playing for Data[[106](https://link.springer.com/chapter/10.1007/978-3-319-46475-6_7)]
セマンティックセグメンテーションタスクにおけるアノテーション作業は、一枚の画像に一つのラベルを付与するアノテーションとは違い、ピクセルレベルでの領域アノテーションが必要となり、領域のクラス数が増えれば増えるほど労力が莫大となります。これは深層学習を行う上で大きな外壁となり、"curse of dataset annotation"（アノテーションの呪い）と呼ばれています。ここで、Playing for Data[[106](https://link.springer.com/chapter/10.1007/978-3-319-46475-6_7)]では、[Grand Theft Auto V](https://www.rockstargames.com/V/jp)（グラセフ5）のゲーム画像を用いて画像とその領域アノテーションの**Data Augmentation**を行います。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/642312/f7d82f7a-159f-e49f-22dc-7f4029b4ac26.png)
最近のゲームは実に写実的で、現実との区別もつかなくなってきています。領域アノテーションは、[detouring](https://static.usenix.org/publications/library/proceedings/usenix-nt99/full_papers/hunt/hunt.pdf)と呼ばれる技術を使って取得しているようです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/642312/d8f450dc-7dd1-b30b-06b7-1f6b7da74782.png)
かなり細かい領域までのアノテーションが正確にできます。個人的には、この**Data Augmentation**は、かなり理にかなっているなという気がしました。[CamVidデータセット](http://mi.eng.cam.ac.uk/research/projects/VideoRec/CamVid/)や[KITTIデータセット](http://www.cvlibs.net/datasets/kitti/)を用いだ実験で、精度向上が確認されました。
(上：Camvidデータセット、下：KITTIデータセット)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/642312/21359b89-aeb3-d376-f073-6b97e711c6cd.png)
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/642312/61adc4d5-43a0-9df8-7e1e-5529326e2429.png)
さらに、1枚の画像に60~90分かかると言われている領域アノテーション作業をこの手法では、約7秒（49時間/25,000枚）のオーダーまで短縮することを可能としました。ゲームだから取得できるデータ、車に人が轢かれる映像なんかはこういうゲームを使うと深層学習の適用ができ、交通×AIが発展するのでは、と私は思います。

#### 1.4.4 Neural Style Transferのまとめ
Neural Style Transferは非常に魅力的で、可能性を感じる**Data Augmentation**手法です。しかし、Neural Style Transferの欠点は、画像の画風変換を行う際のスタイル画像を選択の難しさです。このスタイル画像の選び方を失敗すると、データセットにかえってバイアスを与えてしまいかねません。このような問題を考慮しながら、他の**Data Augmentation**手法と組み合わせたりし、様々なタスクに応用していくことが大事です。

### 2 まとめ
本記事では、**深層学習のための Image Data Augmentation（2：深層学習を用いた手法）**と題して、[A survey on Image Data Augmentation for Deep Learning](https://link.springer.com/article/10.1186/s40537-019-0197-0)で紹介されている**深層学習を用いたData Augmentation手法**を中心に説明を行いました。**基本的な手法Data Augmentation手法**、**メタ学習を用いたData Augmentation手法**は以下のの記事で紹介しています。気になる方は是非ご覧ください。

- [深層学習のための Image Data Augmentation（1：基本的な手法）](https://qiita.com/syezo/items/d9bb6db9ba2f5163b3ae)
- 深層学習のための Image Data Augmentation（2：深層学習を用いた手法）**←本記事**
- 深層学習のための Image Data Augmentation（3：メタ学習を用いた手法）**（準備中...）**