iT邦幫忙

2022 iThome 鐵人賽

DAY 18
3
AI & Data

OH~ AI 原來如此,互助就此開始!系列 第 18

Day 17. 深度學習模型 - GAN

  • 分享至 

  • xImage
  •  

歡迎來到眼見未必為真的世界!最近新聞熱烈報導的 AI 繪圖「Midjourney」以人類名字參加美術展而且還獲獎!AI 自己產生的繪圖作品打敗了人類的繪圖作品。「Midjourney」怎麼辦到的?先來看看「Midjourney」是怎麼產生圖片的。

https://ithelp.ithome.com.tw/upload/images/20220919/20150622BFTao0zX3M.jpg
—— 獲獎的「太空歌劇院」,出處:獲獎者 Jason Allen 在 Discord的貼文

Midjourney 是掛在 Discord 聊天室上的機器人,只要輸入 /imagine 後面接想要生成的圖片敘述(英文),機器人約 1 分鐘內就會生成 4 張圖片符合你敘述的圖片。
下圖是我們隨手輸入 heaven (天堂)的結果。

https://ithelp.ithome.com.tw/upload/images/20220919/20150622LuTQofk4Gd.png
—— 出處:Midjourney 生成

同樣類似的服務有「Hugging Face」,這邊不用註冊,不過生成圖片的速度比較慢,試著輸入 fireworks(煙火) 的話是出現這四張圖。
https://ithelp.ithome.com.tw/upload/images/20220919/20150622k8a4z28Yvp.jpg
—— 出處:Huggin Face 生成

這邊在註記圖片出處的時候猶豫了一下,用我們的關鍵字隨機生成的圖片,著作權算誰的呢?
之後在 AI×社會 篇章我們再來探討。

另外還有最近日本漫畫家們人心惶惶的「mimic」,只要給15~30張你想要模仿的漫畫家圖片,就可以生成該漫畫家風格的圖。
https://ithelp.ithome.com.tw/upload/images/20220919/20150622CEmTsBcElO.jpg
—— 出處:mimic 官網

難道漫畫家要失業了嗎?在這種恐慌下, mimic 2022/8/29 Release 之後隨即被漫畫家們在網路上集體抵制,目前官方提出避免被濫用的對策並暫時關閉服務,而正式服務什麼時候再開始還是未定。

上面運用的技術就是我們今天要介紹的生成模型,其中 Midjourney 採用的技術之一就是最熱門的 GAN

生成模型(Generative Model)

能夠推斷圖片的資料分布,然後根據該分布去生成出和原本圖片類似的圖片資料稱作生成模型。今天介紹其中最廣為人知的兩個:

  • 變分自動編碼器(VAE)
  • 生成對抗網路(GAN)

這兩個模型是透過不同的方法去取得圖片的潛在空間(latent space),然後再對這個空間的潛在變數(latent variable)做隨機取樣去生成新的圖片。

聽起來有點抽象對吧?這邊的潛在變數可以理解為圖片特徵的參數。如果有玩過遊戲的捏人臉系統就知道,遊戲的角色外貌可以透過各種參數做改變,如眼睛的大小,鼻子的高低,頭髮的顏色等等。

比如說這張圖片的笑容為其中一個特徵,笑的很開心參數接近 1。把這個笑容的數值水平滑動到接近-1就會變成比較生氣的臉,以此類推。
https://ithelp.ithome.com.tw/upload/images/20220920/201506229ImLQ0UwfY.jpg
—— 出處:Variational autoencoders.

變分自動編碼器(VAE,Variational Autoencoder)

VAE 使用 Day 12 介紹過的自動編碼器,同樣有編碼器和解碼器,只是這次不是做壓縮和解壓縮資料。

  • 編碼器
    將原本的特徵資料變換成常態分布(平均和方差)。
    以潛在變數來說,笑容的參數分布會變成這個樣子:
    https://ithelp.ithome.com.tw/upload/images/20220920/201506225I2XSLmfsH.jpg
    —— 出處:Variational autoencoders.

  • 解碼器
    針對常態分佈隨機取一點資料(Sampling)做為參數生成圖片。

