赞
踩
简单的说就是根据文字进行生成相应的图片。
先看效果:
架构
这里首先用一个 text embedding网络来将文字转换为向量,ϕ(t)ϕ(t)是1024维的向量,然后投影成128。并将这128向量分别加入到G和D网络中。在G中直接concat到后面,而D中由于中间出来的是spatial size是4x4大小的,所以直接复制4x4份,后面concat上去。
因为普通的GAN就是一个zz直接生成图片,但是这里是要让生成的图片符合tt的描述。因此显然要把ttembedding成向量,然后加入zz中。有意思的是,这里D也加入了ϕ(t)ϕ(t),个人觉得这类似CGAN。
然后作者提出了GAN-CLS以及GAN-INT.
GAN-CLS
如果是普通的GAN,那么D只要负责看G的生成图片是真是假就行。但是这里的任务是要让G生成符合tt描述的图像。因此D担负着两个任务:
1. 判断G生成的图片是真是假
2. 判断生成的图片是否符合tt的描述。
所以:
与普通GAN不同的是,这里多了一种错误情况,即看上去挺真的,但是对应的描述tt与图不符合,即swsw。
这里可以大概想到在D中加入ϕ(t)ϕ(t)的作用,如果不加的话,那么D所能获得的信息仅仅是G的生成图,失去了判断图与tt是否符合的判断能力。
GAN-INT
Et1,t2~pdata[log(1−D(G(z,βt1+(1−β)t2)))]
Et1,t2~pdata[log(1−D(G(z,βt1+(1−β)t2)))]
其实就是不仅用以前的tt了,还用了插值的语料。这是因为深度网络学习到的特征表示其实具有可插值性,或是说如果一对pair图像,经过相同的层后,对这些特征进行插值,那么插值后的特征也是在数据流型附近。也就是说,”一只小鸟在天上飞”和”黑头乌龟在地上晒太阳”,它们的深度特征插值后,没准就成了“一只黑头小鸟在地上晒太阳了”。。
因此加入插值的语料进行训练,可以增加G的创新性吧。
另外一点是:这种插值的语料没有对应的真实图片。也就是说我根本没有插值语料的SrSr啊。
文中的解释:
D learns to predict whether image and text pairs match or not. Thus, if D does a good job at this, then by satisfying D on interpolated text embeddings G can learn to fill in gaps on the data manifold in between training points.
就是说既然D能够很好的判断给定的图片与给定的文本tt是否一致,那么如果用这种插值的文本tt, G会努力缩小训练数据点之间的差异。
zz起的作用
先定义content和style。一般情况下很多时候一句话就是描述content的,而不会描述style(style主要是包括背景和姿态)。那么这种情况下我们就希望zz能起到这种加入style的作用,从而生成更加真实多样化的图片。前面已经提到了GAN-CLS,GAN-INT和GAN-INT-CLS,那么哪种训练方式训练出来的模型,zz才是最能起到加入style的作用。
然后他们首先弄了一个inverse G的网络。当然很简单,用以前生成的样本对就行。然后
Lstyle=Et,z~N(0,1)∥z−S(G(z,ϕ(t)))∥
Lstyle=Et,z~N(0,1)‖z−S(G(z,ϕ(t)))‖
其中SS是inverse G网络。
然后作者把图片按照style进行聚类(平均背景颜色,鸟类姿态等),然后取属于同一聚类的样本,求得zz。通过求解相同聚类的图片的style表示zz之间的consine距离,从而确定不同训练方式,zz所起到的style作用的强弱。
还是GAN-INT-CLS模型的zz具有较好的style表示作用。
总结
通过分别在G和D里面加入tt的embedding特征,从而让G是在ϕ(t)ϕ(t)条件下的生成图片,而D是也是在ϕ(t)ϕ(t)条件下的判断图片是否符合文本。另一点是利用插值从而让G具有更强大的生成能力。此外,通过特征可视化的方式,让zz具有specific的style加入功能,从而解决文本描述本身不对style进行任何阐述的问题,随机化的zz可以加入不同的style,从而增加生成样本的真实性与多样性。
---------------------
作者:Hungryof
来源:CSDN
原文:https://blog.csdn.net/hungryof/article/details/76166980
版权声明:本文为博主原创文章,转载请附上博文链接!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。