目前的无监督Image-to-Image Translation很难在不改变背景或场景中多个对象的情况下将注意力集中在单个对象上。作者提出了一种方法来解决这个问题。
目前的包括CycleGAN在内的许多无监督Image-to-Image Translation方法都无法只关注特定的场景对象,如下图所示:
为了解决这个问题,作者提出了一种只修改图像中相关区域的方法,并且将attention机制加入了CycleGAN中的生成器中。下面进行详细的解释。
Image-to-Image Translation的任务就是寻找出一个映射 使得源图像域 转换到目标域 ,下面的方法基于CycleGAN。 需要解决两个重要的问题:
为了解决这两个问题,作者加入了两个attention networks ,这两个网路通过最大化discriminator出错的概率来选择要转化的区域, ,其中, 是attention map,就相当于一个mask,其值介于0,1之间,这个mask其实就是用来抠图的,具体可以看下面这张图:
上图只展示了CycleGAN中 的这部分,我们先看左边部分, 还是对整张图像进行转化, 网路学习到了一个attention map,将这个attention map与 的输出进行element-wise乘积,就提取出了需要转化的特定对象,然后再加上原图的背景,生成最终图像 ,整个过程可以用下式表示: 若 全是1,则得到作者的方法的特例CycleGAN;若 为全0,则输入图像和输出图像一样,discriminator可以很轻易的判别;理想的情况是 只关注图像中特定的对象,既能够骗过discriminator,又使得输出图像看起来更加真实。
因此,使得 达到平衡的方法就是使得 将注意力集中在相应discriminator认为在其领域内最具描述性的对象或区域(例如,马)。GAN的机制也使得attention networks能够找到图像中最具领域描述性的对象。 需要注意的是,attention map的值是在[0,1]之间的连续值,而不像分割的二值化的mask一样,作者对此的解释是:
首先是adversarial loss:
然后是cycle-consistency loss:
其中, 是 通过 和 得到的。 最终得loss为:
其中, ,优化目标是求解minimax问题:
前面介绍说,attention network能够让网路只关注图像中特定的对象,然而,这会产生一个问题:生成图像的背景可能和转化后的特定对象不搭,举例来说,Figure 1中原来的马转化为了斑马,但是整幅图像还是假的,因为马生活在草原上,而斑马生活在热带稀树草原。
为了解决这个问题,作者在训练discriminator的时候只考虑有注意力的区域。简单的使用 会有问题,因为刚开始的时候attention network还未训练,所以作者在前30个epochs使用全图进行训练,然后切换到masked image进行训练。
还有另一个问题,由于attention map是连续的,discriminator可能会得到小数的像素值,这些数值在训练初期可能会非常接近于0,虽然生成器能够得益于在对象边界上混合像素,但是将真实图像于这些小数值相乘导致discriminator学习到了中灰色是「真实的」(也就是我们将答案推到归一化[- 1,1]像素空间的中点0),因此作者给学习到的attention map进行阈值处理:
其中, 分别是目标域样本 和转换后的源域样本 的masked version, 设置为0.1 由此,原来的adversarial loss(公式2)变为:
下面是源域到目标域 的训练过程演算法:
需要注意的是,为了避免mode collapse问题,作者在30个epoch后停止训练
推荐阅读: