[闲聊] DDPM: 从随机微分方程到AI图片生成

楼主: cybermeow (我有一只猫)   2022-08-28 18:15:02
周末闲著来聊聊最近很红的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_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
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 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
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 on
computer vision and pattern recognition (pp. 12873-12883).
作者: diabolica (打回大師再改ID)   2022-08-28 18:16:00
laplace
作者: attacksoil (击壤)   2022-08-28 18:21:00
已备份 感谢
作者: Vulpix (Sebastian)   2022-08-28 18:37:00
挖洞补图可以用来去除浮水印吔XD
作者: Grothendieck (A. Grothendieck)   2022-08-28 18:42:00
放个有码片测试看看吗
作者: kirimaru73 (雾丸)   2022-08-28 18:58:00
我可不可以理解成 有一个专业的去噪声模型结果他的惯老板丢了越来越过份的噪声图给他他的脑洞被打穿后就获得了把任何噪声看出图片的能力
作者: k18535318 (苯异丙胺)   2022-08-28 19:13:00
已收藏
作者: hdjj (hdjj)   2022-08-28 19:13:00
其实就像你看天花板上的污渍,大脑会发挥脑补(降噪)的能力,把原本无意义的色块和脑中的数据库连结比对,产生类似的资料包
作者: agario (Agar.io)   2022-08-28 20:12:00
如果想全职做AI图片生成的开发,可以去哪家公司?
作者: eric00826 (Eric)   2022-08-28 21:49:00
先收藏再拜读

Links booklink

Contact Us: admin [ a t ] ucptt.com