[閒聊] DDPM: 從隨機微分方程到ACG圖片生成
週末閒著來聊聊最近很紅的AI生成動畫圖片
不廢話先上圖
https://imgur.com/G9gKpXP
稍微瑟瑟版本
https://imgur.com/366A3aG
雖然動畫專門版的 StableDiffusion 還沒釋出
(https://www.reddit.com/r/StableDiffusion/comments/ww0yfq/coming_soon_stable_d
iffusion_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
第一張圖示從右到左 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 equati
on
如果把剛剛一部一部往前加噪音連續化
那將成為一個隨機微分方程的軌跡 (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
[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 on
computer vision and pattern recognition (pp. 12873-12883).
--
北歐組一生推
https://i.imgur.com/ydMoryp.jpg
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 73.222.84.130 (美國)
※ 文章網址: https://www.ptt.cc/bbs/C_Chat/M.1661681711.A.DE3.html
推
08/28 18:16,
1年前
, 1F
08/28 18:16, 1F
推
08/28 18:21,
1年前
, 2F
08/28 18:21, 2F
※ 編輯: cybermeow (172.58.35.190 美國), 08/28/2022 18:23:49
推
08/28 18:37,
1年前
, 3F
08/28 18:37, 3F
推
08/28 18:42,
1年前
, 4F
08/28 18:42, 4F
推
08/28 18:58,
1年前
, 5F
08/28 18:58, 5F
→
08/28 18:58,
1年前
, 6F
08/28 18:58, 6F
→
08/28 18:58,
1年前
, 7F
08/28 18:58, 7F
也是沒錯
推
08/28 19:13,
1年前
, 8F
08/28 19:13, 8F
推
08/28 19:13,
1年前
, 9F
08/28 19:13, 9F
→
08/28 19:15,
1年前
, 10F
08/28 19:15, 10F
推
08/28 20:12,
1年前
, 11F
08/28 20:12, 11F
看你想做哪塊吧
幾家大公司 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
推
08/28 21:49,
1年前
, 12F
08/28 21:49, 12F
推
08/28 22:13,
1年前
, 13F
08/28 22:13, 13F
→
08/28 23:04,
1年前
, 14F
08/28 23:04, 14F
→
08/28 23:04,
1年前
, 15F
08/28 23:04, 15F
→
08/28 23:04,
1年前
, 16F
08/28 23:04, 16F
→
08/28 23:06,
1年前
, 17F
08/28 23:06, 17F
推
08/29 00:32,
1年前
, 18F
08/29 00:32, 18F
→
08/29 00:32,
1年前
, 19F
08/29 00:32, 19F
蘇格拉底說過 人因色圖而偉大 (並沒有
※ 編輯: cybermeow (172.58.35.190 美國), 08/29/2022 06:28:23
推
08/29 08:18,
1年前
, 20F
08/29 08:18, 20F
推
08/30 09:58,
1年前
, 21F
08/30 09:58, 21F
推
08/30 16:06,
1年前
, 22F
08/30 16:06, 22F
→
08/30 16:06,
1年前
, 23F
08/30 16:06, 23F
→
08/30 16:06,
1年前
, 24F
08/30 16:06, 24F
→
08/30 16:07,
1年前
, 25F
08/30 16:07, 25F
→
08/30 16:08,
1年前
, 26F
08/30 16:08, 26F
→
08/30 16:08,
1年前
, 27F
08/30 16:08, 27F
maximum likelihood是第二個 你說的沒錯跟VAE那套一樣就是ELBO
我寫最小化上界所以也是最大化下界
score matching 才是對到 sde 解釋
交流很歡迎可以密我
我現在就在研究怎麼拿diffusion model當prior做posterior sampling
解inverse problem應該可以算是其應用之一
推
08/30 17:56,
1年前
, 28F
08/30 17:56, 28F
※ 編輯: cybermeow (172.58.43.8 美國), 08/30/2022 21:24:30