【論文解説】SinGAN: Learning a Generative Model from a Single Natural Image

1枚の画像に対して様々な操作が可能な SinGAN の論文を簡単にまとめた。 SinGANはSingle GANの略。 個人的には、ICCV 2019でbest paperだったのと、GANだけど必要な訓練データが1枚なのでリソースが少なくて嬉しいのと、実写画像でも調和的な編集や画像合成ができる、というのが気になって読んでみた。 メタ情報は次の通り。

1. 概要

1枚の画像に対して様々な操作を実現する手法。 操作の種類は、Paint to Image、Editing、Harmonization、Super Reslution、Single Image Annimation の5つ。 画像をスケールアップさせるGANでピラミッドを構成し、粗い画像から段階的に精巧な画像を生成するように訓練する。 テスト時は入力画像とスケールを調整することで、様々な画像の操作を実現する。

f:id:Shoto:20191207131728p:plain

2. 先行研究との差異

従来のGANは特定の操作のためにデザインされているが、本手法は多くの異なる画像操作が可能である。 SinGANと同様、単一の画像を扱うGANはあったが条件付き(特定画像から別画像への変換)であった。 そのため、本手法では条件なし(ノイズから画像への変換)を可能にしている。 また、従来のGANでは実写画像が扱えなかった点も本手法で克服している。

3. 手法

従来のGANと異なりSinGAN では、画像セットではなく1つの画像からパッチセットを作成して訓練に利用する。 またGANのピラミッドにしたモデルにより、複数の異なるスケールの画像から複雑な構造を獲得する。

f:id:Shoto:20191207131732p:plain

モデル構造の概要は上図の通り。 スケール n で、生成器 G_n\tilde{x}_n を生成する。 このとき G_n は、識別器 D_n が訓練画像をスケールダウンした画像 x_n と区別できないように \tilde{x}_n を生成する。 また x_n\tilde{x}_n を区別する際に比較するのは、画像全体ではなく両者で重なり会うパッチごとである。 パッチサイズは画像がスケールアップされるにつれて小さくなる(右端の黄色矩形)。 スケール n からスケール n-1 になる際、 \tilde{x}_n をスケールアップしてノイズと共に G_{n-1} に入力し、 \tilde{x}_{n-1} を生成する。 ただし n=N の場合のみ、\tilde{x}_N は ノイズ z_N から生成する。

f:id:Shoto:20191207131733p:plain

G_n の具体的な処理は上図のようになり数式(3)で表される。 ψ_nConv(3x3)-BatchNorm-LeakyReLu による畳み込みブロックを5つ連結している。

f:id:Shoto:20191207135410p:plain

Lossは式(4)のようになる。

f:id:Shoto:20191207135126p:plain

前半はいわゆるGANの生成器と識別器の関係。 後半は式(5)で示され、スケールアップした画像から生成した画像と、スケールダウンした訓練画像のRMSE(root mean squared error)となる。

f:id:Shoto:20191207135412p:plain

n < N の時はノイズを利用しないが、n=N の時はノイズを利用するため次の式になる。

f:id:Shoto:20191207135415p:plain

4. 評価

4.1~4.3でSinGAN自体の能力が分かるランダム画像生成、4.4でEditingとHarmonizationの画像操作の評価について見ていく。

4.1. 異なるスケールから生成した画像の違い

f:id:Shoto:20191207131737p:plain

元画像をスケールダウンして 粗めのスケール から入力することで、元画像に似た画像が生成される。 入力するスケール n に応じて、異なる画像が生成される。 下図では、最も粗い n=N と、それに続く n=N-1n=N-2 から入力した例を示している。 nが小さくなるにつれて、変化が小さくなっている。 n=N では大枠が捉えているが違和感があり、n=N-1 では微妙な変化となり、n=N-2 では拡大しないと分からないほどの変化となる。 また、生成画像をパッチごとに識別機にかけているので、反射や影の出力が自然に実現できる。 維持したいコンテキストによって入力するスケールを変えるとよい。

4.2. 生成画像の定性評価

f:id:Shoto:20191207131744p:plain

スケール NN-1、元画像と生成画像のpairedと生成画像のunpairedで、リアルかフェイクかを人が見分ける実験を実施。 50%が完全に混乱するという意味。 NN-1 では後者、paired と unpaired でも後者の方が、生成画像をリアルと判断する傾向があった。 先の画像のように、N-1 のコンテンツはほぼ完全に維持されるため変化する箇所が微妙であり、unpairedは元画像がないので素直な結果と言える。

4.3. 生成画像の定量評価

f:id:Shoto:20191207131747p:plain

GANの生成画像の評価指標に、FID(Frechet Inception Distance) がある。 FIDは画像間の距離を測ることができるが、複数画像のペアが対象となる。 そこで本論文では、元画像と生成画像が1枚ずつのペアでもFIDが利用できるSIFID(Single Image FID)を提案して評価を行っている。 SIFIDは N が 0.09 、N-1 が 0.05 (低い方がよい)となり、定性評価と同じく N-1 の方が元画像に近いことが分かる(左から2番目の列)。 また、SIFIDと定性評価との相関があることも示されている(右端の列)。

4.4 画像操作:Editing, Harmonization

色々な操作ができるが、個人的な興味からEditingとHarmonizationのみに絞って見ていく。

Editing

f:id:Shoto:20191207131739p:plain

編集して縮小した画像を入力する。 PhotoshopのContent Aware MoveよりもSinGANの方が、つなぎ目がシームレスになっている。 粗い画像を拡大しながら精巧にしていく過程を考えると出力結果に納得できる。

Harmonization

f:id:Shoto:20191207131743p:plain

縮小した合成画像を入力する。 Deep Painterly Harmonization(DPH)よりも、前景のオリジナリティが保持されている。 スケール数 N を2~4 にすると、前景の構造を保ちつつ背景のスタイルに上手く変換できるらしい (なんとなくDPHもパラメーター調整でいい感じになる気がするが)。

5. 所感

Harmonizationは、Deep Painterly Harmonizationでは実写画像の扱いが難しかったのと、学習しないからか生成画像が粗かったので、もしホントに実写で上手くいったらSinGANの発明者の皆さんに感謝したい気持ちでいっぱいです。 あと、SinGANは本当に色々できるので、そのぶん応用範囲も広いと思う。 まず、HarmonizationができるならStyle Transferもできるし、Editingも一種のStyle Transferみたいな感じがしたで、そっち方面で新たな研究成果が期待できそう。