Advertisement

论文笔记-Contrastive Learning for Unpaired Image-to-Image Translation

阅读量:

论文信息

  • 标题:对比学习在无配准图像对齐中的应用
  • 作者:张泰松、埃夫罗斯、张立人、朱俊阳
  • 机构:加州大学伯克利分校;Adobe 研究所

代码链接

复制代码
* https://github.com/taesungp/contrastive-unpaired-translation

论文主要贡献

论文要点翻译

  • 摘要
    • 在图像翻译过程中, 输出的每个patch必须反映其对应的输入patch的内容,而这一内容与domain之间并无关联
    • 本文提出了一种直接的方法来建立输出与输入之间对应关系的目标,通过构建基于对比学习的框架以最大化输入与输出之间的互信息,该框架使得两个对应patch元素能够在学习到的特征空间中映射至同一位置(其余不同patch则不是同一个点,同一位置对应的patch被定义为正样本,而不同位置则被称为负样本)
    • 关键的设计在于采用多层基于patch的对比学习框架而非在图像级别操作
    • 在图像范围内获取若干负样本实例后,该框架不仅提升了单边翻译性能还能有效缩短训练时长
    • 此外该方法完全适用于仅有一个图像的情况

56

复制代码
* 相关工作 
  * 图像翻译和循环一致性:pix2pix 的工作介绍,通过对抗 loss 结合重建 loss 判断结果和目标的相似度;不成对的图像翻译则需要引入循环一致性,CycleGAN、UNIT、MUNIT 等工作,从共享的中间表示中学习共有的内容隐空间,虽然这些方法有效,但是这些方法之后的循环一致性都假设图像的翻译是一个双摄,但是如果图像 domain 之间差异比较大的话,重建是比较困难的
  * 关系保留:输入之间的关系应当在输出中得以保留,例如输入图像中相似的 patch 在输出中仍然应当是相似的,输入图像之间的“距离”应当在输出中保持一致,DistanceGAN、GcGAN等工作绕过循环一致性,实现了单边的转换,本文则是通过将输入与输出之间的关系通过信息最大化进行保留,学习跨域的输入输出 patch 的相似性函数,不需要依赖预定义的距离
  * 深度网络嵌入中的感知相似性:高维度信号之间的感知距离是计算机视觉和图像处理的一个研究问题,主要的图像翻译工作都使用像素重建损失(例如 L1距离)作为衡量标准,这个标准没有反映人的感知,可能会带来模糊的结果,最近的结果发现,在 ImageNet 上预训练的 VGG 分类网络可以作为感知 loss 在图像翻译任务中使用,比之前提出的 SSIM、FSIM 等损失函数更为有效,上下文 Loss【51】更是提升了预训练的 VGG 特征的感知质量,但是预训练的模型不能根据数据进行手工调整,使得不能根据不同 domain 数据的不同判断像思想,本文使用互信息作为样本正负对之间的跨域相似性,用过调整输入输出的特定的对应关系,避免了使用预定义的相似性函数
  * 对比表征学习:传统的非监督学习主要用于可以有效重建输入的压缩特征编码,最近根据最大化互信息的方法可以解决之前方法的许多不足,利用噪声对估计学习关联信号之间的嵌入特征表示,然后将对比的不关联的信号之间的表示信息,关联信号可以是图像和图像本身、图像和图像的下游表示、图像内的邻接 patch 、输入图像的多视图、图像的多个转换版本等,InfoNCE loss 的设计选择在于一系列的 patch 如何采样、参数设置、数据增广策略等。本文是第一个将 InfoNCE loss 用于条件图像合成任务的。

