深度学习之对抗生成网络

对抗生成网络原理

(1)生成模型

构建os的联合分布p(s,o) = p(s) *p(o|s)

(2)判别模型

构建o和s的条件分布p(s|o)

原理利用判别模型效果,不断提高生成模型效果逐步递进的过程不可或缺,而不是一开始就无敌!

其实就是通过不断求误差下界中的上界的方式,来获取更好的效果(就是莫欺少年穷嘛)!

生成器的目标:生成一个仿真数据

判别器的目标:判别一个数据是否真实

最终目标:得到一个好的生成器。

生成器的损失要大,你一开始不能太强,只能逐步增强,识别器要足够好,因为它会监督生成器的进步!


深度卷积对抗生成网络(DCGAN)

构建一个对抗网络

step 1:定义目标

从随即向量生成真实图像

step 2:定义生成器和判别器的输入输出

step 3:定义生成器和判别器的结构

生成器

输入:随机向量(一个数值,需要进行反卷积放大feature map

输出:图像

反卷积:相当于一种上采样,池化层和卷积相当于一种下采样

模型结构

Pooling层用convolutional层替代:我需要放大feature map而不是缩小

D上使用卷积层,都使用LeakyReLU预防神经元死掉

G上使用反卷积层,除了输出层使用tanh外(类似sigmoid函数)其他都用Relu(速度快)


图像翻译(Pix2Pix)

目标:以输入图为条件,生成内容相似但风格不同的新图!

要求和前提:图像必须配对

决策器:对生成器生成的新图和lable图是否配对

生成器:对输入的图,经过卷积和反卷积(全卷机网络),最后生成新图

生成器的模型

优化策略:进行一次卷积的过程,你反卷积还需要另外在计算一次吗?不就是对称的嘛


无配对图像翻译(CycleGAN)

目标:从无配对的图像中学到风格的变换 !   

                               

模型怎样构建,并且怎样来构建损失函数来学习,使用循环一致性损失(L1) 来处理非成对数据的问题~~~~

建立模型:一对图像(x,y),两个生成器,两个判别器

损失函数:两个一致性损失

判别器损失

生成器损失

损失和

生成器和损失器的优化

为甚麽一致性损失(L1)会有效,因为添加约束降低了搜索空间!


多领域图像翻译(StarGAN)

之前模型只能处理,一对图像(x->y)的问题,但是如果有多任务(x==>y1,y2,y3),比如:更换图像头发的颜色,年龄等.......

那么原模型的组合比较多,而且模型之间没有信息共享,效率很差!

解决思想:从模型和损失函数入手,生成器添加目标领域信息,判别器需要判别领域类别!在对损失函数进行重建


文本生成图像(Text2Img)

模型结构:

生成器:

输入:随机向量+文本编码(反卷积+卷积,构建全卷积网络,生成新图,文本编码:LSTM(对句子进行编码))       

 输出:图像

判别器:

输入:生成的图像+文本编码(直接CNN即可)    输出:图像文本是否匹配+图像是否合理(真实)

技巧:先将图像是否合理训练出来,在训练图像文本是否匹配!

猜你喜欢

转载自blog.csdn.net/taka_is_beauty/article/details/88909990