# 【生成式AI導論 2024】第18講:有關影像的生成式AI (下) — 快速導讀經典影像生成方法 (VAE, Flow, Diffusion, GAN) 以及與生成的影片互動 ## 經典影像生成方法 * Variational Auto-encoder(VAE) * Diffusion Method * 現今最常用的 * Sora的方法 * 從一堆雜訊生成就是Diffusion Method * Generative Adversarial Network(GAN) ## 文字生影像的挑戰 ### 訓練時資訊不足 * 文字的敘述通常沒辦法很完整的表達圖片內容 * 例如沒有敘述背景、沒有說名物體的顏色花樣。模型往往只拿到"狗"的敘述,就會將柴犬與哈士奇搞混,不知道要生成哪種patch的組合。![image](https://hackmd.io/_uploads/ByUQL4efle.png) * 解決方法是給予更詳細的資訊![image](https://hackmd.io/_uploads/HykYLVgzee.png) * 可以訓練一個模型(暫稱為抽取模型)來擷取更詳細的資訊![image](https://hackmd.io/_uploads/rJbO84gzxe.png) * 抽取模型與生成模型是可以同步訓練的![image](https://hackmd.io/_uploads/Hkj2BVlGxg.png) 1. 抽取模型從資料庫中取得照片與敘述,並抽取缺少的詳細資訊 2. 生成模型使用照片敘述與抽取資訊進行影像生成 3. 比對原始影像與生成影像,越接近越好 * 資訊抽取出來什麼資料不重要,目的是讓生成影像與原始影像相近就好。因此也是向量![image](https://hackmd.io/_uploads/rky_PNgfel.png) > [!Note] > 讓輸出與輸入相近的這個訓練框架名稱就是Auto-Encoder ### 實際生成時資訊不足 * 剛才提到訓練時可以抽取原始影像的資訊,取得缺少的詳細資訊![image](https://hackmd.io/_uploads/B1IVOElzxx.png) * 而實際生成時,沒有實際影像可以抽取資訊。 * 因此可以用隨機值,決定中間的抽取資訊![image](https://hackmd.io/_uploads/B1cXOVefxe.png) * 這種做法就是經典生成方法VAE![image](https://hackmd.io/_uploads/ByC2_VeGxx.png) * 另一種Flow-based方法則是只使用Decoder,並將Decoder設計為Invertible![image](https://hackmd.io/_uploads/S1NpdVgzel.png) * 我們通常將中間抽取出來的資訊叫做noise,noise中包含了很重要的資訊![image](https://hackmd.io/_uploads/rk4QF4eflx.png)我們甚至可以透過改造noise,生成不同的照片![image](https://hackmd.io/_uploads/SykCFVxzlg.png)![image](https://hackmd.io/_uploads/HywZcEgMlx.png) ## Diffusion Model ### 原理 (這是極度簡化後的講法,詳細說明請見[影片](https://www.youtube.com/watch?v=azBugJzmz-o&list=PLJV_el3uVTsNi7PgekEUFsyVllAJXRsP-&index=2)) * 反覆使用同一個Decoder(Denoise),每次在生圖時Decoder就是負責去除雜訊![image](https://hackmd.io/_uploads/HJDE6Nlzgx.png) * 通常會反覆進行下去,多次後就可以得到清晰的圖片。![image](https://hackmd.io/_uploads/S1gH6NgMxg.png) ### 訓練 * 將原始照片不停加上雜訊,就可以得到每個Denoise階段應該要有的樣子![image](https://hackmd.io/_uploads/rkE7CNezeg.png) * 接著使用文字敘述+每個階段的照片,就可以訓練出Denoise。![image](https://hackmd.io/_uploads/ByCQR4lMxx.png) * Diffusion model使用Transformer就是[Diffusion Transformer](https://arxiv.org/abs/2212.09748),Sora就是使用這個技術![image](https://hackmd.io/_uploads/rJ2O0EgGgx.png) ## GAN * GAN則無法跟上面的Auto Encoder架構類比 * GAN會先訓練一個Discriminator,用來評斷圖片與敘述匹配的好壞![image](https://hackmd.io/_uploads/SJGeFBezxl.png) * Generator接下來不使用原始影像學習,則是透過Discriminator學習![image](https://hackmd.io/_uploads/B1wr5SgGeg.png) * 這樣的好處是答案不再單一,不會只學習資料庫中有的影像 * Discriminator與Generator會互相交替訓練。兩者越來越強。 * 在使用Discriminator訓練的情況下,可以不使用雜訊統一圖片生成的統一性。這是老師的實驗結論。 * GAN只是一個工具強化外掛,可以跟其他方法結合![image](https://hackmd.io/_uploads/By4kiBxMgx.png)