00:00
各位小伙伴们大家好,接下来我给大家来介绍一下stableion的运行原理,在这一部分呢,我们主要会给大家介绍一下stableion在进行图像生成的时候,它的算法原理是什么,还会给大家去介绍一下stableion的模型构成,因为stableion它并不是一个单独的模型来构成的,而包含多个模型,所以在这里我们会大去介绍一下它这多个模型是什么,以及每个模型来完成什么样的任务。好,那首先我们来给大家去看一下stableion它的工作原理,那stableion它在进行图像生成的时候啊,它在底层思想还是我们的diion模型,所以在这里这个stableion的工作原理实际上就是diion模型的工作原理,所以下面我们给大家来回顾一下diffion模型是如何来进行图像生成的,Diffion模型啊,它就主要来进行图像生成,虽然在最初设计的时候,我们的diffion模型是。
01:00
动来进行图像去噪的,那现在呢,我们的底F优模型主要来进行图像生成,那除了底F优ion模型之外啊,我们还有一些其他的图像生成模型,比如说常见的GA网络啊,对抗生成网络,Va ae变分自动编码器,还有flu base model,就是我们的流模型,这些也可以来进行图像生成,不管是哪种图像生成方式啊,这些模型呢,都是基于深度学习的方式来进行学习和训练的,那下面我们给大家来分别看一下这几种模型是如何来进行图像生成的,简单给大家介绍一下。好,首先我们来看第一个我们的game网络网络啊是我们在进行图像生成的时候一种比较经典的,比较常用著名的一种网络结构,那这种网络结构啊,它在进行图像生成的时候呢,它其中有两个网络,一个网络呢叫做判别器,还有一个网络叫做生成器,那判别器呢,它用来。
02:00
判断生成的图形和原始真实的图形,它的一个真实性,也就说当我送进来一个生成的图像的时候,我们的判别器没有办法来进行判别了,就是判别不出来它是生成的,认为它是一个真实的图像的时候,那这时候我们就认为我们生成的图像足以以假乱真,那这个生成的图像是由谁来生成的呢?是由我们的生成器来生成的,也就说由我们的generator来生成的,那genator在生成这个图像的时候,它要求送进去什么呀?随机噪声,我们把随机噪声送入到生成器当中啊,然后送生成器之后,它会生成新的图片,那这个图片就是刚刚我们讲到的啊,要送到判别器当中来进行判断的图像,直到generator生成的图片,我们的判别器没有办法来进行判别了,也说不能把它判别为生成的模型的时候。那这时候我们的生。
03:00
成器就训练好了,也就说我就可以利用这个生成器来生成新的图像,这是我们的干网络,那除了干网络之外,我们的生成算法还有什么呢?Va ae,那va ae呢,就是我们说的变分自动编码器啊,那变分自动编码器哈,它分成两个结构,一个是什么呢?Encoder,一个是decoder,也就是说它有编码器和解码器两部分,那编码器呢,它是把我们的原始图像编码的一个潜在空间编码的一个特征,然后在这个特征当中,我去描述这些特征的时候,用什么来描述,用统计的方式,用概率分布的方式来进行描述,也说我这个图像当中有多个特征,每个特征我都用高斯分布,概率统计的方式啊,来对它进行描述,当我要生成的时候,我就从这些高斯分布当中来进行采样,采样之后的结果送入到我们的解码器当中去,送到解码器当中去,那解码器就可以帮我们来生。
04:00
成新的图片,这是我们这个va ae变分自动编码器,那变分自动编码器啊,它的一个特点是什么呢?它生成的图片呢,是比较逼真的哈,也说在有些领域当中,我们使用VAE的时候是非常多的,当你需要一些比较真实的图片的时候,可以使用VAE来进行图像生成。第三种生成方式就是我们的流模型,那流模型跟前面这两种哈,生成方式都不太一样,那流模型的时候呢,它是指把我们的图片送到一个网络当中啊,这个网络进行前向传播,那我会获取一个预测结果,那这个预测结果呢,我用FX来表示,然后当我有了这个预测结果,我来进行图像生成的时候,我就求这个预测结果的逆,也就是FC的逆啊,也说我现在送进去的是什么,是一个随机噪声,然后这时候我对它来求逆,求逆之后,然后生成的就是我的新的图片,这是我们的流模型,那除了我们的流模型。
05:00
Ae game网络之外,那现在使用最广泛的就是diion模型,那diion的模型呢,它是借鉴了我们在非平衡热力学当中的这个扩散原理哈,它是假设我有一个清晰的图片,那在这个清晰图片当中呢,我一步一步的向其中增加噪声,那大家想一下啊,原始是一个清晰的图片,我增加噪声之后,我的图片就会变得模糊一点点,然后再增加噪声,然后就会模糊一点点,直到我增加了T次之后我的噪声,我原始的这个清晰的图片就会变成一个什么呀,纯噪声,那有了这个纯噪声之后,然后我就可以去做什么呀?诶求它的反向过程,也说刚刚我们是从清晰的图片到纯噪声,那我如果从纯噪声到清晰的图片的时候,大家想是不是有这个反过程啊,那这个反过程呢,我们就从这个纯噪声当中一步一步的去去掉噪声啊,那去掉噪声之后,然后最后我就可以获取一个什么,获取一个避震的。
06:00
图片,这就是ion扩散模型,那咱们的stableion的工作原理呢,就是这个ion的扩散模型,也说它是基于ion扩散模型来进行图像生成的啊,之所以我们叫做扩散模型,就是因为它借鉴了我们的非平衡热力学当中扩散的思想来设计的。好那下面我们给大家来详细的看一下啊,这个diffion模型是如何来完成的,那这里啊,我们把这个diffion模型呢,分成前向过程和反向过程,那前向过程的时候,就是从清晰的图片到随机噪声的这个过程,这个过程当中啊,我们是把清晰的图片一次一次的哈,分时间部的向其中添加噪声,那最初的时候你可能添加噪声少一点,然后慢慢随着你添加的步数越来越多,那我们这个清晰的图片就会变成这种随机噪声,纯噪声,那这个噪声当中大家再也看不到这个小狗的身影,这。
07:00
是我们的前项过程,那这个前项过程大家想一想,像不像我们就在一个干净的清澈的水当中滴一粒墨汁啊,这个墨汁就相当于是我们的噪声,那这个墨汁呢,会在这个水中进行扩散,然后扩散完之后整个水面都会变得什么浑浊啊,然后你再也不是一个清澈的水了,那就是从清晰的图片到了什么,到了噪声的过程,随机噪声的过程,那现在假设我要去做什么呢?我要恢复到原来的图片,也就是说我要生成图片的时候,那大家想我是不是就从这个随机噪声恢复到原始的图片,那恢复到原始的图片的时候,大家看一下啊,我是不是就是从这个存噪声当中一步一步的去进行去噪,然后最后获取到我们清晰的图片的过程,这就是我们的逆向过程,反向过程,那整个扩散过程就分两步,一步是前向过程,向清晰的图片当中添加噪声的这个过程,每次添加的都是高斯分布的噪声。然后。
08:00
反向过程就是从随机噪声当中,我一步一步的去噪,最后得到清晰图片的过程,这是我们在这里这个扩散模型它的思想,也就是说前项式添加噪声,然后反向式去除噪声,是来降噪的整个过程这是我们的diion模型的工作方式。好,那现在我们来考虑一个问题哈,大家来想一想,我在这个图片当中去添加噪声的时候,我每次生成的噪声的维度应该是什么样子的,我衣服图片是不是有宽高,有通道,然后对于我的噪声要添加在这个图片上,是不是应该这个跟这个图片的维度是一样的,所以你每次添加噪声的时候,一样要跟这个图片大小是一样的,宽高一样,而且通道也是一样的。那比方说我这个图片呢,是512尾乘512乘以三这样的一个维度,那我每次产生的这个高斯分布的噪声也是。
09:00
这样的一个维度,512乘512乘以三这样的一个维度,那每一次每一步我都要添加一个512乘512乘三这样维度的噪声,然后一步一步的添加到纯噪声,然后到了纯噪声之后,我再每一步去除一个512乘512乘以三这样的噪声,然后直到获取到清晰的图片。大家想一下,在这个过程当中,我的计算量是不是很大,你的数据就有这么多的维度,所以你去计算的时候就需要很高的性能才可以,一般的计算机,一般的硬件是没有办法去进行处理的,所以diion模型有一个问题,就是因为你是在图像空间当中去做的,所以你的计算量去比较大一点啊,也是说标准的扩散模型,就是我们刚刚给大家介绍的这个diffion model,就是在像素空间当中来进行的,在像素空间当中进行的,哎,所以它需要处理大量的数据和高性能的显卡才可以。那如果。
10:00
我们没有很多这样的显卡,那我又想去进行图像生成,想去运行我们的diffion模型,那我是不是可以把这个diffion模型给它修改一下,那在这里进行修改的时候,大家看一下我怎么去做呢?本来的时候大家看一下啊,最初始的你的清晰图片和噪声是不是都是512乘512乘以三的这样的维度啊,在这样的维度上我来进行噪声的添加和噪声的去除,那现在我不这样去做,我在这去做的时候呢,比方说我的原始的图片,那原始的图片我去添加噪声的时候呢,我先压缩成小的清晰哈,那这里不一定是图片啊,我把它压缩成小的,这样的特征就是表示这个图片的特征,从这个小的图片上去添加噪声,那大家想一想啊,如果我是512乘512的图片,我把它压缩成64乘64大小,这个维度就降低了很多,对不对,那我再添加噪声的时候,你的计算量就会减小很多,那同样的反向的。
11:00
合成的时候,我是不是也是从一个噪声上来进行去噪啊,那这时候这个噪声我也把它压缩成64乘64的,那这时候我在每次去噪的时候,是不是就直接去噪64乘64这样大小的噪声就OK了,所以相比于我们前面直接在图像空间当中来进行去噪和添加噪声的时候,我的计算量会减小很多,那在这里啊,我们把这个噪声啊压缩到一个空间,然后把图片压缩到一个空间,那这个空间我们叫做什么呢?我们叫做浅空间,也就是说再进行噪声的添加和噪声的去除的时候,我不在像素空间进行处理了,我在浅空间当中进行处理,那这个浅空间相对于我们原始的图像空间,它的计算量就会减小很多,从而对我们高性能显卡的要求就会降低,这就是我们在这里这个对原始的diion model的改进,好,那现在我们来看一下啊,对于标准的扩。
12:00
在模型来讲,在像素空间当中进行处理的时候,我需要大量的数据和高性能的显卡呢,我需要进行一下处理,我对它进行一下改进,那改进的时候呢,我们就在哪里潜在空间当中来进行扩散,那潜在空间进行扩散的时候,我就先缩小图像,再添加噪声,然后添加噪声完,去噪的时候,我也是在浅空间当中进行去噪,去噪完了之后,然后我再恢复出原始的图像,所以这时候我就可以什么哎,大量的去减少我的数据处理量和对硬件的要求,并且我生成的结果呢,还不会差很多哈,这是我们在这里对diffion模型的一个改进,那这个改进之后的diion模型我们就叫做什么late diffion模型,也就是潜在空间的地幅优势模型,那潜在空间相对于我们的像素空间来讲,它就是一个低维的空间,这个低维空间是我们对像素空间进行了相应的压缩。
13:00
相应的处理之后获取的一个维度比较低的这样的空间,减小计算量的空间叫做浅空间,那我在进行添加噪声,去除噪声的时候,都在这个浅空间当中来完成,这就是我们这个diffion模型它的一个改进,好,那我们有了这个linkent Di模型之后哈,我们后续的stableion模型啊,就是在linkent上面来进行处理的,那下面我们给大家来梳理一下这整个过程,那在这里我们进行梳理的时候,我们还是按照DeFion模型来进行一下梳理啊,然后大家看一下这还是清晰的图片到噪声,噪声到清晰的图片,正向过程和反向过程,那在这里我们进行表示的时候,每个时间不啊,我们表示一张图片,然后这边大家看一下最初的清晰的图片,我们叫做X0,然后我们向这个X0当中添加随机噪声之后,我们就变成了X1啊X1大。
14:00
我们看一下X1对应的这幅图片,是不是就比X0的时候要模糊一些,有一些噪声的存在,这是第一个时间部的时候,那到了第二个时间部呢?我们就是在第一个时间部的基础上再继续添加噪声,那再往后啊,随着时间部的增加,然后我就获取到了一个什么哎,噪声啊,随机噪声,那这个随机噪声我们假设它服从一个什么分布呢?我们假设它服从一个高斯分布,均值为零,方差为一的高斯分布,也就是从清晰的图片添加噪声到一个随机噪声这样的过程,我们叫做正向过程,那这个正向过程完成之后,那大家想一下,这正向过程是我们想要的吗?不是我们想要什么,我们想要最终出来一个清晰的图片,生成一个清晰的图片的时候,我就需要从存噪声当中来进行去噪,那这里我就随机产生一个噪声,那这个噪声真的是随机产生的,它就是服从什么。
15:00
不准,正差分布的均值为零,方差为一,这样的高斯分布,那拿到这样的一个结果之后,然后我就一步一步的去噪,然后第一步去噪的时候,大家看一下,在这里去除噪声之后,我们还没有小狗的样子,是不是,然后再往前造,再往前走,一步一步的这样子去噪,我去噪的步数多了,大家想一下我是不是就可以生成一个逼真的图片,也就是说从XN到X0经过很多步的去噪之后,你就可以从一个随机噪声转换到一个清晰图片,这样的一个结果。好,那现在大家看一下这个图当中,好,我们给大家展示的还是一个图像当中的扩散过程,如果是lient diion,也说浅空间的时候,大家想一想这里这个图片大家就理解成什么呀?哎,原始的比较大的图片在浅空间当中的特征,然后这个呢,就是在浅空间当中的随机噪声,然后通过这个浅空间的一个处理之后,浅空间的去噪,然后呢,我会获取一个浅。
16:00
空间的特征,然后我们就会恢复到一个比较正常的图片,这是我们在这里这整个整体的思路,那下面我们再给大家去总结一下啊,大家看一下,在这里模型主要分成两个过程,一个是正向过程,那对于正向过程呢,我们是有一张原始图片X0。拿到这个X0之后,我要给X0去添加高斯噪声,那在这里添加的时候就是一个服从正态分布的高斯噪声啊,然后这时候我们的图片呢,由X0变成X1,然后变成X1之后,然后我们会接着在X1的基础上再添加高次噪声,然后变成X2,那在X2的基础上添加高斯噪声,变成X3,变成X3之后,然后再添加噪声,我直接重复这个步骤,不断的向我的数据当中去添加高斯噪声,直到我们的图片变成XM,那因为你的图片当中我们添加了很多次高斯噪声,那我们的结果当中是不是就添加了足够多的高斯噪声啊,那有了这么多足够多的高斯噪声之后,大家想一下,我最终的XN是是不是一个噪声,随机噪声,纯的噪声,那我们就假设这个纯的噪声。
17:22
服从什么呢?高斯分布,这就是我们的正向过程啊,正向过程,那反向过程呢?哎,我们就是随机生成一个服从高斯分布的图片,那我们在一步一步的减少这个噪声图片当中的噪声,直到声成想要的图片,那这时候我们希望什么呢?希望T时刻的高斯噪声,也说XT变成零时刻的图像,大家想过去一次造可以吗?去一次造你肯能肯定很难得到B真的图片的,所以呢,我们和正向过程一样,先考虑从T10克变换到T减10克,再从T减一时刻变到T减二,T减二变到T减三,一步一步的去造,直到获取到一个清晰的图片,我就到了零时刻,也就是生成了图片,这就是我们在这里这个diion模型它的整体的一个思路,好,那这个思路我们就给大家介绍这。
18:22
那行,那我们先把视频暂停一下,我们稍后来看一下,在具体实现的时候,我要怎么来实现这个过程。
我来说两句