circlegan_CycleGAN原理与例子-Pytorch实现 | 文艺数学君

本文深入探讨CycleGAN的原理和结构,包括其解决的问题和网络设计。通过Pytorch实现CycleGAN,展示summer2winter、monet2photo和horse2zebra等转换案例。此外,讨论了CycleGAN的局限性,适合用于风格转换而非图像生成。
摘要由CSDN通过智能技术生成

摘要这一篇主要介绍CycleGAN的相关知识. 包括该网络的原理和结构, 以及使用Pytorch来实现CycleGAN的例子.

简介

这一篇会介绍关于CycleGAN的相关内容. 主要分为两个部分.

我们首先会介绍CycleGAN的原理和结构

接着会使用Pytorch来实现CycleGAN, 主要实现三个例子, 分别是summer2winter, monet2photo和horse2zebra.

参考资料

下面是一些参考的资料(github上的一些链接).

A clean and readable Pytorch implementation of CycleGAN(我的实现主要是参考的这里的代码): PyTorch-CycleGAN

CycleGAN原理介绍

CycleGAN要解决的问题和结构

CycleGAN要解决的问题是这样的, 现在我们有两堆数据, 分别是Domain X和Domain Y(这两个数据之间不需要有一一对应的关系), 我们希望有一个生成器(转换器), 可以将Domain X的数据转换到Domian Y上面(或者是Domian Y转换到Domain X上面)

例如我们有下面的两堆数据, Domain X表示的是照片, Domian表示的是梵高的画作.

我们希望有一个生成器, 它可以将照片转换为梵高的画作(也就是将Domain X中的数据转换为Domain Y中的数据). 就如同下面的图中所表示的意思.

那么我们如何来训练这个生成器G呢, 于是最简单的, 我们想到了下面的方式来进行训练.

我们加上一个分类器D, 用来判断G生成的图像是否是Domian Y中的. 但是这么做会出现一个问题, 就是可能会出现不管输出什么到G, G的输出都是一张图片(一张Domain Y中的图片), 比如会出现下面这种情况, 生成的与输出的X完全不像.

但是我们希望输入和输出之间是有关系的, 于是我们有了CycleGAN的结构. 我们有生成器Gx->y, 将Domain X的数据转换为Domain Y的数据; 接着我们有生成器Gy->x, 将Domain Y的数据转换为Domain X的数据.

我们希望x与Gy->x(Gx-y(x))数据之间是相近的, 同时我们希望Gx-y(x)生成的数据可以被Dy分类器识别为属于Domian y的.

CycleGAN的局限性

CycleGAN是直接进行转换(direct transformation)的方法, 也就是图片不会进行encode之后再进行转换. 这样做会导致其实生成器生成前后的内容不会差太多.

所以我们一般会使用CycleGAN来进行风格转换之类的, 而不会直接进行图像的生成, 如头像的生成之类的工作.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值