深度学习《Photo Editing》

一:问题提出
在GAN中的生成器Generator,输入的是一个低维的向量Z,输出则是一个图片,而且呢,在Z空间内上每一维度的值,或者几个维度的值都可能表示一张图片的某个特征,改变Z的值就可以调整图像的内容。

如果此时我们已经训练得到一个Generator。

问题1. 对于一张已有的生成图像X,如何反推回去得到它对应的向量 ?
问题2. 又如何知道 中的每个维度对应着图像中哪个特征呢?
问题3. 该维度是以怎样的具体的数值控制着该特征的表现呢?

二:问题解决
解答问题1:假设我们现在已经有了一个Generator,我们有一张图片X,希望能反推出其对应的向量Z。

方法一:除此之外还有一个方法就是用梯度下降的办法,直接找到一个Z*,使得Z经过构造器产生的图片X和原始图片X越接近越好,那么此时Z*就是我们想要得到的
在这里插入图片描述

意思也是十分朴素的,这个式子怎么解呢?把Z当做是参数,G是固定的,L是评价两个图片的相似程度,我们希望越接近越好,可以是L1/L2的像素损失,或者是一个什么其他的network来评判二者相似与否。这样的话呢,就把Z当做参数,进行地图下降,知道找到一个合适的Z来代表X。

方法二:就需要再设计增加一个encoder,Generator呢就是一个固定的解码器decoder,它的参数不变,接下来我们训练出一个encoder,让其输入X,得到Z,把Z输入到decoder,得到X’,而且需要尽可能使得X接近于X’,也就是减少重建误差。
需要注意的是Generator是固定的,只需要训练出encoder。
在实际操作中呢,一般是拿判别器Discriminator来初始化encoder的参数,因为他们很类似,都是输入X,不同的只是判别器输出的是一个标量,encoder输出的是一个向量。所以大部分参数是可以初始化的。
在这里插入图片描述

方法三:结合上述两种方法,梯度下降最大的问题就是容易陷入局部最优,那么我们可以使用方法二训练出一个encoder,得到一个比较优秀的解Z,再送入方法一进行fine-tune。

好,这样我们能得到每一张图片在一个低维空间的Z的表示。

解答问题2:怎么求得某个人类可识别的特征到底存在于Z空间上的哪些维度呢?拿长头发和短头发的特征来说,尽量保持其他特征是一致的,长头发图片的特征向量分布和短头发的特征向量分布是可以计算出来的,通过问我们训练的那个encoder就能轻松得到Z,接着我们求出这两类向量的差值,观测差值就能知道哪些维度具有重要的该特征意义。如下图,X是长头发的图片,X’是短头发的图片,encoder(X)求出长头发的Z值,encoder(X’)求出短头发的Z’值,这样求出两类图片的平均差异,Z-Z’,根据差值的各个维度的大小,就能得到哪些维度是在长发短发的特征上有明显的作用。
在这里插入图片描述

平均特征差异值很有作用,它也是一个和Z相同维度的向量,这样的话就能看出来,哪个维度数值越大,哪个维度跟长发短发越相关,甚至是正相关还是负相关,还可以看出是哪几个维度共同作用得到的。

其实这里还有个办法就是一个个去实验,用一个bar调,不断地去更改某个维度值,看看图片有什么变化,挑选一些人类能识别的特征变化,这个维度就有相关性。但是这样做的效率太低了,不一定准确,不一定能成功得到想要的,所以还是推荐这种特征值相减的方法,能比较准确定位决定某些特征的维度位置,而且还是精准匹配特征和维度的对应关系,不用手动一个个去调节。

解答问题3:在问题二的解答基础上,既然我们已经知道了某个特征对应的那个Z空间维度的对应关系,其实就是将Z空间的那个或几个维度值的数值进行变化,就嫩而过得到新的图像,那么如果我们想将一个长发图片X变成一个短发的图片X’,我们先求出X的code Z,再加上上述我们求出的长发短发特征差异值,再送入deoder就可以得到一张新的图片X’。图示如下:
在这里插入图片描述

三:应用
上面都是讲一些基础研究方法,现在我们来看看一些应用,比如Editing Photos。

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

你可以说我可以直接PS把黑色变为红色啊,但是我们也许有时候需要的是更加具有创造性的衣服,甚至是衣服上的图案也会稍有不同,袖子大小,领口大小也有不同的设计。
在这里插入图片描述

首先呢,我们需要能把图片X映射到一个低维的编码空间Z。每一个图片都是该空间的采样点,在Z空间,得到采样点Z通过Generator能产生出一张图片X,我们就在该空间内寻找想要的图像。

至于为什么在编码空间内操作,应该是因为低维空间内更好采样吧,维度越低越好采样(维度高了不好操控),更容易找到需要的点(否则空间中只有极少极少的点是我们需要的),且利用Generator的话更具有创造性。

将黑色衣服的图片输入生成器得到对应的编码Z,以较小的半径在该Z点周围采样(这个半径和具体采样的位置应该都和条件/限制有关),就应该得到符合限制的相近的红色衣服图像。
之所以在附近采样是为了尽量和原图像保持一致,衣服的附近大概率是衣服,不是鞋子。

我们也能同样得到黑色和红色的平均特征差异,朝着这个差异方向进行采样,但是又不能和原始图像差异太大,不能采着采着,衣服变成了鞋子啊。

来吧,我们来看看怎么做到的。
第一步得先找到图片X到编码空间Z的映射,这一步我们已经知道了会有三个方法得到,这里就多重复说了。

第二步在Z附近进行采样,目标要优化如下式子,求得最优解的Z。
在这里插入图片描述

其中
式子第一部分:U是判别经过Z生成的图像是否是满足约束限制条件的,差异越小越好。
式子第二部分:同时希望Z不要离原来的Z0太远,需要和保证和原始图像具有一定的相似度
式子第三部分:同时希望Z能通过构造器得到图片越真实越好。
因此合并起来就是得到了上述的式子,整个式子的求解呢,就利用梯度下降法求解即可。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值