# 李宏毅_生成式導論 2024_第18講:有關影像的生成式AI (下) — 快速導讀經典影像生成方法 (VAE, Flow, Diffusion, GAN) 以及與生成的影片互動 ###### tags: `Hung-yi Lee` `NTU` `生成式導論 2024` [課程撥放清單](https://www.youtube.com/watch?v=AVIKFXLCPY8&list=PLJV_el3uVTsPz6CTopeRp2L2t4aL_KgiI) ## 第18講:有關影像的生成式AI (下) — 快速導讀經典影像生成方法 (VAE, Flow, Diffusion, GAN) 以及與生成的影片互動 [課程連結](https://www.youtube.com/watch?v=OYN_GvAqv-A&list=PLJV_el3uVTsPz6CTopeRp2L2t4aL_KgiI&index=19) ### 經典影像生成方法介紹  課程準備介紹一些經典的影像生成方法。 ### 文字生成影像的挑戰  簡報為例,一隻奔跑的狗,我們利用Transformer得到的encoder是一樣的,但是也許給定的影像是不一樣的,有時候給的是二哈,有時候是紫犬,這對模型來說根本是無所適從。 ### 如何處理腦補問題  有些時候人類所給定的描述是不夠完整的,我們也許可以利用另一個模型來做資訊抽取,將描述中沒有的部份再補齊。一樣的範例,我們也許可以補齊地點或是狗的種類,然後再搭配原本的命令,也就是一隻在奔跑的狗,一起給圖片生成模型來做影像生成。 這個解方的問題就是,應該怎麼訓練這個資訊抽取的模型。 ### 如何處理腦補問題  一種作法就是,輸入就是一張照片跟給定的文字描述,然後經過資訊抽取模型之後得到一個表示,然後再經過圖片生成模型將輸入照片還原。 這種作法很直觀,我們也不需要知道中間到底抽取到什麼,但不管抽取到什麼,這個資訊都會含有給定的文字描述跟原始的輸入照片。最終我們希望圖片生成模型可以成功的將輸入照片再還原。 這樣的框架又稱為Auto-Encoder,其中資訊抽取的部份即為Encoder,而圖片生成模型即為Decoder。Encoder與Decoder一起訓練,我們希望輸入跟輸出愈接近愈好。 ### 訓練與測試的差異  剛剛已經說明,訓練過程中我們就是希望輸入跟輸出愈接近愈好。 但測試階段的時候,我們也許只會有文字描述,並沒有實際的照片輸入,這意謂著不會有資訊抽取,也就是沒有腦補資訊。這時候的作法就是利用採樣,從latent space中隨機取一個點。 ### VAE vs Flow-based  剛剛所說明的作法又稱為VAE。 另一種作法,Flow-based,的想法是,VAE的作法中,Encoder跟Decoder的作法是明顯相反的,一個是從照片抽取資訊,一個是從資訊還原圖片,既然如此為什麼要訓練兩個模型? 如果可以只訓練一個Decoder,然後強迫讓這個Decoder是invertible(可逆的),也就是Decoder一定有一個反函數,直接拿這個反函數來做為Encoder。 文獻上通常將抽取出來的資訊,也就是要腦補的資訊稱為noise。 ### 有資訊的雜訊(noise)  雖然名稱是noise,但並非無效資訊。 舉例來說,我們如果將一堆臭臉的丟進去Encoder,然後將得到的向量平均起來,那就是一個臭臉向量。 ### 有資訊的雜訊(noise)  抽出來的向量有什麼用途呢?以上圖為例,照片中的教授神秘的微笑,我們可以抽出這個資訊之後減去臭臉向量再加上笑臉向量,這樣就可以讓教授笑的更神秘。 ### Diffusion Model  [參考課程](https://www.youtube.com/watch?v=azBugJzmz-o&list=PLJV_el3uVTsNi7PgekEUFsyVIIAJXRsp-) Diffusion Model一個簡單的說明就是,它會從雜訊(noise)開始,然後每次迭代就會做一個denoise,然後讓照片慢慢清晰,通常這會做個五百到一千次左右,這也是這個作法的痛點。 很明顯的,denoise model做的就是學習怎麼去除雜訊。 ### Diffusion Model  denoise model學怎麼去除雜訊,可是我們的輸入照片都是沒雜訊的照片,沒關係,那就自己慢慢加入雜訊,加個一千次讓整張照片就這樣充滿雜訊。 現在denoise model就可以利用給定的文字還有雜訊,慢慢迭代還原它的原始狀況。 一個重點就是,這個denoise model裡面也是transformer。 ### Diffusion Transformer  [參考論文_Scalable Diffusion Models with Transformers](https://arxiv.org/abs/2212.09748) 目前的sora也是結合diffusion與transformer。 簡單的說明就是,讓transformer來做denoise的工作。不過這是太過簡單的說明,終究還是要怒看一發論文才行。 ### 文字生影片的模型  目前火熱的影片生成也是相同的邏輯。 ### 三種生成模型的比較  目前已經說完三種生成模型,相對其它兩種方法,Diffusion同樣也有一個Decoder,這個Decoder做的事情就是Denoise。 至於把輸入照片變成雜訊的這部份,在Diffusion並沒有特別再擁有一個模型來處理,就是不斷的加入雜訊就是,這部份對應的就是其它兩個方法中的Encoder,不過在Diffusion中稱為Forward Process。 ### Generative Adversarial Network(GAN)  在GAN的話,我們的作法是這樣的,讓discriminator看文字描述跟真實照片的配對,讓它知道這是好的。同時也讓discrminator看圖片生成的配對,讓它知道這是不好的。 同時讓它看過正、反面的範例。 ### Generative Adversarial Network(GAN)  搞定discriminator就換圖片生成,也就是generator,generator以discriminator為目標,希望騙過discriminator,讓discriminator誤以為自己所生成的照片也是好棒棒的。 這跟VAN、Flow-based不一樣的地方在於,這兩種方法的困擾在於一段文字描述對應不同的照片,一樣是一隻在奔跑的狗,對應不同的狗,這讓模型不知道該生出什麼狗,所以必需加點東西給它腦補。 但GAN並沒有這個困擾,GAN的生成器的目標是騙過discriminator,讓discriminator認為自己所生成的照片是好棒棒的。 這方法跟課程中提到的RLFH有類似之處,不同的是Reward Model是評價有多好,而discriminator的話則是,只要是generator產生的都是不好的。 教授的個人經驗來看,使用GAN的情況下是不需要再另外給予雜訊。 ### GAN是個外掛  [參考論文_Diffusion-GAN: Training GANs with Diffusion](https://arxiv.org/abs/2206.02262) GAN跟其它三種方法最大的不同在於,GAN可以自己來,也可以是其它三種方法的外掛。 ### 工商時間  這邊很多課程,有空就來喵喵看。 ### Genie: Generative Interactive Environmanets   [參考論文_Genie: Generative Interactive Environments](https://arxiv.org/abs/2402.15391) 參考論文中所探討的就是希望可以控制生成影片中的環境,所做的是2D橫向的動態生成。 大致作法就是,它所讀入的輸入除了一個frame之外,還有一個action,而這個action會影響模型的輸出。 ### Genie: Generative Interactive Environmanets   論文指出,這個模型中最困難的部份在於資料蒐集,雖然網路中有大量打電動的影片,但是也只是影片,並沒有玩家按了什麼按鍵的對應資訊。 為了克服這點,作者訓練一個模型來反推玩家可能是按了什麼按鈕,大致就是Auto-Encoder的作法。 ### Genie: Generative Interactive Environmanets  有這個genie的模型之後,你只需要給它一張小小的照片,就可以開啟你的橫向卷軸遊戲之路了。 在下個人覺得的重點是,不需要遊戲引擎就能有一個橫向遊戲了。
×
Sign in
Email
Password
Forgot password
or
Sign in via Google
Sign in via Facebook
Sign in via X(Twitter)
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
Continue with a different method
New to HackMD?
Sign up
By signing in, you agree to our
terms of service
.