CycleGAN二次解读

一、背景说明

之前对CycleGAN进行过一次解读,分别见链接:

CycleGAN代码使用入门_benben044的博客-CSDN博客

cycleGAN算法解读_benben044的博客-CSDN博客

本次对简化版的github源码进行解读,使得代码和原理更清晰易懂。

简化版代码见:

https://download.csdn.net/download/benben044/87583252?spm=1001.2014.3001.5503

二、代码运行

1、在windows本地运行

首先运行python -m visdom.server,

然后直接在pycharm中运行train.py文件,可以跑起来

如果跑不起来,把参数改一下:

2、ECS上运行

visdom在ecs跑不了,测试代码如下:

 

启动visdom:python -m visdom.server

运行上面脚本,会一直卡着,信息如下:

 

所以我把代码中visdom中的代码都注释掉。

 此时,抛弃了visdom功能,让cycleGAN先跑起来

执行命令:nohup python -u train.py > train.log 2>&1 &

三、代码解读

1、train.py解读

以上是一个神经网络模板化的流程。

下面是训练环节。

生成器的损失函数由三部分组成:

(1)Identity Loss:

这个loss的含义是:生成器G用来生成y风格的图像,那么把y送入G应该仍然生成y,只有这样才能证明G具有生成y风格的能力。因此G(y)y应该尽可能接近。根据论文中的解释,如果不加入该loss,那么生成器可能会自主地修改图像的色调,使得整体的颜色发生变化。

(2)DYDX处的GAN损失:

GAN生成的图片尽量要让判别器判别为真。

(3)Cycle Loss

A生成B后再生成A’,希望AA‘尽量接近。

B生成A后再生成B‘,希望BB‘尽量接近。

判别器的损失函数由两部分组成。

判别器干两件事:真的要判别为真,假的要判别为假。与生成器的博弈后,理想情况下判别器针对假图片判别为假的概率为0.5,即对生成器生成的图片无法进行判断。

2、models.py解读

猜你喜欢

转载自blog.csdn.net/benben044/article/details/129615657