作者主页(文火冰糖的硅基工坊):文火冰糖(王文兵)的博客_文火冰糖的硅基工坊_CSDN博客
本文网址:https://blog.csdn.net/HiWangWenBing/article/details/121962962
目录
第1章 什么是CycleGan网络的图像转换
1.1 项目在github上的源代码
1.2 图像转换实例
1.3 图像转换的总体共性
第2章 CycleGan图像转换的基本原理
2.1 CycleGan网络的目标
2.2 CycleGAN名称的由来
2.3 CycleGan网络的基本架构
2.4 CycleGan网络的基本工作过程
2.5 CycleGan网络的训练 - 生成网络的训练
2.6 CycleGan网络的训练 - 判决网络的训练
GitHub - junyanz/pytorch-CycleGAN-and-pix2pix: Image-to-Image Translation in PyTorch
(1)环境的轮廓不变,更换颜色,风格 (秋天 - 夏天)
(2)马的轮廓不变,纹理替换。
(3)风景图片的轮廓不变,更换风格(冬天<--->夏天)
共性:保持一张图片的轮廓,更换其风格,得到另一张新的图片。
而风格来自于一组图片的共同特征,即为一组图片的风格。
(1)风格学习:网络能够学习风格图片的共同特征,即风格。
如所有冬天的图片的共同特征是“冬天”:
如果斑马图片的共同特征是斑马:
(2)待转换图片
可以是一张,也可以是多张,但他们是相互独立的,网络不需要学习待转换图片的公共特征。
只需要提取待转换图片的各自的特征:即每一张图片实际的轮廓。
实际上,不同的图片,其轮廓外形是不同的。
(3)输出图片:
既包含待转换图片的特征(轮廓),也包括风格图片组的公共特征(风格)
(4)输入风格图片和待转换图片的关系
严格意义上讲CycleGan图像转换,不需要输入图片与待转换图片之间有什么关联,他们是相互独立的。即不要求输入图片与待转换图片在形状上、在背景上有什么必须相似的地方。即不要求他们之间有某种相似性。
(5)输入风格图片和输出图片的关系
CycleGan图像转换,不要求输入风格图片与输出图片在轮廓上有什么相似性。
输出图片与风格转换图片可以是完全不相同的两类事物。即不要求上述配对关系。
即可以把风格图片的风格,叠加到任意的图片上!!!!,形成新的输出图片。
(6)待转换图片和输出图片的关系
他们之间是有轮廓上相似性,因为输出图片,是对待转换图片的转换。
如果输出图片不包含待转换图片的轮廓,那么转换后的图片,体现不出待转换图片,这种转换没有太大的意义。
普通的GAN确保输出的图像与真实图像具备尽可能的相似度,这就导致,网络的训练目的是输出预真实图片B具备相识性,与真实图片A没有关系。即输出图片,与真实图片不具备相似性。
很显然,这不符合我们的目标,任意的输出,应用场景及其有限。
CycleGan网络的目标是:
输出图片受输入图片所控,与输入图片之间要有“形似”的关系,而不是天马行空的输出。
输出图片,在某些特征上与输入图片A相似,这个相似性称为“形似”
输出图片,在某些特征上与真实图片B相似,这个相似性称为“神似”
对输出与输入图片的相似性检查,是确保输出的图片与输入图片有明确的对应关系的重要手段。
现在的问题来了:如何检查输出与输入图片的相似性呢?
(1)pix2pix的做法
pix2pix是直接通过像素到像素进行检查的完成的,因此pix2pix的输出与输入是显性的、表象的、强关联关系,属于“形似”。
(2)CycleGAN的做法
CycleGAN通过增加还原网络,首先把输出图片重新还原成输入图片,然后对输入图片与还原后的图片进行像素到像素的检查,确保输出图片与输入图片的相似性。这个还原的过程就是形成了一个闭环,这 就是“CycleGAN”的由来。
虽然,还远后的图片与输入图片,具备像素到像素的显性的、表象的、强关联关系,属于“形似”。
但输出图片与输入图片以及还原后的图片并非这种“形似”,而是内在特征的关系。
因此,CycleGAN的输出图片与输入图片之间是隐性、内在的、语义关系。
CycleGAN同时具备如下特征:
(1)相对于GAN网络,CycleGan增加了一个还原网络。
通过对还原图片与原始图片的比较,可以确保生成图片的准确性以及与输入图片的关联性。
(2)相对于GAN网络,CycleGan增加了双向转换
为了确保生成网络和还原网络的准确性,CycleGan增加了双向转换,
即一方面:网络源真实图片-》生成图片-》源真实图片的转换,主要验证创作的准确性。
另一方面:目标真实图片-》生成图片-》目标真实图片的转换,主要验证还原的准确性。
(1) CycleGan的做法
(2) 使用两个判决网络?
(1)生成网络G-A2B和生成网络G-B2A的结构是完全一致的,不同的是一个输入是源真实图片集,一个是目标真实图片集。
(2)G-A2B和G-B2A是一起训练的,其loss函数是整合在一起的。
(3)在训练G-A2B和G-B2A时,需要锁定判决网络D-A2B和D-B2A
(4)最终的loss函数包含4部分
(1)判决网络D-A2B和生成网络D-B2A的结构是完全一致的,不同的是一个输入是源真实图片集,一个是目标真实图片集。
(2)D-A2B和G-B2A是独立训练的,他们有各自独立的loss函数
(3)在训练D-A2B和G-B2A时,需要锁定生成网络G-A2B和G-B2A
(4)各自的loss函数包含2部分:
作者主页(文火冰糖的硅基工坊):文火冰糖(王文兵)的博客_文火冰糖的硅基工坊_CSDN博客
本文网址:https://blog.csdn.net/HiWangWenBing/article/details/121962962