其他分享
首页 > 其他分享> > [Pytorch系列-65]:生成对抗网络GAN - 图像生成开源项目pytorch-CycleGAN-and-pix2pix - 无监督图像生成CycleGan的基本原理

[Pytorch系列-65]:生成对抗网络GAN - 图像生成开源项目pytorch-CycleGAN-and-pix2pix - 无监督图像生成CycleGan的基本原理

作者:互联网

作者主页(文火冰糖的硅基工坊):文火冰糖(王文兵)的博客_文火冰糖的硅基工坊_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网络的训练 - 判决网络的训练


第1章 什么是CycleGan网络的图像转换

1.1 项目在github上的源代码

GitHub - junyanz/pytorch-CycleGAN-and-pix2pix: Image-to-Image Translation in PyTorch

1.2 图像转换实例

(1)环境的轮廓不变,更换颜色,风格 (秋天 - 夏天)

(2)马的轮廓不变,纹理替换。

(3)风景图片的轮廓不变,更换风格(冬天<--->夏天)

共性:保持一张图片的轮廓,更换其风格,得到另一张新的图片。

而风格来自于一组图片的共同特征,即为一组图片的风格。

1.3 图像转换的总体共性

(1)风格学习:网络能够学习风格图片的共同特征,即风格。

如所有冬天的图片的共同特征是“冬天”:

 如果斑马图片的共同特征是斑马:

(2)待转换图片

可以是一张,也可以是多张,但他们是相互独立的,网络不需要学习待转换图片的公共特征。

只需要提取待转换图片的各自的特征:即每一张图片实际的轮廓。

实际上,不同的图片,其轮廓外形是不同的。

(3)输出图片:

既包含待转换图片的特征(轮廓),也包括风格图片组的公共特征(风格)

(4)输入风格图片和待转换图片的关系

严格意义上讲CycleGan图像转换,不需要输入图片与待转换图片之间有什么关联,他们是相互独立的。即不要求输入图片与待转换图片在形状上、在背景上有什么必须相似的地方。即不要求他们之间有某种相似性。

(5)输入风格图片和输出图片的关系

CycleGan图像转换,不要求输入风格图片与输出图片在轮廓上有什么相似性。

输出图片与风格转换图片可以是完全不相同的两类事物。即不要求上述配对关系。

即可以把风格图片的风格,叠加到任意的图片上!!!!,形成新的输出图片。

(6)待转换图片和输出图片的关系

他们之间是有轮廓上相似性,因为输出图片,是对待转换图片的转换。

如果输出图片不包含待转换图片的轮廓,那么转换后的图片,体现不出待转换图片,这种转换没有太大的意义。

第2章 CycleGan图像转换的基本原理

2.1 CycleGan网络的目标

普通的GAN确保输出的图像与真实图像具备尽可能的相似度,这就导致,网络的训练目的是输出预真实图片B具备相识性,与真实图片A没有关系。即输出图片,与真实图片不具备相似性。

很显然,这不符合我们的目标,任意的输出,应用场景及其有限。

CycleGan网络的目标是:

输出图片受输入图片所控,与输入图片之间要有“形似”的关系,而不是天马行空的输出。

输出图片,在某些特征上与输入图片A相似,这个相似性称为“形似”

输出图片,在某些特征上与真实图片B相似,这个相似性称为“神似”

2.2 CycleGAN名称的由来

输出与输入图片的相似性检查,是确保输出的图片与输入图片有明确的对应关系的重要手段。

现在的问题来了:如何检查输出与输入图片的相似性呢?

(1)pix2pix的做法

pix2pix是直接通过像素到像素进行检查的完成的,因此pix2pix的输出与输入是显性的、表象的、强关联关系,属于“形似”。

(2)CycleGAN的做法

CycleGAN通过增加还原网络,首先把输出图片重新还原成输入图片,然后对输入图片与还原后的图片进行像素到像素的检查,确保输出图片与输入图片的相似性。这个还原的过程就是形成了一个闭环,这 就是“CycleGAN”的由来。

虽然,还远后的图片与输入图片,具备像素到像素的显性的、表象的、强关联关系,属于“形似”。

但输出图片与输入图片以及还原后的图片并非这种“形似”,而是内在特征的关系。

因此,CycleGAN的输出图片与输入图片之间是隐性、内在的、语义关系。

CycleGAN同时具备如下特征:

2.3 CycleGan网络的基本架构

(1)相对于GAN网络,CycleGan增加了一个还原网络。

通过对还原图片与原始图片的比较,可以确保生成图片的准确性以及与输入图片的关联性。

(2)相对于GAN网络,CycleGan增加了双向转换

为了确保生成网络和还原网络的准确性,CycleGan增加了双向转换,

即一方面:网络源真实图片-》生成图片-》源真实图片的转换,主要验证创作的准确性。

另一方面:目标真实图片-》生成图片-》目标真实图片的转换,主要验证还原的准确性。

2.4 CycleGan网络的基本工作过程

(1) CycleGan的做法

(2) 使用两个判决网络? 

2.5 CycleGan网络的训练 - 生成网络的训练

(1)生成网络G-A2B和生成网络G-B2A的结构是完全一致的,不同的是一个输入是源真实图片集,一个是目标真实图片集。

(2)G-A2B和G-B2A是一起训练的,其loss函数是整合在一起的。

(3)在训练G-A2B和G-B2A时,需要锁定判决网络D-A2B和D-B2A

(4)最终的loss函数包含4部分

2.6 CycleGan网络的训练 - 判决网络的训练

(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

标签:输出,转换,CycleGan,网络,生成,pytorch,图像,输入,图片
来源: https://blog.csdn.net/HiWangWenBing/article/details/121962962