00:00
各位小伙伴们大家好,在上一个视频当中,我们给大家介绍了一下diion model它的工作原理,那如果在实际工作当中,我要去实现这个diion model的时候,我怎么来实现呢?那接下来我们就给大家来看一下diion model它的一个实现流程,那在介绍diion model的工作原理的时候,我们说过deusion model分为前向过程和反向过程,那前向过程呢,是往清晰的图片当中去添加噪声,反向过程是从一个纯噪声当中我去去噪,获取一个清晰的图片,这是我们在介绍ffion model原理的时候给大家介绍的内容,那如果我要实现这个过程的时候,我要怎么去做呢?那在这里我们来给大家去看一下它的伪代码,那这是我们在DeFion model它的论文当中啊,给大家去截出来的这个微代码,那在实现过程当中的时候,大家看一下我们分成两步,那前项过程的时候,我们就叫做什么training,也就是训练阶段。如果。
01:00
是反向过程呢,我们就叫做simple,叫做采样阶段,也就说在实现的时候,我们把ffion model分成训练过程和采样过程,那在训练过程当中,我们就往清晰的图片当中去添加噪声,获取一个高丝分布的噪声结果,那在采样阶段的时候,我们就从高斯噪声当中去去噪,来获取一个逼真的图片,那这时候我们在这里这两个阶段,那下面我们就依次来给它去看一下它的前向过程,也就是训练阶段和反向过程,采样阶段是如何来实现的,首先我们来看训练过程,那训练过程的时候大家看一下在这里我们有一个什么repeat,就是重复这个过程,那重复这个过程直到什么时候结束呢?直到模型拟合结束。好,那下面我们就给大家来看一下,我具体要重复哪一个过程,那大家想一下,在训练模型的时候,我是不是收集到了很多数据啊。所以在这里第一。
02:00
一步我们就从数据当中进行采样,那这个数据就是什么清晰的图片,那我采样出来一个图片,那这个图片我们就叫做X0,也就是第一个时间部的清晰图片,好拿到这个X0之后,然后我再设置一下什么呢?大家看一下这是什么?从均匀分布当中去选择一个T,选择一个时间部,那这个时间部描述的是什么?描述的是我要向这个清晰的图片当中添加多少次高斯噪声,那这个T啊,当然它是一个什么?哎,它是一个超参数,可以我们自己去进行设置,比方说我设置成20,那它就会添加20步的噪声,如果你设置为十,30都是一样的啊,你设置为几,它就往我们清晰的图片当中去添加几部噪声,然后大家再来想一想,我去添加噪声的时候,我每次添加的是什么呀?是不是高斯分。
03:00
分布啊,所以每次添加的噪声是服从正态分布的这样的一个随机噪声,好,那除了我们每次添加的噪声服从这个标准正态分布,大家来想一想,当我添加完噪声之后,比方说我的T,我选择20,我添加完20步噪声之后,我最终获取到的那个数据是不是也是一个随机噪声,那这个随机噪声我们也假设啊,它是一个高斯分布啊,标准正态分布,所以在这里大家看一下这个地方它就是什么呀?它就是我们两个表示,一个是你每次向图片当中添加的噪声,然后再一个就是我们的目标值,也就说你添加了这些噪声之后,我们最终获取到的结果应该是服从一个高斯分布的结果。好,那现在我们给大家来看一下,我有了这三个数据,那接下来我就去构建我相应的模型就OK了。那在。
04:00
这构建模型的时候,那我模型当中的参数谁呢?我模型当中的参数是这个西塔,比如说我要更新模型当中的西塔,使我添加噪声之后输出的结果近似于我们的标准正态分布,然后大家来看啊,这个地方X0是我们的。原始图片,然后这是什么?哎,我们刚刚说了它是什么?每一步你往我们清晰的图片当中添加的噪声,那在这大家看一下,你每次添加一个噪声之后,我们的图片就变成了什么,就变成了这个样子,那阿尔法T它表示的是什么呢?表示的我每次向图片当中添加噪声的时候,图片和噪声相应的比重,然后现在大家看一下啊,阿尔法T的开根号是加在原始图片前面的,然后一减去阿尔法T开根号是加在谁前面的?是加在你的高斯噪声前面的,然后这里就是我经添加高斯噪声之后,我每一步的图片变成了什么样子,那我在这里要添加多少步噪声呢?大家看一下在这里我要添加多少步?要添加梯补噪声,我添加梯补噪声之后,大家想一下这个最终的结果,最终的结果它就应。
05:22
该是一个什么?添加梯步噪声之后,它就应该是什么,应该是一个高斯分布,所以在这里我们就拿这个高斯分布减去你添加梯步噪声之后,那大家来想一下啊,这个高斯噪声相当于是我们的目标值,这个后面绿框当中这一部分相当于是我们的什么预测值,我希望它俩之间要怎么样,要越接近越好,所以在这里用它俩的差的平方来表示它们之间的这个差异,那大家想象我这里用的是什么损失啊,是不是就是我们的Ms SE损失啊,也就说我通过Ms SE损失来衡量什么,来衡量高斯噪声和你往图片当中添加噪声中获取的那个结果之间的差异,我希望这个差异越小越好,那这时候我们就到什么情况呢?到你迭代步数啊,我更新这个C特值,那这个C特值呢,是一个可更新的参数啊,然后直到什么情况,直到拟合就OK了,直接重复这个过程,直到拟合那。
06:24
我们就训练好了我的模型,好,那这是我们在训练阶段的一个内容,那训练完之后大家来想我是不是就反向过程了,那反向过程的时候,大家想一想我的输入应该是什么?是不是一个随机噪声啊,然后对这个随机噪声我去怎么样去噪,然后就获取一个清晰的图片,好下面我们就来看一下这个反向过程,那这个反向过程的时候,我们刚刚说的它叫做什么?叫做simple采样过程,那在这个采样过程当中,我们的输入是什么?是XT,大家来想一想,我们这个XT它是不是服从一个高斯分布啊,所以这个XT这里啊,它是服从均值为零,方差为一的这样子的高斯分布,然后再接下来我们就从这个XT当中一步一步的去除噪声,直到生成一个清晰的图片,好,那下面大家看在这里我们就有一个什么呀,For循环,那T的变化就是从大T开始,一直到一也说我要去这么多步的。
07:24
噪声,然后当你的T还在大T到一之间的时候,我们就生成Z啊,这个Z呢,服从高斯分布,如果这个T等于零了,大家想一下,我这个Z还去生成吗?还去去噪吗?不去去噪了,所以Z就等于零,每次生成成Z之后,然后我要从什么从我的噪声当中去噪,获取原始的图片,那在这里去噪时候,大家看一下我利用下面这个公式来进行处理,那阿尔法T是我们上一步设置好的那个结果,然后这个sit塔我是不是也是学习过来的参数啊?那有了这些之后,大家看一下XT是什么,是从X大T1步一步减下来的结果,所以在循环这个过程的时候,我们就从纯噪声,然后慢慢的进行一个去噪,获取到了这个结果哈,然后获取到这个结果之后,大家想一想,当这个X我遍历完之后也说遍历完T啊T从大T到一之后我返回。
08:24
那X0我们就认为它是一幅清晰的图片,这就是我们在这里这个一幅优model去实现的整个过程,包括训练采样它的整个一个过程,好,那这个过程我们就在这里给大家说这些,然后我们回到讲义上来给大家去看一下啊,那整个训练阶段也是我们的前项过程,它的整个步骤就是首先你要从训练集当中去采样X0,那这个X0是一张图片,清晰的图片,然后随机选取一个time step,就是你要增加多少步噪声,然后生成高斯噪声,那这个高斯噪声表示什么啊?表示你每次添加的时候往图片当中添加的那个噪声,还有最终我们的目标值,然后调用模型去预估它。那大家注意一下,这里有一个什么IC参数,那这个参数是可以用梯度下降算法来进行更新的,而我们的噪声,刚刚我们讲到了要用什么MSE也说你最终获取到的那个结果,添加噪声的那个结果应该服从一个高。
09:24
资分布,它俩之间的差值啊,应该是比较小的,比较接近的,所以在这里我们就设计了这个MSE损失来进行反向传播,更新参数,训练我们的模型就OK了,这是我们在训练阶段的时候,训练完之后我获取到了这个C它的结果啊,获取到模型的参数大小,我就可以去做什么反向过程,也说我们的采样过程啊,那反向过程的时候,这个步骤跟刚刚我们介绍内容是一样的,首先从高斯分布当中我去采样,采样完之后按照大T到一的顺序进行迭代,那这时候迭代时候就干什么,就去噪就OK了,然如果T等于一,那Z就等于零,这是Z呢,是我们要去除的噪声,如果T大于零,我们就从高斯分布当中去采样Z,那这个Z就满足什么啊,这个Z就满足高斯分布,然后我们设置好这些之后,然后利用逆向过程学习出来均值,也就说我这个均值我可以学习出来,那在这里大家注意一下,大家看一下阿尔法T是不。
10:24
跟上面是一样的,跟上面是一样的,XT是在这里啊,我去从高斯分布当中获取到的结果,那C呢,是在训练过程当中学习到,所以这个地方这个均值我们很容易就获取到,然后获取到这个均值之后,然后呢,我们来获取我们的方差,那这个均方差呢,它跟贝塔是相关的,那这个贝塔啊,它等于我们的一减去阿尔法,所以这个贝塔我也可以获取到,然后在这里这个西塔T啊,我也可以获取到,然后获取到之后,然后每一次获取到的前一步的数据就是XT减一,就是我们在这里获取到这个均值加上CT乘以Z,那这个Z就是我们在这里从高斯分布当中采样出来的结果,我只要迭代这个过程,直到T等于一的时候,我就最终恢复出来了,我们的X0,这就是我们在这里这个ion model,它去实现的整个过程,好,那现在我们来看一下这整个过程哈,如果我按照。
11:24
If model的思想来做的时候,我是不是从数据集当中采样X0,那这个X0我们刚刚讲了它是一个什么图片,然后这时候高斯分布当中去进行采样的时候,大小,这个采样的大小应该是多少,是不是也是跟图片大小是一样的,那前面已经给大家说过了,Diion model因为图像空间当中哈,你的维度比较大一些,所以你的计算量比较大,所以我们需要进行一些调整,那在这里我们给大家来看一下啊,如果在图像空间当中进行采样的话,进行前向过程和反向过程的时候,那图像空间呢是非常巨大的,它有三个颜色通道,每个颜色通道呢是512乘以512这样的大小,所以它就是什么786432位这样的空间,那这时候大家想一下,诶,我去进行添加噪声,去除噪声的时候,这个计算量是不是很大啊,所以这时候我们可以去做什么,诶可以把。
12:24
啊,引入我们的。潜在空间当中去,也就说stable diion,哎,它为了解决速度问题呢,利用潜在空间的扩散,也就说利用潜在空间扩散模型latention不是在高维的图像空间当中来增加噪声和去除噪声,而是首先呢,要把我们这个图像压缩到浅空间当中,压缩到浅空间当中之后,这个浅空间啊,相对于我这个图片就会小很多,比方说现在这个图片是512乘512的,那我把它压缩一下,变成64乘以64这样的特征,那这时候大家想一下,我是不是就比这个512乘512的小了很多啊,那我在进行处理的时候,大家想一下,我的速度是不是就会有很大的提升啊,这就是我们在这里这个内容啊,那s stableion在实现的时候,它就是需要把我们的图片压缩到潜在空间,在潜在空间当中进行去噪和添加噪声来完成我们这个训练和。
13:26
采样的过程来生成新的图片。好,那这个ion model的实现过程我们就给大家介绍这些,我们先把视频暂停一下,稍后我们来看一下stable model的网络架构。
我来说两句