Blogブログ

2019.3.18

Recycle-GANを試してみた

SHARE

 
今回の記事では、2018年に話題に挙がった「Recycle-GAN」について触れていこうと思います。Deep LearningやGANの仕組みをある程度知っているという人向けに解説していきます。

目次


はじめに

はじめまして。京セラコミュニケーションシステム株式会社(KCCS)の上田です。本日から、KCCS研究部で技術に関する記事の投稿を始めることになりました。よろしくお願いします。

KCCSでは「AIをどこよりも身近に」というコンセプトを掲げています。この記事を通じて、AIの使い方や利用シーンを紹介し、AIを身近に感じていただければと考えています。私個人としては、画像解析のAIについて、最新の技術を使ってみるという内容を中心に書いていく予定です。

今回の記事では、2018年に話題に挙がった「Recycle-GAN」について触れていこうと思います。Deep LearningやGANの仕組みをある程度知っているという人向けに解説していきます。

Recycle-GAN

概要

「Recycle-GAN」は、カーネギー・メロン大学とFacebook Reality Labの研究者らが発表した技術で、ある人の動きから別の人が自然に動いている動画を生成できたり、花が開花する動画から別の花が開花する動画を生成できたりするDeep Learningの技術です。発表の記事では、トランプ氏の動きからAIが作成したオバマ氏の動画など、さまざまな検証結果を見ることができます。技術的には、2つの静止画像の変換を学習する「CycleGAN」に時間軸を学習するネットワークを加えることで、動画に対応したCycleGANとなります。「CycleGAN」は、例えば、しまうまを馬に変換したり、夏の風景を冬の風景に変換したりすることができる技術です。

アルゴリズムの概要

どのようなアルゴリズムで、このような動画生成を実現しているのかを説明したいと思います。

Recycle-GANでは、2種類の画像$X$,$Y$を利用して、以下の6つのネットワークで構成されます。次の図では、$X$に花火、$Y$に桜の花びらの画像を使用しています。

20190328_1.png

20190328_2.png

①本物$X$を生成$Y$へ変換するGenerator $G_y$

②本物$Y$を生成$X$へ変換するGenerator $G_x$

③$X$を偽物(AIによって生成された画像)か本物か判別するDiscriminator $D_x$

④$Y$を偽物か本物か判別するDiscriminator $D_y$

⑤$t$フレームまでの全ての画像$X$から$t+1$フレームの画像を予測生成する Predictor $P_x$

⑥$t$フレームまでの全ての画像$Y$から$t+1$フレームの画像を予測生成する Predictor $P_y$

$G_x$、$G_y$、$D_x$、$D_y$は、CycleGANと同じネットワーク構成となります。

$P_x$、$P_y$は、Recycle-GAN特有のネットワーク構成となります。

それでは、実際にどのように学習されているのかをLossの設計を中心に説明していきます。各ネットワークは、以下の3種類のLoss設計により学習されます。

Adversarial Loss

20190328_3.png

① $D_y$は生成$Y$をインプットにアウトプット($1$ or $0$)と偽物($0$)の差分が最小化されるように、本物$Y$をインプットにアウトプットが($1$ or $0$)と本物($1$)の差分が最小化されるように学習します。

② $G_y$は、自身が生成した生成$Y$をインプットに$D_y$から出力されたアウトプット($1$ or $0$)と偽者($0$)の差分が最大化されるように学習します。

$G_x$と$D_x$に関しても同じように学習します。

Recurrent Loss

20190328_4.png

①$P_x$は、$t$フレームまでの全ての本物$X$を入力に$t+1$フレーム目を予測した予測Xを生成します。

②$P_x$は、$t+1$フレームの本物$X$と予測$X$の差分を最小化するように学習します。

$P_y$に関しても同じように学習します。

Recycle Loss

20190328_5.png

①$G_y$で、$t$フレームまでの全ての本物$X$を入力に各フレームの生成$Y$を生成します。

②$P_y$で、全てのフレームの生成$Y$から$t+1$フレーム目を予測した予測$Y$を生成します。

③$G_x$で、予測$Y$から生成$X$を生成します。

④$G_y$、$P_y$、$G_x$は、この生成$X$と$t+1$フレーム目の本物$X$の差分を最小化するように学習します。

$X$と$Y$を逆にした場合も、$G_x$、$P_x$、$G_y$に関して、同じように学習します。

実験

「Recycle-GAN」の発表記事では、顔から顔、花から花というように同じタイプの変換がほとんどです。そこで、異なるタイプへの変換でうまくいくケースがあるのか試してみました。具体的には、花火を桜の花びらに変換した動画の生成に挑戦しました。

実験では、カーネギー・メロン大学の研究者が公開しているGitHubのソースを利用させていただきました。ハイパーパラメータは、以下となります。

項目

Epoch

5

LearningRate

0.0001

Optimizer

Adam

Generatorの構成

Resnet

Discriminatorの構成

GAN

Predictorの構成

Unet

Predictorのt

3

学習画像は、以下の実際の花火と桜の花びらが散る(イラスト)動画をそれぞれ1秒30フレームで合計800枚を学習しました。

hanabi_1.gif

sakura_1.gif

結果

sakura_hanabi.gif

左が本物の花火の動画、右が「Recycle-GAN」で生成した動画となります。少し粗いですが、花火を桜の花びらに変換できているように見えます。

このような技術が発展すれば、AIで簡単なイラストから複雑な動きをするイラストを作成することができ、イラスト作成ツールの補助機能になりそうですね。

執筆者

上田 啓喜

SHARE

Recent Post最新記事

Rankingランキング

Categoryカテゴリ

Tagタグ

Archiveアーカイブ

Contactお問い合わせ

TEL0120-911-901 受付時間
平日9:00~17:00