共著でAI系書籍を出版

「GAN ディープラーニング 実装ハンドブック」を出版

2021年2月、共著で書いた「GAN ディープラーニング 実装ハンドブック」を秀和システムから出版しました。

Cycle-GANの問題点

私が担当した章は動画データに対するドメイン変換です。例えばドメインAの人の顔をドメインBの人の顔に入れ替える様なタスクです。このようなドメイン変換にはよくCycle-GANが用いられます。この本の5章でもCycle-GANを使った変換手法が記載されています。一方でCycle-GANを動画に変換した場合、以下の問題が生じると考えています。

・ドメインAの表情がドメインBに反映されていない。例えばドメインAが口を開けていても、口を閉じていても、変換されるドメインBでは口が空いている

この問題の一部はidentity lossで解消されますが、十分ではありません。

Recurrent Lossにより形状を維持する

そこで今回提案したRecycle-GANでは以下のような仕組みにします。少しごちゃごちゃしていますが、Neural Networkは4種類、lossは3種類です。Neural Networkに関しては、ドメインAをBに変換する G_A2B、ドメインBをAに変換する G_B2A、ドメインAの次時刻を予測する P_A、ドメインBの次時刻を予測する P_B。lossに関しては、identity-loss、recycle-loss、reccurent-loss。以下のプロセスで4つのNNから3つのlossを計算します。(以下の文章部分はドメインAに関するもののみ記載)

1)敵対的損失はLSGANなどと同様にMSEとする。
$$\mathcal{L}_{GAN} (G,D_Y,X,Y) = \mathbb{E}_{y \sim P_{data(y)}} [(D_Y (y) -b)^2] + \mathbb{E}_{x \sim P_{data(x)}} [(D_Y (G(x)) -a)^2] $$

2)ドメインA(real A)を G_A2Bで変換した fake B に対して P_Bで次時刻予測し、それを更に G_B2Aで ドメインAに再変換した recover Aと、実際の次時刻のAとの間で recycle-lossを求める
$$\mathcal{L}_{CYC} (G,F) = \mathbb{E}_{x \sim P_{data(x)}} [\|F(G(x)) – x \|_1] + \mathbb{E}_{y \sim P_{data(y)}} [\|F(G(y)) – y \|_1] $$

3)ドメインA(real A)をG_B2Aで変換し、それが元のreal Aと一致するかを identity-lossとして求める
$$\mathcal{L}_{1D} (G,F) = \mathbb{E}_{x \sim P_{data(x)}} [\|F(x) – x\|_1 ] + \mathbb{E}_{y \sim P_{data(y)}} [\| G(y) – y \|_1] $$

4)ドメインA(real A)を P_Aで次時刻予測したものに対し実際の次時刻のドメインAとで recurrent-lossを求める
$$\mathcal{L}_{CYC} (P_x, P_y) = \mathbb{E}_{x_t, x_{t+1}, x_{t+2} \sim P_{data(x)}} [\| P_x (x_t, x_{t+1}) – x_{t+2} \|_1] + \mathbb{E}_{y_t, y_{t+1}, y_{t+2} \sim P_{data(y)}} [\| P_y (y_t, y_{t+1}) – y_{t+2} \|_1] $$

これにより対応関係が点ではなく分布となり、それによって表情が維持されることを狙っています。