創造性の高い画像を生成するモデルと服の着せ替えを実現するモデルの紹介

こんにちは。ZOZOテクノロジーズの後藤です。
今回は、最近登場したファッション分野×機械学習の論文のうち、個人的に興味のある分野をご紹介したいと思います。
今回は以下の二つの分野について紹介します。

- 創造性や独創性を発揮して画像をデザインするモデル
- 画像上の人物の服を着せ替えをするモデル




# CAN: Creative Adversarial Networks Generating “Art” by Learning About Styles and Deviating from Style Norms

この研究では、人間が生み出した過去の絵画を学習し、そこから独創的な絵を描かせるモデルの開発に取り組んでいます。著者らが注目したのはGenerative Adversarial Networks（GAN）のアイディアです。GANは、ノイズからデータを生成するGeneratorと、データが本物のデータなのかGenerator由来のデータなのかを見分けるDiscriminatorが互いに競い合うことで優れたGeneratorを得るアルゴリズムです。例えば、学習させるデータが画像の場合、GANのアルゴリズムで学習したGeneratorは時に人間の目を騙すほどリアルな画像を生成することができます。

以下は、通常のGANのアルゴリズムです。xはデータ、zはノイズで、G(z)はノイズから生成されたデータを意味します。D(・)はDiscriminatorが見分ける真贋の結果です。
<img width="460" alt="スクリーンショット 2018-12-15 23.07.43.png" src="https://qiita-image-store.s3.amazonaws.com/0/309434/dbe57b2d-febb-7efb-8d79-9d1222f1cd1e.png">

著者らはGeneratorにクリエイティビティを獲得させるために、上記のGANのアルゴリズムを以下のように修正します。Creative Adversarial Networks(CAN)と呼ばれています。

<img width="578" alt="スクリーンショット 2018-12-15 23.07.54.png" src="https://qiita-image-store.s3.amazonaws.com/0/309434/0a77877e-31fd-1de8-0209-ccfccf2b5129.png">

CANでは、今回の問題設定の場合、Discriminatorは絵画の真贋を見分けるタスクと絵画のスタイルを判別するタスクが課されます。一方Generatorはノイズから絵画を生成しながら、Discriminatorがスタイルを判別できないような絵画を生成するように学習を進めます。

システムの全体像は以下の図のようになります。

<img width="929" alt="スクリーンショット 2018-12-15 23.07.30.png" src="https://qiita-image-store.s3.amazonaws.com/0/309434/3c4e897b-3416-e1f8-1b1b-f766a38f9aa4.png">

### 結果
CANが生成した絵画のうち、人間が高いスコアをつけた結果の例です。

<img width="987" alt="スクリーンショット 2018-12-15 23.08.22.png" src="https://qiita-image-store.s3.amazonaws.com/0/309434/0c547a2f-c691-3d96-ddfc-ed1171aa51ed.png">


## Design Inspiration from Generative Networks
https://arxiv.org/pdf/1804.00921.pdf

Creative Adversarial Networksのアイディアをファッションアイテムのデザインに応用した研究です。新たな貢献としては、CANの論文で提案した損失関数の一般形を導出し、有用性を確認したことと、ファッションアイテムの生成に強いネットワークアーキテクチャを提案したことです。以下のトップスの画像は、著者らが提案したモデルが生成したデザインです。独創性が高いと評価され、その61%は人間のデザイナーが生み出したものだと認識されたものだそうです。

<img width="744" alt="スクリーンショット 2018-12-15 23.49.59.png" src="https://qiita-image-store.s3.amazonaws.com/0/309434/b6bc1237-63d9-001c-4792-ed4db2f56555.png">

CANの損失関数は各スタイルに対して1,0の判別が入っていましたが、こちらではマルチクラスエントロピーが提案されています。検証の結果、こちらの損失関数の方がパフォーマンスが高いと考えられてます。

<img width="686" alt="スクリーンショット 2018-12-16 0.03.53.png" src="https://qiita-image-store.s3.amazonaws.com/0/309434/ead4e68c-6c9a-722b-497e-d14af9fabdfa.png">

## M2E-Try On Net: Fashion from Model to Everyone
https://arxiv.org/pdf/1811.08599.pdf

ターゲットにモデル着用の服を着せ替えるModel-to-Everyone Try on Net (M2E-TON)を提案しています。この研究の優れた点は、着せ替えの工程を３つのネットワークに分業させて精度を高めた点と、着せ替えた際に服のテクスチャがきちんと反映されるように新しい学習ストラテジーを提案している点です。

服の着せ替えには、モデル画像ポーズをターゲット画像のポーズに変形させるネットワーク Pose Alignment Network(PAN)、テクスチャを張り合わせた際に発生する粗を取るネットワーク Texture Refinement Network(TRN)、モデル画像の服をターゲット画像に貼り付けるネットワーク　Fitting Network(FTN)の３つを利用します。

<img width="1154" alt="スクリーンショット 2018-12-16 0.20.33.png" src="https://qiita-image-store.s3.amazonaws.com/0/309434/4f8640a6-c171-563a-a464-8ab13ae4ba5e.png">


### Unpair-pair Joint Training Strategy

<img width="805" alt="スクリーンショット 2018-12-16 0.22.13.png" src="https://qiita-image-store.s3.amazonaws.com/0/309434/a1e9806e-32e1-ba3d-3a94-1735f3120a92.png">

服の模様などの細かい部分まできちんと転写可能な能力を獲得させるために、同じ服を着た異なるポーズのモデル画像のペアに対しては、ピクセル毎にL1, L2損失関数を課し、そうでないペアに対してはGANの損失関数のみを課すという工夫を行なっています。ポーズだけが異なる画像を利用するのは、ECサイトなどの文脈でこのような画像が入手しやすいという観察に基づくようです。



### 結果
20人のユーザーに４つの着せ替えアルゴリズムの出力結果のうち、最もリアルで詳細な情報を保存できている出力結果を選ばせたところ、提案手法が83.7%の票を獲得しています。

<img width="643" alt="スクリーンショット 2018-12-16 0.34.27.png" src="https://qiita-image-store.s3.amazonaws.com/0/309434/67cc65b3-db8d-75d4-7afc-c42974b3953a.png">