最近流行的AI画图,相信大家都不陌生。从AI绘图软件生成的作品来看,它已经击败了众多人类艺术家,获得了数字艺术类的冠军,如今DALL.E、Imagen、novelai等国内外平台遍地开花。或许你也曾点开过相关网站,试图让AI描绘出你脑海中的风景,或者上传一张自己的帅气/美照,然后嘲笑最后的粗人。那么,在你感受AI绘图魅力的同时,你有没有想过(不,你一定想过),它背后的玄机是什么?△在美国科罗拉多科技展上获得数字艺术类冠军的作品——《太空歌剧院》一切都从一个叫做DDPM的模型说起……什么是DDPM?DDPM模型,全称DenoisingDiffusionProbabilisticModel,可以说是现在扩散模型的鼻祖。与以往的GAN、VAE、flow等模型不同,扩散模型的总体思路是以偏向优化的方式从纯噪声图像逐渐生成图像。△现在有生成图像模型的对比。可能有朋友会问,什么是纯噪声图像?这很简单。当老式电视没有信号时,伴随着“刺耳”噪声的雪花画面是纯噪声画面。DDPM在生成阶段所做的就是一点一点地去除这些“雪花”,直到清晰的图像露出真面目。我们称这个阶段为“去噪”。△纯噪点图:通过老电视雪花屏的描述,大家可以感受到去噪其实是一个相当复杂的过程。没有一定的去噪规律,也许你忙了很久,到最后还是想哭,但在陌生的图片面前无泪。当然,不同类型的图片也会有不同的去噪规则。至于如何让机器学习这个规则,有人灵机一动,想到了一个绝妙的方法:既然去噪规则不好学,那我先加上去好不好?噪声法,先把一张图变成纯噪声图,然后把整个过程倒过来?这样就建立了扩散模型的整个训练-推理过程:首先,在正向过程(forwardprocess)中,通过逐渐加入噪声,将图像转化为近似可用高斯分布的纯噪声图像;接着进行逆向处理(reverseprocess))逐渐去噪生成图像;最后,以增加原始图像与生成图像的相似度为目标,对模型进行优化,直至达到预期效果。△DDPM的training-reasoning过程就到这里,大家的接受度如何?如果感觉还行,如果容易,准备好,我要开始大动作了(深度理论)。1.1.1前向过程前向过程也称为扩散过程,整体是一个参数化的马尔可夫链。从初始数据分布x0~q(x)开始,在每一步的数据分布中加入高斯噪声T次。从第t-1步xt-1到第t步xt的过程可以表示为高斯分布:通过适当的设置,随着t的增加,原始数据x0会逐渐失去其特征。我们可以理解为经过无限次的加噪步骤后,最终的数据xT会变成一张没有任何特征的图片,完全是随机噪声,也就是我们最初所说的“雪花屏”。在这个过程中,可以通过设置超参数βt来控制每一步的变化。在我们知道原图是什么的前提下,前向加噪的整个过程可以说是可知可控的。我们完全有可能知道每一步生成的数据是什么样子的。但是问题是每次计算都需要从起点开始,结合每一步的过程,慢慢推导到你想要的某一步的数据xt,太麻烦了。幸运的是,由于高斯分布的一些特点,我们可以一步到位直接从x0得到xt。注意这里的和是组合系数,本质上就是超参数的βt表达式。1.1.2逆向过程同正向过程。逆向过程也是马尔可夫链,只是这里使用的参数不同。至于具体的参数,这是我们需要的机器学习部分。在了解机器如何学习之前,我们首先思考,基于某一个原始数据x0,从第t步xt到第t-1步xt-1准确推导的过程应该是怎样的?答案是这仍然可以用高斯分布来表示:注意这里必须考虑x0,也就是说逆向生成的最终图像仍然要和原始数据相关。输入一张猫的图片,模型生成的图像应该是猫,输入一张狗的图片,生成的图像也应该是与狗相关的。如果去掉x0,无论输入什么类型的图像训练,最终扩散生成的图像都是一样的,“猫狗不分”。经过一系列的推导,我们发现逆向过程中的参数sum仍然可以用x0,xt,参数βt来表示。是不是很神奇~当然,机器事先并不知道这个真实的逆推过程,它能做的就是用一个大致近似的估计分布来模拟,表示为p0(xt-1|xt)。1.1.3优化目标一开始我们提到需要通过增加原始数据与逆向过程生成的最终数据的相似度来优化模型。在机器学习中,我们计算相似度的参考是交叉熵(crossentropy)。关于交叉熵,学术上的定义是“用来衡量两个概率分布之间的差异信息”。也就是说,交叉熵越小,模型生成的图像越接近原始图像。然而,在大多数情况下,交叉熵很难或无法计算,因此我们通常通过优化更简单的表达式来达到相同的效果。Diffusion模型借鉴了VAE模型的优化思想,以变分下界(VLB,又称ELBO)代替交叉熵作为最大优化目标。通过无数步的分解,我们最终得到:看到这么复杂的公式,想必很多朋友都头大了。不过不要惊慌,这里需要注意的只是中间的Lt-1,它代表xt和xt-1之间的估计分布p0(xt-1|xt)和真实分布q(xt-1|xt,x0)不同之处。差距越小,模型最终生成的图像就越好。1.1.4了解了上面代码中DDPM背后的原理之后,我们再来看看DDPM模型是如何实现的……好奇怪。相信看到这里的你肯定不想接受成百上千行代码的洗礼。好在MindSpore为大家提供了完善的DDPM模型,两只手训练推理,操作简单,单卡即可运行。想要体验效果的朋友,只需要先pipinstalldenoising-diffusion-mindspore,然后参考下面代码配置参数:重要参数的一些分析:GaussianDiffusionimage_size:图像大小timesteps:加噪步数sampling_timesteps:采样步数,为了提高推理性能,必须小于加噪步数trainerfolder_or_dataset:对应图片中的路径,可以是下载数据集的路径(str),可以也可以是已经处理过数据的VisionBaseDataset、GeneratorDataset或MindDataset。train_batch_size:batchsizetrain_lr:学习率train_num_steps:训练步数DDPM模型计算可以使用奇智社区的NPU算力。具体操作请参考下方视频。,10:01悄悄发广告,启智社区和MindSpore给大家发福利,一年免费100万卡小时算力,去启智社区(https://openi.pcl.ac.cn/)体验it~《进阶版》DDPM模型MindDiffusionDDPM只是Diffusion故事的开始。目前,无数研究者都被其背后的壮丽世界所吸引,为之倾注心血。在不断优化模型的同时,他们也逐渐将Diffusion应用于各个领域。其中包括计算机视觉领域的图像优化、修补、3D视觉、自然语言处理中的文本转语音、AIforScience领域的分子构象生成、材料设计等。斯坦福大学计算机系博士生EricZelikman脑洞大开,尝试将DALLE-2与最近流行的另一种对话模型ChatGPT结合起来,打造一个温馨的绘本故事。△DALLE-2+ChatGPT共同完成了一个名为“Robby”的小机器人的故事,但最广为人知的应该是它在文字转图像方面的应用。输入几个关键字或简短的描述,模型就会为您生成相应的图片。比如你输入“城市夜景赛博朋克GregLutkowski”,最后的结果就是一个色彩鲜艳的具有未来科幻风格的作品。再比如输入“莫奈,撑阳伞的女人,月亮,梦”,就会生成一个很朦胧的女人肖像。配色风格是不是让你想起了莫奈的《睡莲》?想要一张逼真的风景照片作为屏幕保护程序吗?没问题!△CountryFieldScreensaver想要二维浓度更高的屏保?也可以!△写实风格的深渊山水画,上图均为悟空画画在MindDiffusion平台下制作。悟空画画是基于扩散模型的中文文胜图大模型。并行实验室,由升腾计算产品部联合开发。该模型基于悟空数据集进行训练,采用MindSpore+Ascend软硬件方案实现。跃跃欲试的朋友别着急。为了让大家有更好的体验和更大的自我发展空间,我们计划让MindDiffusion中的模型也具备可训练和推理的特性。预计明年与大家见面。啦,敬请期待。欢迎大家集思广益,生成各种风格独特的作品~(据去里面打听资料的同事说,已经有人开始尝试《张飞绣》、《刘华强切瓜》、《古希腊》众神大战哥斯拉”“是啊。嗯嗯,怎么办,突然很期待成品(?ω?))OneMoreThing就是最后一个了,现在Diffusion这么火,有人问为什么可以如此火爆,甚至风头开始超越GAN网络?Diffusion优点突出,缺点也很明显;它的很多领域还是空白,未来还是未知数。为什么会有这么多人孜孜不倦地研究它?或许,马伊琍教授的话可以为我们提供一个答案。然而,扩散过程的有效性及其对GAN的快速替代也充分说明了一个简单的道理:几行简单正确的数学推导,可以让很多人受益匪浅。比过去十年超参调试网络结构的大规模调试更有效。或许这就是Diffusion模型的魅力所在。参考链接(可滑动查看):[1]https://medium.com/mlearning-ai/ai-art-wins-fine-arts-competition-and-sparks-controversy-882f9b4df98c[2]JonathanHo,AjayJain,和彼得阿比尔。去噪扩散概率模型。arXiv:2006.11239,2020.[3]杨凌,张志龙,洪申达,许润生,赵越,邵映霞,张文涛,杨明轩,崔斌。扩散模型:方法和应用的全面调查。arXiv预印本arXiv:2209.00796,2022.[4]https://lilianweng.github.io/posts/2021-07-11-diffusion-models[5]https://github.com/lvyufeng/denoising-diffusion-mindspore[6]https://zhuanlan.zhihu.com/p/525106459[7]https://zhuanlan.zhihu.com/p/500532271[8]https://www.zhihu.com/question/536012286[9]https://mp.weixin.qq.com/s/XTNk1saGcgPO-PxzkrBnIg[10]https://m.weibo.cn/3235040884/4804448864177745
