论文 Unpaired Image-to-Image Translation using Cycle-Consistent Adversarial Networks ( CycleGAN ) 学习笔记

1. 模型简介

在之前 pix2pix 论文中,作者已经很好地解决了训练集中有匹配对的图像风格转换问题,本文讨论的是对于训练集中不存在图像匹配对(寻找到匹配的图像数据集成本非常高)的情况下,如何能够较好地实现图像的风格转换。

若使用简单的单一映射 G : X → Y G:X \to Y G:XY,输入图像经过生成器转换为输出图像 y ^ = G ( x ) , x ∈ X \hat y=G(x), x \in X y^=G(x),xX,并使输出图像与真实图像难以区分,这种约束太弱,会造成以下问题:

  1. 存在太多种 G G G 能能够满足该映射条件;
  2. 难以对目标函数进行优化,容易造成“mode collapse”问题(不同输入对应同一种输出)。

为了解决上述问题,作者给损失函数增加了更多的结构:

  1. 在希望 G : X → Y G:X \to Y G:XY 的同时,还希望 F : Y → X F:Y \to X F:YX,即学习2个能相互转换的生成函数 G G G F F F,当然也就存在2个不同的判别函数 D Y D_Y DY D X D_X DX
  2. 希望图像在连续经过 G G G F F F 后能够还原为原来的图像,即 F ( G ( x ) ) ≈ x F(G(x)) \approx x F(G(x))x G ( F ( y ) ) ≈ y G(F(y)) \approx y G(F(y))y
    在这里插入图片描述

2. 公式

2.1. 对抗损失(Adversarial Loss)

G : X → Y G:X \to Y G:XY 的对抗损失函数:
L G A N ( G , D Y , X , Y ) = E y ∼ p d a t a ( y ) [ l o g D Y ( y ) ] + E x ∼ p d a t a ( x ) [ 1 − l o g D Y ( G ( x ) ) ] \mathcal{L}_{GAN}(G,D_Y,X,Y)=\mathbb{E}_{y\sim p_{data}(y)}[logD_Y(y)]+\mathbb{E}_{x\sim p_{data}(x)}[1-logD_Y(G(x))] LGAN(G,DY,X,Y)=Eypdata(y)[logDY(y)]+Expdata(x)[1logDY(G(x))] 目标是 min ⁡ G max ⁡ D Y L G A N ( G , D Y , X , Y ) \min\limits_G \max\limits_{D_{Y}}\mathcal{L}_{GAN}(G,D_Y,X,Y) GminDYmaxLGAN(G,DY,X,Y)

F : Y → X F:Y \to X F:YX 的对抗损失函数:
L G A N ( F , D X , Y , X ) = E x ∼ p d a t a ( x ) [ l o g D X ( x ) ] + E y ∼ p d a t a ( y ) [ 1 − l o g D X ( G ( y ) ) ] \mathcal{L}_{GAN}(F,D_X,Y,X)=\mathbb{E}_{x\sim p_{data}(x)}[logD_X(x)]+\mathbb{E}_{y\sim p_{data}(y)}[1-logD_X(G(y))] LGAN(F,DX,Y,X)=Expdata(x)[logDX(x)]+Eypdata(y)[1logDX(G(y))] 目标是 min ⁡ F max ⁡ D X L G A N ( F , D X , Y , X ) \min\limits_F \max\limits_{D_{X}}\mathcal{L}_{GAN}(F,D_X,Y,X) FminDXmaxLGAN(F,DX,Y,X)

2.2. 循环一致性损失(Cycle Consistency Loss)

L c y c ( G , F ) = E x ∼ p d a t a ( x ) [ ∥ F ( G ( x ) ) − x ∥ 1 ] + E y ∼ p d a t a ( y ) [ ∥ G ( F ( y ) ) − y ∥ 1 ] \mathcal{L}_{cyc}(G,F)=\mathbb{E}_{x\sim p_{data}(x)}[\lVert F(G(x))-x\rVert _1]+\mathbb{E}_{y\sim p_{data}(y)}[\lVert G(F(y))-y\rVert _1] Lcyc(G,F)=Expdata(x)[F(G(x))x1]+Eypdata(y)[G(F(y))y1] 作者这里使用的是 L1 损失,在实验中作者还尝试过将其替代为 F ( G ( x ) ) F(G(x)) F(G(x)) x x x 以及 G ( F ( y ) ) G(F(y)) G(F(y)) y y y 的对抗损失(Adversarial Loss),但并未观察到效果的提高。

2.3. Full Objective

将上述两种损失函数组合,得到最终损失函数:
L ( G , F , D X , D Y ) = L G A N ( G , D Y , X , Y ) + L G A N ( F , D X , Y , X ) + λ L c y c ( G , F ) \mathcal{L}(G,F,D_X,D_Y)=\mathcal{L}_{GAN}(G,D_Y,X,Y)+\mathcal{L}_{GAN}(F,D_X,Y,X)+\lambda\mathcal{L}_{cyc}(G,F) L(G,F,DX,DY)=LGAN(G,DY,X,Y)+LGAN(F,DX,Y,X)+λLcyc(G,F) 最终的目标是求:
G ∗ , F ∗ = a r g   min ⁡ G , F max ⁡ D X , D Y L ( G , F , D X , D Y ) G^*,F^*=arg\ \min\limits_{G,F}\max\limits_{D_X,D_Y}\mathcal{L}(G,F,D_X,D_Y) G,F=arg G,FminDX,DYmaxL(G,F,DX,DY)


3. 具体实现

3.1. 网络结构

生成器的网络结构见文献 Perceptual Losses for Real-Time Style Transfer and Super-Resolution 中所写。
判别器的网络结构为 PatchGANs,在 pix2pix 中有所介绍。

3.2. 训练细节

在编程实现中,为了进一步提高效果,作者列出了几点 trick:

  1. 对于 L G A N \mathcal{L}_{GAN} LGAN 作者采用的是均方误差而不是 log 来进行每一次的更新。
    更新 G G G 时,最小化 E x ∼ p d a t a ( x ) [ ( D Y ( G ( x ) ) − 1 ) 2 ] \mathbb{E}_{x\sim p_{data}(x)}[(D_Y(G(x))-1)^2] Expdata(x)[(DY(G(x))1)2]
    更新 D D D 时,最小化 E y ∼ p d a t a ( y ) [ ( D Y ( y ) − 1 ) 2 ] + E x ∼ p d a t a ( x ) [ D Y ( G ( x ) ) 2 ] \mathbb{E}_{y\sim p_{data}(y)}[(D_Y(y)-1)^2]+\mathbb{E}_{x\sim p_{data}(x)}[D_Y(G(x))^2] Eypdata(y)[(DY(y)1)2]+Expdata(x)[DY(G(x))2]
  2. 为减小模型的振荡,在更新判别器时,会使用当前以及一系列过去的生成器生成的图片来进行训练。
  3. 使用 Adam 算法来进行生成器和判别器的每一步更新,学习率先保持不变,在 epoch 到达100次后,开始线性下降直至为0。

4. 模型评估

模型的评估方式与 pix2pix 相同,采用 Amazon Mechanical Turk(AMT)与 FCN score 的方式。


5. 效果展示

将自然风景图转化为不同画家风格的图:
在这里插入图片描述
相近类别的图像进行风格转换:
在这里插入图片描述
手机照片到专业相机(远处背景模糊)的图像转换:
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值