Yuki’s blog

自身の成果物や好きなことを発信していきたいと思います。情報系のジャンルが多いです。

Cycle-Consistent Adversarial Networks (CycleGAN) メモ

     

こんにちは。
今日は、CycleGANの論文を軽く読んだので自分の理解をメモ的な感じで残そうと思います。
arxiv.org

CycleGANとは?

CycleGANとは、2種類のドメインの画像X、Yがあった時にX → Yとなるような生成器Gを作成する技術です。今まではペア画像を学習のデータセットに用いてたが、多くのタスクではペアの画像が用意できないためペアではない2種類の画像を用いてX→Yへの変換を実現できるような仕組みを提案したものです。
これによりスタイル変換、オブジェクト変換、四季変換、写真強調など様々なことができるようになりました。

f:id:Yuki9892:20200713142643p:plain
CycleGanの生成結果

ペア画像の定義についてはよくわかっていないが論文内では以下のような例が示されています。
f:id:Yuki9892:20200713142544p:plain

ペアではない画像とは言うものの2つの画像は似たようなものであることがわかります。
例えば、馬とシマウマや絵と絵などなど。

先行研究と比べて何がすごいのか?

これは先ほど、述べたようにペアではない画像を用いて学習できる点が一番優れているところではないでしょうか。
ペアのデータセットを手に入れるのは難しく、コストがかかるため。

技術の手法とポイント

  • 2種類の生成器 G, Fと識別器 D_{X}, D_{Y}を使用
  • 損失関数にサイクル一貫性(Cycle Consistency)を導入

この2つが主なポイントです。

まず生成器Gですが、 G : X → Y'と変換するような G(X)が元のドメイン Yと区別できなくなるように学習します。
また反対に、 F : Y → X'と変換するような F(Y)が元のドメイン Xと区別できなくなるように学習します。
しかし、この制約だけではXと出力Y'(Yと出力X')が厳密には意味のあるペアになっていることが保証できません。
ここで意味のあるペアを出力できるように、2つ目のポイントであるサイクル一貫性というものを導入しました。

論文に書いてある例を引用すると、
「英語 → フランス語に変換したら、フランス → 英語に逆変換できるようにする。」と書いてあります。
すなわち、サイクル一貫性を導入することで
 F(G(X)) ≒ X G(F(Y)) ≒ Yという関係になります。

ここからは具体的に目的関数を見ていきます。
まず、識別器ですがこれは従来のGANの目的関数と変わりません。CycleGANでは生成器が2つあるので目的関数も2つ存在します。

f:id:Yuki9892:20200713145204p:plain
生成器Gの目的関数

生成器Fの目的関数も同じものなので省略します。また、この式の意味ついてですが過去の記事で紹介してますのでよくわからない方は参考にしてください。
yuki9892.hatenablog.com

さて、ここからはCycleGANで導入されたサイクル一貫性の目的関数について紹介します。

f:id:Yuki9892:20200713145530p:plain
Cycle Consistency Loss

これは、ドメインXの画像を変換して逆変換した F(G(X)) Xとの差のL1ノルムを計算し、それを最小化することを考えています。ドメインYの画像も同じように書くことができそれらの両方を足すことで、サイクル一貫性の目的関数になっています。

よって最終的なCycleGANの目的関数は以下のようになります。
f:id:Yuki9892:20200713145926p:plain
f:id:Yuki9892:20200713145959p:plain

この生成器と識別器の具体的なネットワーク構成については論文のAppendixに記載されてますので参考にしてください。

この技術の有効性の検証

本物か偽物かを評価するAMT perceptual studiesを使ったり、FCN scoreやSemantic segmantation metricsを用いて評価しています。
評価制度についてはまだ全然詳しくないので割愛します。気になる方は論文へ。
あとは、様々なデータセットを用いて似たようなスタイル変換技術(pix2pixとか)と比較しています。
論文内では比較した画像結果がたくさん掲載されています。

議論

論文内でも述べられていましたが、うまくスタイル変換ができない例があります。
幾何学的な変化が求められるタスクではうまく変換できないようです。これが、今後の重要な課題であると述べられています。(犬→猫)
また、学習に使ったデータセットの特徴で失敗するケースがあるようです。
例えば、馬とシマウマの画像を使って学習させたモデルで馬の上に人が乗った場合にうまく変換できないようです。
これは、学習データセットにこのような場合が含まれてないことが原因です。

次に読むべき論文

GANの評価制度について全く無知なのでそのあたりを読んでいこうかなと思う。
pix2pixについてもまだよく知らないので読まないとなぁ。