2020年8月20日 星期四

Conditional GAN 簡介

本篇文章將會簡單地介紹 Conditional GAN 的原理以及一些有趣的應用。

Conditional GAN 可以拿來做什麼事情?

常見 Conditional GAN 的應用像是從一句話生成出一張圖片、從黑白照片生成彩色照片,或是從手繪塗鴉生成一張彩色照片。之所以要用 Conditional GAN 而不用監督學習的原因可以用下圖說明:

Conditional GAN Example
 
上圖取自於李宏毅老師的 GAN Lecture 2: Conditional Generation。這個例子是想要生成一張火車的圖片,而訓練資料中包含了火車的正面(藍點)及側面照片(綠點),如果用監督學習生成的話,產生的圖片很有可能位於這些訓練資料的中間,也就是說生成的圖片可能會很模糊,這也就是為什麼要用 Conditional GAN 來生成圖片的原因了。

Conditional GAN 有什麼特別之處?

Conditional GAN 的 loss function 與 GAN 的略有不同。我們都還記得在 GAN 中 discriminator 的作用是判別由 generator 生成的圖片是否為真實的圖片,但是在上述由文字生成圖片的應用中,假設我們一樣想要生成一張火車的圖片,此時 generator 仍然可以生成一張看起來相當真實的汽車的圖片,如果 discriminator 只判定這張圖片真不真實的話,那麼它就會被 generator 騙過了,因為我們想要的是一張火車的圖片而不是汽車的圖片。因此 Conditional GAN 調整了 discriminator 的輸入,同時要輸入一張圖片以及對應的文字,這樣 discriminator 不只能夠學習出一張圖片是否為真,也能訓練出這張圖片與對應的文字是否相符。

Conditional GAN 的小技巧

在一系列談 GAN 的文章中,我們都提到了不能讓 discriminator 太強,否則會太容易 overfitting。有幾篇 paper 運用了一個小技巧,也就是對於圖片的 discriminator 來說,一次只判定一個小 patch 而不是一次判定整張圖片,也有些人設計了 multi-scale 的 discriminator 想達到相同的目的。 

Conditional GAN 的有趣應用

Image-to-Image Translation with Conditional Adversarial Networks 這一篇文章中列出了一些例子:


他們也做了一個有趣的 demo 網站,有興趣的讀者可以去試一試。


沒有留言:

張貼留言