クラウドの新サービスのアイコンを、DCGANで作ってみる

# このページについて
* パブリッククラウドの新サービス発表は、毎回楽しみなのですが、それとともに楽しみなのが **新サービスのアイコン** です。
* 大量の画像を学習させ、その画像群の特徴から **新たな人工的な画像を生み出す** DCGAN（Deep Convolutional Generative Adversarial Networks）という技術があります。
* このDCGANを利用し、深層学習によりパブリッククラウドの **新たなサービスアイコンを生み出してみよう** というのが本稿の趣旨です。
* AWSのGPUインスタンスを使い慣れる為の **肩慣らし程度** にやった内容なので、粗末な内容で恐縮です。
* なお、[このページ](https://qiita.com/shu223/items/b6d8dc1fccb7c0f68b6b)を参考にさせて頂いています。

---

# DCGANとは
* [ICLR2016のこの論文※](https://arxiv.org/pdf/1511.06434.pdf) にて提案された手法で、鑑別器と生成器により人工的な画像を生成します。
* この論文では、ベッドルームの画像を生成しているのですが、すごいクオリティです。（画像は論文から引用させて頂いています）
![image.png](https://qiita-image-store.s3.amazonaws.com/0/183826/bfb9f720-bdd2-101e-59a2-4e2bec610779.png)

---

# 今回やった事
* 上記の論文でやっていたことを図にするとこうです。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/183826/237d7978-1f97-23c4-f004-0754ec01c9fe.png)

* 今回試したのは、AWSのサービスアイコンを大量に学習し、新たな（未知の）アイコンを生み出してみたいと思います。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/183826/53ae944e-ebe6-a621-b977-445c8122a4f1.png)

---

# epoch毎の結果
* 学習はepochという単位を繰り返して進む為、各epoch毎にどんな出力がなされたかを見てみます。
* ここでは、**8×8の64個** のアイコンを同時に生成しています。

---

## （序盤）50 Epoch
* まだまだ、アイコンとは呼び難い。。。

![train_32_0002.png](https://qiita-image-store.s3.amazonaws.com/0/183826/03627043-7ec2-ac34-05b2-ac4a79e2c663.png)

---

## （中盤）100 Epoch
* ちょっと雰囲気変わり、アイコンぽくなったか。。？
* 色合いだけはAWSっぽいか?

![train_132_0002.png](https://qiita-image-store.s3.amazonaws.com/0/183826/f761df31-2223-f11c-dd98-22359ec44125.png)

---

## （終盤）500 Epoch
* あまり、雰囲気変わらず…
* 失敗の予感…

![train_499_0001.png](https://qiita-image-store.s3.amazonaws.com/0/183826/8f30427b-5209-749e-8ea2-bdfffe2c614d.png)

---

## （その後、粘り。。）1000 Epoch
* だめだ、、全然アイコンぽくない。。orz...

![train_732_0002.png](https://qiita-image-store.s3.amazonaws.com/0/183826/bda8b0c7-9712-e4bc-bb82-1d4fc0a1775c.png)

---

# ここまでの結論
* AWSのアイコン画像は、デザインの共通性はあるものの、色や形は様々
* その多様性を学ぶのに、学習データ（200枚～300枚）では、やはり学習できず。。

---

# そこで、、、
* AWSだけでは画像の枚数が足りないので、、、
* 主要クラウド３社のアイコンを学習し、新たなアイコン生成に挑戦してみた。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/183826/8bdd3b5c-d202-5bda-c644-e21253241b06.png)

---

## （序盤）10 Epoch
* まぁ、最初はこんな感じ。

![train_08_0010.png](https://qiita-image-store.s3.amazonaws.com/0/183826/000fb770-9fe2-8a13-1753-e61a3a1bd513.png)

---

## （中盤）100 Epoch
* なんか、AWSのときとは違い、アイコンぽくなってきた！

![train_127_0001.png](https://qiita-image-store.s3.amazonaws.com/0/183826/4df6d5eb-6e78-d5d4-a3d5-1a53b6f39325.png)

---

## （中盤２）200 Epoch
* 蛇みたいなアイコン。
* なんだろうこれ。。

![train_181_0007.png](https://qiita-image-store.s3.amazonaws.com/0/183826/b081a367-773f-318d-c823-2167285dec93.png)

---

## （終盤）450 Epoch
* 「お化け」みたいな円柱？DB？

![train_427_0001.png](https://qiita-image-store.s3.amazonaws.com/0/183826/12c148b4-03b1-3c3d-5d49-cb56068b2da3.png)

---

## （その後、粘り。。）900 Epoch
* そして、混沌の世界へ。。。

![train_999_0009.png](https://qiita-image-store.s3.amazonaws.com/0/183826/4f3ad12e-5323-bf11-5468-2fafd11d2134.png)

---

# 結論
* AWSの300枚程度だとうまく生成できず。
* クラウド3社さんの1000枚程度でやると、**人の顔** と **お化けDB** と **蛇の盾** と　**魔法使い** が出来上がった。。

![image.png](https://qiita-image-store.s3.amazonaws.com/0/183826/2fe06755-b69d-fb73-a711-22a0d3b1f549.png)

---

#最後に
* 全体的に薄い内容となりましたが、最後までお付き合い頂き恐縮です。
* 最後に参考にさせて頂いたURLを紹介させて頂きます。
* ありがとうございました。

## 参考にさせて頂いたページ
*  https://qiita.com/shu223/items/b6d8dc1fccb7c0f68b6b
*  https://elix-tech.github.io/ja/2017/02/06/gan.html