透過這兩個過程來生成和原本不一樣但類似的新資料。

https://ithelp.ithome.com.tw/upload/images/20220920/20150622xNYgKwSVMr.jpg
—— 出處:Variational autoencoders.

為了方便理解中間省略了統計學比較深入的東西,有興趣的人可以看看補充資料的論文。

生成對抗網路(GAN,Generative Adversarial Network)

GAN 主要由兩個獨立的神經網路做互相對抗,由一個生成器(Generator)生成新的圖片,另外一個鑑別器(Discriminator)來鑑別新的圖片是否為偽造的,所以叫生成對抗網路。

  • 生成器
    目標是讓鑑別器發現不了這是偽造的圖片。
    透過隨機的雜訊來生成資料,並透過鑑別器給的分數回饋作修正。
  • 鑑別器
    目標是鑑別出這是偽造的圖片。
    訓練時同時給真的圖片和假的圖片做監督式學習,並回饋分數給生成器。

一個要騙人,一個要想辦法抓出破綻。

實際上的運作是這樣:
https://ithelp.ithome.com.tw/upload/images/20221002/20150622sUFBskQuQg.jpg
—— 出處:GAN 論文

黑點是真實資料分布,生成器從雜訊(黑箭頭)生成資料(綠線),藍點則是鑑別器的鑑別分布。

  • (a) 藍點此時還可以分辨出生成資料和真實資料的不同
  • (b) 藍點經過重複訓練,鑑別更嚴格了
  • (c) 綠線經過訓練,慢慢向黑點(真實資料)靠攏
  • (d) 綠線和黑點重疊,藍點已經無法識別出真假

一開始需要鑑別器先做訓練,才能先提供有用的回饋給生成器生成資料。

後續的模型

DCGAN

將神經網路改用 CNN 實做 GAN 的模型叫做 DCGAN(Deep Convolutional GAN)。
生成的圖像更細緻,以下是透過 DCGAN 程式試著生成人臉的訓練過程視覺化:


—— 程式參考出處:Pytorch - DCGAN Face tutorial

一開始很明顯都是雜訊,然後逐一變成像真人的臉孔。

Pix2Pix

Pix2Pix是一種有條件的GAN,一開始會給GAN一個條件圖像和一個真實圖像。生成器不是用隨機雜訊而是透過條件圖像生成新的圖像。鑑別器則是辨別新圖像是否是真實的。

https://ithelp.ithome.com.tw/upload/images/20221002/201506223rQHg0kcIG.jpg
—— 出處:Pix2Pix 論文

缺點是必須準備一組成對的條件圖像(Input)和真實圖像(Ground truth)。

各種轉換成果:
https://ithelp.ithome.com.tw/upload/images/20221002/20150622yqy51SVnyT.jpg
—— 出處:Pix2Pix 論文

CycleGAN

CycleGAN 是 pix2pix 的雙向版本。有兩個生成器和兩個鑑別器。比如說根據馬的圖片生成斑馬圖片和根據斑馬圖片生成馬的圖片,彼此循環鑑別所以叫 CycleGAN

https://ithelp.ithome.com.tw/upload/images/20221002/20150622F04JhK6Z3t.jpg
—— 出處:CycleGAN 論文

CycleGAN 的好處是不需要準備成對的條件圖像和真實圖像。只需要很多馬的圖像和很多斑馬的圖像,就可以循環生成辨識真偽。

補充資料

立即複習

  1. VAE 的編碼器會將特徵資料轉為什麼分布?
  2. GAN 之所以被稱做生成對抗網路,主要是由哪兩個部分組成?
  3. GAN 一開始是由什麼生成圖片?
  4. Pix2Pix 和 CycleGAN 哪個需要先準備好成對的圖片?
  5. Midjourney 是使用生成模型的哪個演算法?

參考資料


上一篇
Day 16. 深度學習模型 - CNN(二)
下一篇
Day 18. 深度學習模型 - RNN(一)
系列文
OH~ AI 原來如此,互助就此開始!31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言