深度学习(2)Unspervised Attention-guided Image-to-Image Translation

这篇文章基于CycleGAN的工作。虽然也是做图像域的转换,并且在转换时,只关注图像中的前景,达到前景转换而背景不变的效果

摘要

当前的无监督图像域转换,努力把转换重点放在图像中的一个物体或者多个物体,同时保证背景不变。启发于人自己的注意力机制,这篇文章提出了无监督的关注机制,结合生成器和辨别器的对抗机制。


网络架构

深度学习(2)Unspervised Attention-guided Image-to-Image Translation_第1张图片
Data-flow diagram

作者定义了两个Attention network As: S->SaAt:T->Ta,一个求源图像域的attention area,一个求目标图像域的attention area.

这张网络架构图完全能读懂他们的整个思路:
1、S域的图像通过As得到Attention map->Sa,Sa 位乘S,得到S的前景部分Sf。
2、Sf通过Fs->t,转换attention area到目标域。
3、s和(1-Sa)按位乘得到s的背景(非 attention部分)Sb
4、Sb和转换到T域图像的前景Sf相加得到最终的结果s’


Attention-guided 判别器

这个工作详细地介绍了他们的判别器。
生成图像时,生成器只转换了attention area的图像转换。但如果判别器依然考虑整个图像会怎么样?
在训练中,随着attention network越来越精确,生成器只关注attention area,判别器依然看全图。那么前景来自于一个数据分布,背景来自于另外一个数据分布,就会存在问题。
举个例子:判别器能从前景是辈出斑马,但是结合背景后,发现这不是斑马所处的环境,所以可能会识别成fake

这会导致两个问题:
1、生成器直接将背景预测为attention area
2、attent map包含越来越多的背景,最终收敛成全1

作者先用整张图像训练判别器30个epoch,当attention network得到提升后用attened区域做训练。

另外一个问题,因为attention map的值为连续的,在训练初期,attention map的值可能会接近0,判别器可能会认为灰度图是真实的。


实验结果

我在我的GTX060的机子上跑了一下,这也是我第一次跑GAN。开始用CPU跑,幸亏没有脑残继续下去(GPU大概快了十倍)。即使这样,训练的时间也是是超级长,二十一小时后,我现在已经跑到epoch=77。


深度学习(2)Unspervised Attention-guided Image-to-Image Translation_第2张图片
tensorboard

下面给出几个直观的例子


深度学习(2)Unspervised Attention-guided Image-to-Image Translation_第3张图片
斑马->马(inputA_76_9 | fakeA_76_9)
深度学习(2)Unspervised Attention-guided Image-to-Image Translation_第4张图片
马->斑马(inputB_76_10|fakeB_76_10)

Github地址
Paper地址

你可能感兴趣的:(深度学习(2)Unspervised Attention-guided Image-to-Image Translation)