* 方法 
  * 图像翻译的主要目标在于将输入域的图像 X⊂RH×W×C\mathcal{X} \subset \mathbb{R}^{H \times W \times C} 转换到目标域图像 Y⊂RH×W×3\mathcal{Y}\subset \mathbb{R}^{H\times W\times 3},使其具有目标域图像的外观的特征;本文研究的条件中,给定的训练数据是不成对的 X={x∈X},Y={y∈Y}X=\{x\in\mathcal{X}\},Y=\{y\in\mathcal{Y}\},方法甚至在 X 和 Y 都只包含一张图像的时候也可以正常操作
  * 方法只需要学习一个方向的转换关系,避免了使用反方向的生成器和转换器用于辅助循环一致。首先,将生成器 G 分解为两个部分:(1)GencG_{enc} 用于编码特征,(2)GdecG_{dec} 用于解码特征,顺序作用两个组件之之后进行预测,生成输出的图像 y^=G(x)=Gdec(Genc(x))\hat{y}=G(x)=G_{dec}(G_{enc}(x))
  * 对抗 Loss:让输出的图像更符合目标域的分布规律,即外观上“更像”输出域图像,和其他 GAN 一样:LGAN(G,D,X,Y)=Ey∼Ylog⁡D(y)+Ex∼Xlog⁡(1−D(G(X)))\mathcal{L}_{GAN}(G,D,X,Y)=\mathbb{E}_{y\sim Y}\log D(y) + \mathbb{E}_{x \sim X}\log (1-D(G(X)))
  * 互信息最大化:通过噪声对比估计进行输入和输出的互信息最大化,对比学习的概念源于两个信号的关联(即“查询”信号和“正”信号),查询的信号、正信号、N个负信号被映射为k维向量,即将 v,v+∈Rk,v−∈RN×kv,v^+\in \mathbb{R}^k,v^-\in\mathbb{R}^{N\times k},其中 vn−∈Rkv^-_{n}\in\mathbb{R}^k表示第 n 个负样本,为了防止模式崩塌等问题,将这些向量正则化到单位球上,由此建立一个 N+1 类的分类问题,查询样本和其他样本之间的距离通过参数 τ=0.07\tau=0.07 进行缩放,通过计算交叉熵损失,表示正样本被选择的概率
  * l(v,v+,v−)=−log⁡exp(v⋅v+τ)exp(v⋅v+τ)+∑n=1Nexp(v⋅v−τ)\mathit{l}(v,v^+,v^-)=-\log\frac{exp(\frac{v\cdot v^+ }{\tau})}{exp(\frac{v\cdot v^+ }{\tau})+\sum_{n=1}^Nexp(\frac{v\cdot v^- }{\tau})}
  * 多层的、成对的对比学习:无监督学习条件下,对比学习被同时用于image和patch两个级别,应用中发现,除了整张图像具有内容上的共同特征,输出和输出每个对应patch也具有这样的对应关系。例如:给定一张斑马的腿部的图像patch,则其转换前的马的图像也应当是包含对应的腿部的patch,甚至在像素级别,斑马的颜色像素也应当是对应到马的颜色像素,而不是对应到背景草地的颜色像素,因此本文应用多层的基于Patch的学习目标
  * 由于 GencG_{enc} 生成的特征用于计算图像翻译的输出,对应的特征栈也是可用的,每层特征栈中的特征和对应的空间位置可以表示图像的一个 patch,其中的越高级的特征对应的 patch 越大。选择 N 层特征作为考察对象,将特征图传给简单的两层的MLP网络 HlH_l ,生成一系列的特征 {zl}L={Hl(Gencl(x))}L\{z_l\}_L=\{H_l(G_{enc}^l(x))\}_L,其中的 G 表示第 l 层特征的输出,将 l 层特征中的每一层的空间位置记为 s∈{1,...,Sl}s\in\{1,...,S_l\},将对应的特征记为 zls∈RClz_l^s\in \mathbb{R}^{C_{l}},其他特征记为 zlS\s∈R(Sl−1)×Clz_l^{S\backslash s}\in \mathbb{R}^{(S_l-1)\times C_{l}},ClC_l 是每一层的通道数,输出图像也以相似的方式进行编码
  * 目标在于将输入输出对应位置的 patch 进行匹配,可以利用输入中的其他位置的 patch 作为“不匹配”的样本,因此利用 PatchNCE Loss
  * LPatchNCE(G,H,X)=Ex∼X∑l=1L∑s=1Sll(zls,z^ls,zlS\s)\mathcal{L}_{PatchNCE}(G,H,X)=\mathbb{E}_{x \sim X}\sum_{l=1}^{L}\sum_{s=1}^{S_l}\textit{l}(z_l^s,\hat{z}_l^s,z_l^{S\backslash s})
  * 同时,可以利用从数据集中的其他图像的 patch ,将其他图像 x~\widetilde x作为负样本编码为 {z~l}L\{\widetilde z_l\}_L,使用外部的 NCE loss
  * Lexternal(G,H,X)=Ex∼X,x~∼Z−∑l=1L∑s=1Sll(zls,z^ls,z~l)\mathcal{L}_{external}(G,H,X)=\mathbb{E}_{x \sim X,\widetilde x \sim Z^-}\sum_{l=1}^{L}\sum_{s=1}^{S_l}\textit{l}(z_l^s,\hat{z}_l^s,\widetilde z_l)
  * 最终目标:
  * LGAN(G,D,X,Y)+λXLPatchNCE(G,H,X)+λXLPatchNCE(G,H,Y)\mathcal{L}_{GAN}(G,D,X,Y)+\lambda_X\mathcal{L}_{PatchNCE}(G,H,X)+\lambda_X\mathcal{L}_{PatchNCE}(G,H,Y)

全部评论 (0)

还没有任何评论哟~