AIGC内容分享(二十一):感性的认识扩散模型

本文通过污水扩散的比喻,讲解了扩散模型的概念,如加噪与去噪过程,以及如何通过训练和推理生成模型。介绍了时间步的概念并讨论了模型训练与推理的实际应用,预示了后续关于文本控制生成的内容。
摘要由CSDN通过智能技术生成

目录

01什么是扩散模型?

污水的扩散

扩散模型的概念

时间步的概念(time-step)

02扩散模型的训练

03扩散模型的推理

04总结


01什么是扩散模型?

  • 污水的扩散

本期教程作为AIGC入门系列的第一篇,我们来聊聊什么是扩散模型。当然,我们限定在感性认知的前提下。首先想到扩散,我们很容易想到这是一个由小到大,或者由浅入深的过程。例如,工厂偷偷向湖泊里面排放污水,污水会逐渐扩散,最后将整个湖泊都污染了,使得我们原来干净透彻的湖水变得面目全非。

那么如果我们要治理污水,恢复湖泊本来的面目。我们可以怎么做呢?第一步,我们可以先用化学试剂与污染物起反应,消除掉一部分污染物,此时河面会稍微清澈一些。然后我们可以往河水里加入絮凝剂,又可以沉淀掉一些污染物,河水也更干净了一些。最后我们可以种植一些能够吸收污染物的绿色植物,将湖泊里的污染物彻底清理干净。自此,前面扩散的污染就被全部清理干净,湖泊恢复了本来的面貌。(注意哦,手工星完全不懂治污流程,上面的过程纯粹是瞎编的!🙂🙂🙂)

通过上面的流程,我们其实就已经经历了扩散与逆扩散的过程。工厂偷偷排污,以致于污染了整个湖泊,这就是一个污染物扩散的过程;而治理污水就是一个逆扩散的过程,将扩散出来的污染物一点点的清除掉。有了这个感性的认识,我们再来看看AIGC当中大名鼎鼎的扩散模型。

  • 扩散模型的概念

如果我们对一张干净的图片进行“排污",这里我们用高斯噪声作为污染物,所以"排污"就是对图片加噪的过程。那么随着持续的加噪,噪声扩散的强度越来越大,使得我们原来干净的图片变得逐渐模糊,以至于最后面目全非,完全分辨不出是一个骑行的小姐姐了,如下图所示

如果此时我们训练一个“治污模型”,它能够将图片恢复,就像上面的湖泊“治污”流程那样,一步一步的治理污染,去除噪声,慢慢的将面目全非的图片恢复到干净的原始图片,如下图所示。

那么这个“治污模型”就是一个非常好用的生成模型了。为什么这么说呢?这个“治污模型”不只是把一张被污染的很严重的图片给恢复了而已吗?它并没有生成新的图片啊?这个思考非常棒,也很有代表性。那么既然它没法生成新的图片,为什么手工星称它已经是一个非常好用的生成模型呢?其实它确实具备了生成图片的能力。因为当你把一张图片持续加噪,得到一张面目全非的图片,那么这张面目全非的图片,实际上跟我们直接从高斯分布随机取一张噪声图,是等价的。也就是说,当有了一个“治污”模型之后,我们直接送给他一张随机生成的噪声图,它也能通过一步一步的去噪流程,生成一张符合我们审美的图片了。amazing!是不是很神奇,这样的话,我们是不是确实可以称它为“生成模型了”

  • 时间步的概念(time-step)

