PTT評價

[閒聊] DDPM: 從隨機微分方程到AI圖片生成

看板C_Chat標題[閒聊] DDPM: 從隨機微分方程到AI圖片生成作者
cybermeow
(北歐組一生推)
時間推噓15 推:15 噓:0 →:13

週末閒著來聊聊最近很紅的AI生成動畫圖片

不廢話先上圖
https://imgur.com/G9gKpXP
https://imgur.com/U9HNT5v
https://imgur.com/tVK8Am0
https://imgur.com/Rx1OQAE
https://imgur.com/M70u9O7
https://imgur.com/eQlOjjl
https://imgur.com/VkXvv8b
https://imgur.com/ohMnJ6p
https://imgur.com/g01yYrb

稍微瑟瑟版本
https://imgur.com/366A3aG
https://imgur.com/0KWzZei


雖然動畫專門版的 StableDiffusion 還沒釋出

(https://www.reddit.com/r/StableDiffusion/comments/ww0yfq/coming_soon_stable_diffusion_anime_version/
但其實拿目前市面上有的模型開源碼跟API
就算不 fine tune (指在自己的個人訓練集進行微調
也能有不少不錯的結果
而且因為是開源的 不會有額度的問題可以無限生成


至於造成這波圖像生成革命的推手
正式所謂的 Diffusion / Score-matching model 系列
一般往前最早大約推到2015年這篇文章 [1]
https://arxiv.org/abs/1503.03585
Deep Unsupervised Learning using Nonequilibrium Thermodynamics

不過船過水無痕 之後幾年還是一直由GAN (Generative Adversarial Netwok 生成對抗網路) 統領生成模型這塊
直到2019年後兩派人馬分別用不同個觀點把這系列的效果真的做起來後
才有我們今天所看到的這些結果


所以說 Diffusion model 到底是什麼 會什麼效果可以這麼好
下面分三個面向來談
真的想深入了解的很推薦今年 CVPR 的 tutorial
https://cvpr2022-tutorial-diffusion-models.github.io/
深入淺出的從不同面向介紹這些模型


=================== 以下專業內容可跳過 ===================

1. Diffusion model as denoiser

最直覺最好解釋 同時也可能是最正確的觀點
是把 Diffusion model 當作一個不斷去噪的過程
以下圖片分別取自 DDPM 的 Paper [2] 以及上面提到的 tutorial
https://imgur.com/kkj76zH
https://imgur.com/uEPubtG

第一張圖示從右到左 x0 到 xT 不斷地加噪音
而訓練是學習如何把不同程度噪音的圖片還原成原本的資料
由於還原無法完美 所以嘗試還原再加上一定程度的噪音
相當於學習如何從一個噪音較多的 xt 到一個噪音較少的 x_{t-1}

而最後生成圖片的時候
則是從白噪音不斷去噪 得到我們所見到的成果
至於為什麼這簡單的解釋正是真的的原因 可以參考
Cold Diffusion: Inverting Arbitrary Image Transforms Without Noise [3]


2. Diffusion model as maximum-likelihood model

數學的角度上來講
Diffusion model 跟任何機率模型一樣
(Gaussian mixture, Hidden markov chain or whatever
都是由許多參數來描述一個機率
也就是經過上面一部一部去噪所得到的機率分佈
不過它由於利用許多如今神經網路的特性所以效果特別好

稍微讀過統計的人大概都聽過
學習一個模型最常用的就是 maximum-likelihood
白話來說 就是如何找到一組參數使得在這個參數下觀察到手邊資料的機率是最大的
而所謂訓練去除噪音的過程
其實就是在最小化訓練集機率分佈跟模型機率分佈的交叉熵的某個上界
以達到 maximum likelihood 的效果
詳細推導可以參考
https://lilianweng.github.io/posts/2021-07-11-diffusion-models/
而這也是 DDPM [2] 或者 2015 那篇 [1] 的看法
另外同樣機率模型來說 Diffusion model 也可以看作一種 energy model
又或者是 hierarchical VAE 的特例


3. Diffusion model as discretization of a reverse stochastic differential equation

如果把剛剛一部一部往前加噪音連續化
那將成為一個隨機微分方程的軌跡 (trajectory)
將它從我們感興趣的圖片的機率分佈帶到高斯噪音
而這個隨機微分方程其實是可逆的
往回走得過程需要學每一個時間點的 score function
也就是 gradient of log density
如同下圖所示 (取自 https://yang-song.net/blog/2021/score/ 那邊有詳細解釋
https://imgur.com/fprfULR

而其實學習如何去噪 也可以理解成在學習這個 score function
上面的 sampling process 也跟學好 score function 後沿著這個 reverse SDE 走回來有異曲同工之妙
另外同樣 score function 系列的
比較早期的 Annealed Langevin Dynamics 也是類似的概念


=================== 以上專業內容可跳過 ===================


回來談談我一開始的圖片是怎麼生成的
基本上是先用別人稍微再 Danbooru fine tune 過的 DALL·E Min 生成原形
https://github.com/cccntu/anim_e

值得注意 DALL-E [4] 是比較早期的技術
本身是用 VQGAN 跟 autoregressive model 而不是 diffusion model
生成速度比較快而且因為別人已經 fine tune 過生成的圖片比較接近動畫

之後在用 StableDiffusion 最近釋出的權重
https://stability.ai/blog/stable-diffusion-public-release
利用 Diffuser 的 API 對圖片的品質進行微調
https://github.com/huggingface/diffusers


那麼 diffusion model 厲害的地方在哪裡呢
正因為它生成圖片是經由一次一次的去噪
所以它對生成的圖片也可以有更精細的控制
也就是你可以要求生成的資料符合某種特性
例如你可以挖洞要它補 (inpainting
可以要生成的圖像是某個角色/某個畫師的畫風
當然也可以各種修圖微調
只要你的訓練集某種程度上包含你想要生成的圖片類型
那你就可以在生成的途中把圖片導向你想要的模樣
不過由於以上這些目前都沒有api必須手寫 所以還沒嘗試

事實上以數學的語言來說
你甚至可以做 posterior sampling
因此這不僅僅侷限於圖片生成
甚至可以影響到所有需要 prior 來進行 optimization 的問題
嗯嗯這已經逐漸到個人研究主題的範疇了

無論如何 Diffusion model 真的是個很讚的東西
因為它背後充滿了酷炫的數學
同時你也可以無視這些拿它來瑟瑟
它顯示了數學推導如何直接在生活產生實質的影響

有興趣更深入了解的人下面網站有豐富的資源
https://github.com/heejkoo/Awesome-Diffusion-Models
https://scorebasedgenerativemodeling.github.io/

置底貼圖
https://imgur.com/UJ39mEP
https://imgur.com/2yuFxoE
https://imgur.com/Snnlp5N
https://imgur.com/m3Nlzsq
https://imgur.com/VCP0btu
https://imgur.com/yOpgscG
https://imgur.com/Cg0R6R6


[1] Sohl-Dickstein, J., Weiss, E., Maheswaranathan, N., & Ganguli, S. (2015,
June). Deep unsupervised learning using nonequilibrium thermodynamics. In
International Conference on Machine Learning (pp. 2256-2265). PMLR.

[2] Ho, J., Jain, A., & Abbeel, P. (2020). Denoising diffusion probabilistic
models. Advances in Neural Information Processing Systems, 33, 6840-6851.

[3] Bansal, A., Borgnia, E., Chu, H. M., Li, J. S., Kazemi, H., Huang, F.,
... & Goldstein, T. (2022). Cold Diffusion: Inverting Arbitrary Image
Transforms Without Noise. arXiv preprint arXiv:2208.09392.

[4] Esser, P., Rombach, R., & Ommer, B. (2021). Taming transformers for
high-resolution image synthesis. In Proceedings of the IEEE/CVF conference oncomputer vision and pattern recognition (pp. 12873-12883).

--
北歐組一生推
https://i.imgur.com/ydMoryp.jpg

https://i.imgur.com/njHa0OA.jpg
https://i.imgur.com/KVrWmNb.jpg
https://i.imgur.com/leUc4jP.jpg
https://i.imgur.com/aWFuDE4.jpg

--

※ PTT 留言評論
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 73.222.84.130 (美國)

※ 文章網址:
https://www.ptt.cc/C_Chat/M.1661681711.A.DE3

diabolica08/28 18:16laplace

attacksoil08/28 18:21已備份 感謝

※ 編輯: cybermeow (172.58.35.190 美國), 08/28/2022 18:23:49

Vulpix08/28 18:37挖洞補圖可以用來去除浮水印吔XD

Grothendieck08/28 18:42放個有碼片測試看看嗎

kirimaru7308/28 18:58我可不可以理解成 有一個專業的去雜訊模型

kirimaru7308/28 18:58結果他的慣老闆丟了越來越過份的雜訊圖給他

kirimaru7308/28 18:58他的腦洞被打穿後就獲得了把任何雜訊看出圖片的能力

也是沒錯

k1853531808/28 19:13已收藏

hdjj08/28 19:13其實就像你看天花板上的污漬,大腦會發揮腦補(降噪)的能力,把

hdjj08/28 19:15原本無意義的色塊和腦中的資料庫連結比對,產生類似的資料包

agario08/28 20:12如果想全職做AI圖片生成的開發,可以去哪家公司?

看你想做哪塊吧 幾家大公司 Google meta amazon Microsoft 我猜加減都有 Nvidia 圖片生成一直做很兇 像是上面 tutorial 就有兩個 Nvidia 動畫相關日本那邊 preferred network 應該做一段時間了

https://crypko.ai/

不然其實像是midjourney和StableDiffusion都是自己的團隊 有心也可以自己找人慢慢做起來

※ 編輯: cybermeow (172.58.35.190 美國), 08/28/2022 21:38:04

eric0082608/28 21:49先收藏再拜讀

agario08/28 22:13你說的這些在台灣不見得有相關的缺吧,有沒有台灣的

cybermeow08/28 23:04Q 臺灣公司生態我不熟 可是臺灣人才濟濟而且環境應該

cybermeow08/28 23:04還可以 還是自己創業吧www 認真說應該還是接下來幾年

cybermeow08/28 23:04看看 看臺灣ai產業會不會起來

cybermeow08/28 23:06說真的台灣真的是有人材沒產業一堆人都跑到國外

xkiller190008/29 00:32我雖然看不懂但是我知道色色貓為了生成ㄌㄌ色圖

xkiller190008/29 00:32非常努力,性欲果然是人類的原動力(

蘇格拉底說過 人因色圖而偉大 (並沒有

※ 編輯: cybermeow (172.58.35.190 美國), 08/29/2022 06:28:23

FAccounting08/29 08:18

inte629l08/30 09:58

yoyololicon08/30 16:06想問一下 你說maximum likelihood 的解是從score ma

yoyololicon08/30 16:06tching 的方向解釋的嗎 我記得DDPM用機率去看應該跟

yoyololicon08/30 16:06VAE一樣都是maximize a lower bound

yoyololicon08/30 16:07自己沒修過微方所以sde那套解釋一直都不是很懂XD

yoyololicon08/30 16:08另外自己最近的研究在解inverse problems using dif

yoyololicon08/30 16:08fusion models ,有機會可以交流看看:)

maximum likelihood是第二個 你說的沒錯跟VAE那套一樣就是ELBO 我寫最小化上界所以也是最大化下界 score matching 才是對到 sde 解釋 交流很歡迎可以密我 我現在就在研究怎麼拿diffusion model當prior做posterior sampling 解inverse problem應該可以算是其應用之一

bitcch08/30 17:56推講解

※ 編輯: cybermeow (172.58.43.8 美國), 08/30/2022 21:24:30