iT邦幫忙

2023 iThome 鐵人賽

DAY 11
0
AI & Data

圖像生成 AI 的原理與應用系列 第 11

[Day 11] 還有這招?結合 VAE 和 GAN 的 VAE-GAN!

  • 分享至 

  • xImage
  •  

/images/emoticon/emoticon31.gif

昨天經歷了數學的摧殘(?)以後,今天來點輕鬆一點的內容吧~

截至目前的文章已經介紹了 GAN 和 VAE 兩種類型的圖像生成模型。其實,我們還可以進一步結合兩者的優點組合新的模型:VAE-GAN。

這樣的組合有什麼樣的優點呢?話要說回原始版本 VAE 的問題。

VAE 的問題

VAE 預設是以輸入影像和還原影像每個 pixel 值的差距來評估模型還原影像能力的好壞,然而,我們可以試想以下兩個例子:

  1. 當我們在一張影像加入一個 pixel 的雜訊(可以想成任意畫上一個點),這個雜訊加在影像的什麼位置,對影像造成的 pixel 值差距是一樣的,但是對人來說看起來可能有很大的差異
  2. 當我們將影像往上/下/左/右位移一點,這樣的差距對人來說可能看起來沒什麼差別,但因為每個 pixel 的位置都和原本不一樣了,pixel 值差距會很高

從以上的例子我們可以發現,用影像 pixelwise 的差距當作影像差異的衡量指標,和人視覺上的感受是不完全一致的。

而要改善這樣的問題,其中一個方向是用高階且穩健(robust)的影像表徵來評斷影像的相似程度,此處「高階」指的是具有抽象視覺意義的資訊,而不只是局部的筆劃或色塊等資訊。

簡介 VAE-GAN

GAN 就是用 discriminator 來判斷真實和生成影像分布的相似程度,藉此可以產生非常逼真的影像。因此我們可以應用這樣的想法來判斷真實影像樣本和 VAE 還原的影像樣本的相似程度,並藉此評估 VAE 重建影像的品質,讓還原影像和真實影像在視覺感受上更加相像。而如果 VAE 能更好的還原影像,也代表它學到的影像表徵更能代表原本的輸入影像,充分學習到真實影像的分布。

VAE-GAN 的架構如下:
https://ithelp.ithome.com.tw/upload/images/20230920/20162522iAZDHZI2jE.jpg
(圖片來源:Variational Autoencoder Generative Adversarial Network for Synthetic Data Generation in Smart Home

由於 VAE 的 decoder 和 GAN 的 generator 的功能都是將 code z 轉換為影像 x,因此 VAE-GAN 結合了 VAE 的 decoder 和 GAN 的 generator。

VAE-GAN 會有三個學習目標:
https://ithelp.ithome.com.tw/upload/images/20230920/20162522lIUGeNmOsX.jpg
(圖片來源:Autoencoding beyond pixels using a learned similarity metric

  1. Reconstruction loss:利用影像通過 discriminator 中間層得到的特徵計算相似性,取代 pixelwise error,藉此讓模型學習重建出和輸入影像視覺特徵相近的影像(類似之前介紹訓練 GAN 的技巧之一-feature matching)
  2. Prior loss:VAE 原本有的學習目標,利用 variational inference 估測真實影像分布
  3. GAN loss:讓 discriminator 學習分辨真實影像和還原影像/生成影像的差別

接著我們來看看 VAE-GAN 的表現如何吧~/images/emoticon/emoticon34.gif

https://ithelp.ithome.com.tw/upload/images/20230920/20162522ER52jO9WVY.jpg
(圖片來源:Autoencoding beyond pixels using a learned similarity metric

從以上這些生成和重建的人臉影像可以發現,單純使用 VAE 得到的圖雖然臉部的中間是清楚的,但邊緣明顯模糊。

而 VAE_Dis 指的是 VAE 和 GAN 分開訓練,VAE 透過預訓練好 discriminator 得到影像特徵相似程度,並進行訓練。這樣的做法雖然產生的人臉影像清晰很多,但同時也產生了不自然的 artefacts,例如影像中的有些固定間距的直線,以及部分重建影像的右下角有藍色的 noise patterns。

而 VAE-GAN 和 GAN 產生的人臉影像,效果算是比較好的。

除此之外在 VAE-GAN 的 paper 也探討了模型學習的表徵是否含有比較高階的視覺意義,它實驗的方法是讓生成模型產生和特定一張人臉影像(query)具有相同特性的新影像,而結果如下圖:

https://ithelp.ithome.com.tw/upload/images/20230920/20162522KIHVSTurgr.jpg
(圖片來源:Autoencoding beyond pixels using a learned similarity metric

值得注意的是下面這個例子,query 是一張有帶眼鏡的人臉,而只有 VAE-GAN 產生的人臉比較明顯看得出有眼鏡,這就證實了 VAE-GAN 能學習到高階的視覺特徵,因此能學到眼鏡的特性。而原始的 VAE 因為是使用像素差值來評斷影像是否相似,而眼鏡只占影像的極少像素,就不容易再生成影像重現這樣的特性了。

更多 VAE-GAN 的應用

在查詢關於 VAE-GAN 的資訊時,我也注意到後續有不一些關於這個模型的應用,在此列舉出來提供給大家參考:

參考資料


上一篇
[Day 10] 關於 VAE 的原理 - 數學上的推導
下一篇
[Day 12] VAE 的變形們 - β-VAE 和 DFC-VAE
系列文
圖像生成 AI 的原理與應用30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言