前面的流程我们一直在强调一步一步的加噪或者一步一步的降噪。为什么没法一步到位,直接进行一步加噪和一步降噪呢?想象一下我们湖泊污染过程,污水是慢慢扩散到整个湖泊的,而不是瞬间就把整个湖泊给污染了。同样的,治污过程也不是一蹴而就的,没法直接快速的将所有污染治理干净,一般都是一步一步,一点一点的治理的。这在直觉上很好理解,一步一步的操作总要比一步到位简单很多,同样的在扩散模型中也是一步一步的降噪比一步到位的降噪更容易学习。因此也会有更好的效果。所以扩散模型中一般都有时间步的概念(time-step),就是事先定义好花多少步将一张图片完全加噪为面目全非的随机噪声,同样也对应着降噪过程花多少步慢慢的恢复到正常图片。当然,这里的时间步会存在一个矛盾,就像治理污水一样,步数太多,虽然每一步的效果比较容易保证,但是需要的步数太多,流程太慢。而步数如果定义的太少,那么虽然效率提升了,但是并不容易得到好的恢复效果。不过最后,手工星还是要友情提醒一下,这里是我们感性认识扩散模型的部分,实际上的加噪过程是可以通过数学公式简化,实现一步到位的。但是对于目前我们入门来说,可以暂时先不考虑优化。另外这个时间步通常是很大的,例如可以是1000步,所以当前阶段,大家只要要时间步的概念,并且知道它通常是比较大的就行了。

02扩散模型的训练

我们都知道,AI是基于学习的方法。AIGC也不例外,扩散模型也不例外。学习就意味着需要提供很多数据。那么我们需要如何准备数据才能训练出一个治污高手模型(去噪模型)呢?这里我们使用一个例子来说明。手工星非常喜欢宠物狗,手机壁纸都是狗子的图片,每次锁屏都想看到不一样的狗子,奈何手机里面狗子的图片不多。因此想用扩散模型方法训练一个去噪模型,这样就能生成无穷无尽的狗子图片。

首先是搜集狗子的图片,并且越多越好,于是手工星从网络上爬取了大量的狗子图片,做成了一个狗子数据集。

然后我们开发一个“排污”程序(加噪程序),它的作用就是按照前面介绍的加噪方法,给正常图片一步一步的加入噪声,直到图片面目全非。然后从加噪过程随机选择一些“时间步-噪声-加噪后图片”组成的训练三元组。

有了这些训练三元组,我们就可以很方便的训练去噪模型了。对于去噪模型来说,输入就是加噪后的图片以及时间步,输出就是去噪模型预测的噪声。我们训练的目的就是让去噪模型在每一个时间步预测的噪声和真实噪声尽量接近。当经过几万、几十万次的训练后,我们的去噪模型预测的噪声已经和真实噪声非常接近了。

03扩散模型的推理

有了上面训练出来的狗子去噪模型,下面就是激动人心的时刻了,我们可以使用去噪模型生成狗子图片了。首先我们从高斯分布中随机采集一张高斯噪声图片,然后送入到去噪模型当中,假设我们的时间步设置的是1000,那么就将高斯噪声图片经过去噪模型的1000次降噪,最后就会得到一个狗子图片了。而且这个狗子图片和我们训练数据中的狗子图片不一样,完全是去噪模型生成出来的,就像是我们的大脑脑补出来的图片一样。并且当我们采集的高斯噪声不同,生成出来的狗子图片也完全不同,此时我们就已经实现了一个能够生成无穷无尽狗子图片的“生成模型”了!

04总结

这一期的感性认识扩散模型到这里就结束了,是不是并没有想象相中的那么难!😮😮😮我们从湖泊的污染和治理说起,引申到图片的加噪与去噪。最后介绍了如何用去噪模型生成图片。下一期我们将介绍扩散模型中的文本控制。大家有没有发现我们现在的生成模型缺少控制能力。例如上面介绍的狗子去噪模型,它训练完之后确实能生成狗子的图片,但是假如我想生成一张黄皮肤、大眼睛的狗子图片,我们的狗子去噪模型就无能为力了。因为它生成的图片具有一定的随机性,虽然是一只狗子,但是狗子的属性我们完全无法控制。而在很多生成领域,我们其实是希望能够具体控制模型生成的效果的。因此下一期将介绍如何通过文本描述来控制模型生成一张符合我们要求的图片,喜欢的朋友可以收藏手工星的频道“AI手工星”,我们下期见吧。

  • 21
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

之乎者也·

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值