GAN系列:李宏毅老师GAN课程P8——Photo Editing

生成器的输入是一个低维向量z,输出是一张图片。向量z的每一维可能对应着图像的某个特征,改变z的值就可以调整图像内容。那么:

1. 对于一张已有的生成图像,如何得到它对应的向量z

2. 又如何知道z中的每个元素/维度对应着图像中哪个特征?

3. 该维度是以怎样的具体值控制着该特征的表现呢?

回答1:利用GAN+Autoencoder的结构得到z。如下图所示:已有生成器(同时相当于解码器),加入一个编码器将现有图像编码至z,然后由生成器解码还原,减小重建误差,这就是一个Autoencoder的结构;生成器/编码器是固定的(因为我们的目的是找到用该生成器产生该图片所需要的编码z),同时由于编码器作用接近判别器(判别器输出标量,编码器输出向量而已),因此编码器可以用训练好的判别器初始化(引入了GAN的结构),训练后编码器就可以由图像生成其对应的编码z

回答2:通过比较某一特征不同的两组图片的向量z,对组内所有的z求element-wise的均值,两组均值的结果做差求得控制该特征的z的维度。如下图所示:x表示长发的图片,x'表示短发的图片,En(x),En(x')分别表示它们对应的编码(z,z'),对两组图片的z,z'求均值(\frac{1}{N_1}\sum_{x\in long }或者\frac{1}{N_2}\sum_{x' \notin long }),做差后得到z_{long},就表示了长发特征对应的z中的维度(这里z_{long}可能不是一个标量/一个维度吧,可能是多个维度的,长发特征是隐含在多个维度内共同作用的,当然最多不会超过z的维度)。

回答3:对短发的图片x'(下面的图中标错了),通过En(x')得到编码向量后,加上之前的到的z_{long}就可以得到长发图像对应的编码z,给到同一个生成器就可得到长发图像了。进一步,通过缩放z_{long}应该可以控制头发长短了,这其实就是一个可以依据要求从z改变图像内容的方法。

应用:Editing Photos

假设有一组商品图片,想要在一定的条件/限制下生成与某个商品图类似的图片。如下图所示:在红色的限制下,从黑色的衣服生成样式基本不变的红色衣服图片。

首先利用训练好的生成器将所有图片映射到编码z的空间,每一个图片就是该空间中的一个采样点,我们就在该空间内寻找想要的图像。将黑色衣服的图片输入生成器得到对应的编码z,以较小的半径在该z点周围采样(这个半径和具体采样的位置应该都和条件/限制有关),就应该得到符合限制的相近的红色衣服图像。至于为什么在编码空间内操作,应该是因为低维空间内更好采样吧,更容易找到需要的点(否则空间中只有极少极少的点是我们需要的)。

具体做法:

1. 直接在编码空间内寻找z^{\ast },其经过生成器产生的图像和输入图像接近(L为损失函数,可以是像素差,可以是分类器网络embedding的输出)。

2. 第二个方法就是本文开头的方法:GAN+Autoencoder。

3. 上面的方法一由于使用了Gradient Descent的方法优化,可能会出现陷入局部最小值的问题(该现象受z初始值的影响),因此可以先利用这种GAN+Autoencoder的方法得到一个z的初始值(用现有图片和生成器训练编码器,然后把该图片输入编码器就会得到对应的z),然后再用方法一。此时要解的一个优化式子为:

z^{\ast }=arg\underset{z}{min}U(G(z))+\lambda _{1}\left \| z-z_{0} \right \|^2-\lambda _{2}D(G(z))

找到z要令U(G(z))最小,U是判别函数,判断G(z)是否符合限制条件;\lambda_1\left \| z-z_0 \right \|^2要求编码z不能偏离原图片过多,保证了内容的相似性;\lambda_2D(G(z))越大越好,保证生成的图片真实。

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值