PyTorch实战CycleGan

1.项目解读

CycleGan代码链接:https://github.com/junyanz/pytorch-CycleGAN-and-pix2pix,如果无法获取,评论区留言。

1.1实现效果

  • 实现效果:对图片风格进行迁移,如下。我们只需要输入两种风格的图片就好了,本文例子从斑马迁移到马进行讲解。
    在这里插入图片描述

1.2项目思想

传统Gan,网络定义结构如下,使用随机向量通过生成器生成图像,在用鉴别器鉴别生成的图像与真实图像。注意我们要定义两个损失。一个是实现让鉴别器误以为生成图像为真的loss,损失回传到G网络。另一个是让鉴别器进行真实判断,将生成图像判断为假,将真实图像判别为真的loss,损失回传到D网络。持续优化优化生成器和鉴别器网络,就能实现生成的图像和真实图像非常相似,但是做不到对一种风格迁移到另一种风格。
在这里插入图片描述
因为我们由斑马生成的“马”,能很容易的骗过鉴别器,因为真实的图像也是马,所以只用一个生成鉴别网络不行。

  • 项目思想:先生成马,再还原马,使用两个生成网络,生成的马与真实的马构建鉴别损失,还原的马与最开始的斑马构建鉴别损失。因此,我们有两个生成网络,两个鉴别网络。
    在这里插入图片描述
    延续这种思路,我们也可以将最开始的斑马换成马。
    在这里插入图片描述

1.3映射损失

  • 此外这个项目还加入映射损失,即我生成器由马生成斑马,但是如果我直接输入斑马,那我应该生成和这张斑马一模一样的图像

1.4改进鉴别网络PatchGan

  • 鉴别网络改进–PatchGAN,本来我们的鉴别网络只需要进行二分类,即判断图像是真or假,现在我们基于原始特征图的矩阵来判断。即计算卷积后矩阵中每一点的损失。那么真标签就为全1矩阵。如下图:
    在这里插入图片描述
    项目中的主要模块已经讲解完毕,下面我们来看代码

3.代码解读

3.1项目结构

在这里插入图片描述

3.1项目运行

你需要下载该项目的数据集,打开项目datasets文件夹,查看download_cyclegan_dataset.sh文件,查看查找URL,即为数据集地址或者你直接点击
http://efrosgans.eecs.berkeley.edu/cyclegan/datasets下载数据集horse2zebra.zip,解压放到datasets文件夹下:
在这里插入图片描述
此外你还需要pip 你所缺失的依赖包,一般是缺失

pip install dominate
pip install visidom
Logo

Agent 垂直技术社区,欢迎活跃、内容共建。

更多推荐