CycleGAN论文学习笔记

CycleGAN是一种无需配对图像的图像转译方法,通过循环一致性的损失函数解决未配对数据的问题,防止模式崩溃。该方法在颜色和纹理转换上表现出色,但对几何形状变化处理不佳,且缺乏高级语义理解和三维信息。网络结构包括卷积、残差块等,使用实例归一化和L2范数损失。尽管存在局限,CycleGAN在多种图像风格迁移任务中展现出广泛应用潜力。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

B站同济子豪兄精读视频


摘要

图像转译是计算机视觉和图形学的关键问题,其目标是利用像素级对齐对应的图像,学习出一种输入图像和输出图像的映射关系。目前的问题:然而,对于许多任务而言,对齐的训练数据是难以获取的,创新点:所以提出了一种,无需配对图像(unpaired image)就能实现源域和目标域之间的迁移。

生成器 G G G负责根据 X X X生成 Y Y Y,由 G ( x ) G(x) G(x)生成的假 Y Y Y要尽量让判别器难以区分。目前的问题:如果只用单一对抗网络来生成的话,可能会导致不可控制(under constrained)的情况,创新点:所以提出了循环一致性损失(cycle-consistency loss),即:设计第二个生成器 F F F,再让 Y Y Y转回 X X X,尽量让 F ( G ( X ) ) F(G(X)) F(G(X))与原图 X X X更接近。

结果展示:定性(Qualitative)和定量( Quantitative)结果都表明非常好,适用范围广泛等等。


核心内容

在这里插入图片描述
上图左侧就是配对型训练数据和效果,完成线条轮廓转译为鞋子的功能;右侧就是非配对型训练数据和效果,完成两个域之间的迁移(Domain Adaptation)。

以上图右侧的画风迁移为例,CycleGan的示意图如下所示:
CycleGan示意图
其中 X X X域中包含 N N N张图像, x ∼ p d a t a ( x ) x\sim p_{data}(x) xpdata(x)表示 X X X域中的图像服从 X X X的数据分布, Y Y Y域中包含 M M M张图像,表示 Y Y Y域中的图像服从 Y Y Y的数据分布。

生成器 G : X → Y G:X \to Y G:XY对应的判别器为 D Y D_Y DY;生成器 F : Y → X F:Y \to X F:YX对应的判别器为 D X D_X DX。判别器的输出都是0至1的标量,越接近真图像输出概率越接近1。

这两个对抗网络各自都对应一个对抗损失(adversarial losses)【详细的对抗损失概念与定义可以看Gan论文学习笔记】,还包含循环一致性损失函数(cycle consistency losses)【这也是CycleGan论文的创新点】。

对抗损失函数

循环一致性损失的作用:1、使得生成器生成的图像扔保留原始图像的信息;2、间接实现了配对图像的转译功能;3、防止模式崩溃(mode collapse),总生成相同图像的情况。
在这里插入图片描述
F ( G ( x ) ) F(G(x)) F(G(x))是生成的假图像又转换回 X X X域的图像,与原始图像 x x x做L1范数,即两张图像逐个元素做差取绝对值再求和。公式的第一项称为前向循环一致性(forward cycle consistency),后一项成为反向循环一致性(backward cycle consistency)。

所以完整的损失函数就是:
在这里插入图片描述
其中可以通过 λ \lambda λ权重来控制循环一致性损失的强度。

实现细节

  • 采用instance normalization归一化;
  • 网络结构包括3个卷积、几个残差块、2个分数步长卷积(fractionally-strided convolutions
    with stride 1 2 \frac{1}{2} 21);
  • 使用了Reflection padding而非普通的Zero padding;
  • 训练时的Batch Size为1, λ \lambda λ权重设置为10;
  • 生成器各层激活函数主要为ReLU,判别器各层激活函数主要为LeakyReLU;
  • 训练判别器时还会用到生成器产生的历史数据(We keep an image
    buffer that stores the 50 previously created images);
  • 并没有使用损失函数公式中的负对数似然函数(log likelihood)形式,而是使用的最小二乘损失函数(least-squares loss),也就是L2范数。

存在不足

  • CycleGan网络擅长改变颜色和纹理特征,不擅长改变几何形状;
  • 间接地反映了网络没有理解高级的语义,没有先验知识和三维信息;
  • 没有条件输入信息,不能区分前景和背景;
  • 训练集和测试集分布不一致。
CycleGAN实战的主要目标是通过使用CycleGAN算法来进行图像转换。CycleGAN是基于unconditional GAN和conditional GAN的算法,其中包含两个生成器和两个判别器。其核心思想是通过循环一致性来实现图像的转换。 在CycleGAN中,首先使用一个生成器G将原始输入图像x转换为目标域中的图像Y^。然后,使用另一个生成器F将生成的图像Y^转换回原始域中的图像x^。这个过程的目的是尽可能让原始输入图像x和经过两次转换得到的图像x^相似,从而实现循环一致性。同样地,也可以使用另一个生成器F将目标域中的图像y转换回原始域中的图像X^,并通过两次转换尽可能使得原始输入图像y和经过两次转换得到的图像Y^相似。 CycleGAN的训练过程中,除了循环一致性损失外,还包括对生成器和判别器的对抗性损失。通过使用这些损失函数,CycleGAN可以学习到如何进行跨域图像转换,例如将马转换为斑马或将夏天的景色转换为冬天的景色。 在CycleGAN实战中,可以使用已经训练好的模型来进行图像转换。通过将原始输入图像输入到生成器G中,可以得到目标域中的转换图像Y^。同样地,也可以将目标域中的图像输入到生成器F中,得到原始域中的转换图像x^。通过这种方式,可以实现不同域之间的图像转换,从而获得有趣的结果。 总的来说,CycleGAN实战是通过使用CycleGAN算法来实现图像的跨域转换,其中包括循环一致性和对抗性损失的训练过程。通过使用已经训练好的模型,可以将图像从一个域转换为另一个域,获得有趣的效果。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [【Pytorch】Cycle GAN实战(一):风格转换--真实风景图像转换为VanGogh风格](https://blog.youkuaiyun.com/qq_44031210/article/details/120113727)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* *3* [(五)cycleGAN论文笔记与实战](https://blog.youkuaiyun.com/qq_41845478/article/details/107553633)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值