CycleGAN on AMD RadeonGPU

Introduction

Semi-supervisedでGANを使うため、いくつかの表現型のテストを行っていた際に、CycleGANという技術が面白かったので、実際にAMDRadeonGPUで動かす事ができるか実験をしてみました。

結果




動画バージョンはこちら。




CycleGAN

CycleGANはドメイン変換技術で、pix2pixでよく知られているStyle変換に似ていますが、完全に別ドメインにドラスティックに変えてしまう点が大きく違います。
もちろんCycleGANでもStyleTransferは簡単にできますので、ベースとなるコンテンツ画像とスタイル画像を用意すれば同じ事ができます。

このCycleGANの中でも最も面白いと思われるのが、顔自体を別人物に変えてしまうというCycleGAN Face-offの論文です。[Xiaohan Jin, Ye Qi, Shangxuan Wu]
https://arxiv.org/abs/1712.03451

これを使えば、オバマ大統領やトランプ大統領の顔になりすましができるようになります。
ただし、ドメインが離れすぎると逆に破綻した画像が出来上がったりしますので、ドメインが離れれば離れるほど調整が非常に難しくなります。

アーキテクチャは従来のDCGANのGenerator部分をpix2pix(画像のオートエンコーダー)に置き換えて、Discriminatorはそのまま。
更にそのネットワークを2つ作り、ドメインAからドメインBへ変換。ドメインBからドメインAへ変換し、回転(Cycle)させるようにフェイク判定を行い学習します。

アニメのようなドメインが離れたものを実際学習すると上記のような結果が得られるようになります。
使用した枚数は、ドメインAが10000枚、ドメインBが10000枚ほどで、
左から、元画像、10エポック、50エポック、200エポックと右に行くほど強い変換結果が得られています。
200エポック以降はそこまで変化がありません。

200エポックまではGeForceRTX2080TiまたはRadeonVIIで大凡10時間前後かかります。

References


GPU EATER - AMD GPU-based Deep Learning Cloud