多模态检索之跨域图像转换

《Multimodal Unsupervised Image-to-Image Translation》(2018 ECCV)

这篇文章解决了跨域图像转换的问题。主要思想是将图像的特征表示分解成2个部分:content code和style code。其中,content code不随领域的改变而改变,而style code则表示特定于领域的属性。

以这张图为例:

左边的豹子和右边的猫属于不同的类别,但是通过提取豹子的某些域不变特性(如轮廓、五官大小等等),并将它的content code和猫的某些特有的style code结合起来,就可以生成右边这几张猫咪的图像。

这里给出了一个转换过程的示意图:

左边是域内重构,右边是跨域转换。x1和x2属于2个不同的类别,且x1和x2都可以通过编码器得到content code和style code。如果将属于同一张图片的content code和style code组合起来输入解码器,就可以得到一张和输入一致的图像;而如果把c1和s2组合起来,就会生成x1→2。同样地,x1→2也可以由编码器分解成c1’和s2’,而c1和c1’、s2和s2’、x2和x2’之间会有重构损失,x2(源域)和x1→2(目标域)之间则存在对抗损失。

为了确保构成转换模型的encoder和decoder是互逆的,这里构造了几个重构损失函数。通过将重构损失函数整体最小化,就可以保证用c1和s1组合生成的图像尽可能地接近x1,即保证域内转换的准确性。
image-latent-image
latent-image-latent

而对于域间转换,这里使用GAN来将生成图像的分布和目标域内的图像的分布尽可能地保持一致,换句话说,要使生成图像和ground truth图像相互混淆,难以分辨。

文章在训练时将这个损失联合起来,构造了一个整体损失函数。通过优化这个损失函数来得到合适的模型:
total loss
其中还包括GAN带来的对抗损失:
adversarial loss
这里给出了整体的网络框架结构:
在这里插入图片描述
content encoder由一个下采样模块和一个残差模块构成;style encoder包括几个卷积层,然后是平均池化层和全连接层。这两个编码器的核心区别在于有无IN层(Instance Normalization,实例规范层,用来删除代表重要style信息的均值和方差。content encoder的所有卷积层后面都有IN层,而style encoder则没有)。

解码器decoder根据输入的c和s来重建图像。它首先通过一组残差模块对content code进行处理,再使用几个上采样层和卷积层来生成重构图像。

训练时使用的是LSGAN架构,用来保证生成器生成的t图片尽可能的逼真、具有正确的结构。

实验

在4个数据集(edge↔shoes/handbags,动物,街景,Yosemite国家公园)上进行了实验。

首先是edge↔shoes的检索。上面是输入的轮廓,下面是对应的ground truth图片,即轮廓是从这张图片中提取的。把轮廓放到不同的转换网络中,得到了不同的结果。首先看前3列,这3个网络输出的图片基本都一样,缺乏多样性;第4、5列分别是在训练时没有加入L_recon(x)和L_recon©的结果,可以看出结果并不让人满意(有的输出连轮廓都存在形变);第6列是去掉L_recon(s)的结果,质量比前2列稍微好一点,但也缺乏多样性(第1、2个长得很像)。倒数第2列是文章提出的完整框架的输出结果,最后1列是Bicycle-GAN的输出结果。这2个的性能都比较好,但Bicycle-GAN是有监督的,而MUNIT是无监督的,这是一个优势。

这里还给出了量化结果,结论与之前的一致。

文章还给出了用MUNIT进行轮廓和鞋、轮廓和手提包之间相互转换的结果:

然后是动物图像的转换。MUNIT成功地将一种动物转换为另一种动物,保留了整体的姿势、方向等特征,同时还加入了目标域特有的特征:

最后是在SYNTHIA数据集上进行的转换实验,以及用Yosemite国家公园的图像数据集做的实验:


前面的实验,是将content code与从目标域的style空间中采样得到的随机的style code进行重新组合。而相应地,MUNIT还可以允许用户通过指定一个示例的style图像,来控制转换输出的结果:

(总而言之就是很niubility啦o( ̄▽ ̄)d

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值