循环生成网络 CycleGan 原理介绍

2023-11-06 03:59

本文主要是介绍循环生成网络 CycleGan 原理介绍,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

​ 本文旨在解释“循环生成网络”的内部工作原理,以及如何将其应用于解决现实世界中的任务。

介绍

​ 循环生成对抗网络(简称CycleGans)[1]是功能强大的计算机算法,具有改善数字生态系统的潜力。 它们能够将信息从一种表示形式转换为另一种表示形式。 例如,当给定图像时,他们可以对其进行模糊处理,着色(如果其最初是黑白的),提高其清晰度或填补缺失的空白。

​ 它们比传统的设计/生产/写作软件更强大。 因为CycleGans是机器学习算法,所以它们原则上可以学习实现所需的任何转换。 相反,传统的转换软件(例如Photoshop)通常经过编码和开发以执行特定任务。 而且,CycleGans可以从现有的软件获得更高的性能,因为它们可以从数据中学习并随着收集的数据的增加而提高效果。

​ 了解CycleGans不同级别的工作原理和能力令人兴奋,下面还介绍了有关人工智能如何以前所未有的方式影响我们日常的见解。

生成对抗网络

​ 在讨论CycleGans之前,让我们简要讨论常规的生成对抗网络。

​ 生成对抗网络(简称GAN)[2]是能够创建数据的机器学习算法。 当向他们提供诸如图像,声音或文本之类的信息时,他们学会生成新的外观/声音相似的输出。 例如:给定一组人脸图像,该算法可以自学(通过机器学习数据进行训练)人脸的外观,并能够创建新人脸。

​ CycleGAN是传统GAN的特殊变体。 他们也可以创建新的数据样本,但是通过转换输入样本来实现,而不是从头开始创建。 换句话说,他们学会了从两个数据源转换数据。 这些数据可由提供此算法数据集的科学家或开发人员进行选择。 在两个数据源是狗的图片和猫的图片的情况下,该算法能够有效地能够将猫的图像转换为狗的图像,反之亦然。

他们是怎么做到的呢?

什么是CycleGan?

​ CycleGan是一个神经网络,可以学习两个域之间的两个数据转换函数。 其中之一是G(x)。 它将给定样本x∈X转换为域Y的元素。第二个是F(y),它将样本元素y∈Y转换为域X的元素。

两个GAN,一个CycleGAN

​ 为了学习F和G,使用了两个传统的GAN。 每个GAN内部都有一个生成器网络,该网络学习如何根据需要转换数据。 GAN的第一生成器学习计算F,GAN的第二生成器学习计算G。

生成器函数G和F的定义。

​ 此外,每个生成器都与一个鉴别器相关联,该鉴别器学习将实际数据y与合成数据G(x)区分开。

生成器函数G和F的定义。

​ 因此,CycleGAN由两个生成器和两个鉴别器组成,它们学习变换函数F和G。此结构显示在下图中:

CycleGan表示形式。 它由两个GAN组成,它们学习两个转换。
每个GAN网络的损失函数

​ 每个GAN生成器将通过最小化损失来学习其对应的变换函数(F或G)。 通过测量生成的数据与目标数据的差异(例如,将猫的生成图像与真实猫的图像进行比较的差异)来计算生成器损失。 差异越大,生成器将受到的处罚越高。

​ 鉴别器损失也用于训练鉴别器,以擅长区分真实数据和合成数据。

​ 当这两个设置在一起时,它们将彼此改善。 训练生成器来欺骗鉴别器,并且鉴别器将被训练为从合成数据中更好地区分真实数据。 结果,生成器将非常擅长创建/转换所需数据(学习所需转换,例如F)。

​ 总体而言,GAN损失看起来像:

单个GAN损失的定义。 D是鉴别函数,G是生成函数。

​ 对于第二个生成器-鉴别器对,可以写出类似的损失:

​ CycleGAN将尝试最小化两个GAN损失的总和,以变换F和G。

循环变换一致性

​ 理想情况下,我们希望CycleGAN学习周期一致的变换函数F和G。 这意味着,在给定输入x的情况下,我们希望前后变换F(G(x))= x’准确地输出原始输入x。 从理论上讲这应该是可能的,因为在输入x上应用G将在Y域中输出一个值,而在输入y上应用F将在X域中输出一个值。

​ 周期一致性减少了这些网络可以学习的映射的可能集合,并迫使F和G进行相反的转换。 想象一下,学习的函数F通过修改猫的耳朵将猫图片转换为狗图片,而G通过修改猫的鼻子将猫图片转换为猫图片。 尽管这些转换可以实现目标,但它们并不一致,因为它们对数据应用了不同的更改。 使用周期一致性迫使F和G彼此相反。 这样,通过修改猫的耳朵将猫图片转换为狗图片,通过以相反的方式将猫耳朵修改为猫图片。 如果这两个函数是周期一致的,则它们也是更有意义的映射。

左:输入x的循环一致性损失的直观表示。 右:输入y的循环一致性损失的直观表示。

​ 仅使用GAN损失训练CycleGAN并不能保证保持循环的一致性。 因此,额外的循环一致性损失被用于强制执行此属性。 将该损失定义为输入值x与前向预测F(G(x))以及输入值y与前向预测G(F(y ))之间的差异。 差异越大,预测与原始输入的距离就越远。 理想情况下,我们的网络将这种损失降到最低。

周期一致性损失的定义。 等效于上图中的视觉表示。
完整损失

​ 用于训练网络的完整CycleGan损失的函数定义为两个GAN损失和Cycle一致性损失之和。

​ 加权因子ƛ(称为lambda)用于控制循环一致性损失在全部损失中的权重。 权重越高,与其他损失相比,减少循环一致性损失就越有意义。

CycleGan全损的定义

​ 经过优化以最小化此功能的CycleGAN将能够学习所需的变换F和G。有关机器学习的训练细节,将留在我的后续文章中。

结果

​ CycleGans已经完成了多项任务的测试,并且能够成功解决它们。 这些任务的一些示例是:

图像转换

输入:原始花图片。 输出:改进的花卉图片,并具有焦点和效果。

照片增强功能:CycleGans经过训练,可以生成专业的花朵照片,并具有多个级别的聚焦和模糊度,并且可以使用任何照片编辑工具。

输入:风景图片。 输出:将相同的风景替换到不同的艺术风格下。

图像样式转换:CycleGans经过训练可以改变图片和艺术品的样式。 例如,他们已经能够将照片转换成梵高风格的相同风景画。

从冬天到夏天的风景图片。

季节转换:与样式转换类似,CycleGAN已用于转换拍摄照片的季节。 结果令人惊讶,因为许多图像看起来像真实的图片。

音频转换

音乐流派转移:苏黎世联邦理工大学的研究人员已经能够训练CycleGAN,将经典的流行流派音乐歌曲转换为古典音乐作品[4]。

语音转换:日本NTT传播科学实验室的研究人员在使用CycleGAN转换定位者之间的语音注册表时,无论性别如何,都显示出令人印象深刻的结果[5]。

该作品的音频样本可以在他们的网站上找到。

其他

​ CycleGan官方纸质网站提供了在互联网不同地方发现的其他CycleGAN用例的画廊。 我希望这些引人入胜的示例能够鼓励您进一步了解CycleGans,并为它们提供更多有用和有趣的应用程序。

CycleGan问题

​ 尽管CycleGAN在许多上述任务中都取得了明显的成功,但仍显示出100%的成功率。 这是他们当前的陷阱:

  1. 当从其训练源中输入数据时,CycleGans可能会提供意外结果(请参见下图)。
  2. 需要进行几何更改而不是颜色或对比度的任务会使输入的更改最小。

用来变换马匹和斑马图像的CycleGan并未提供人类的输入,因此它可以生成任意变换。

​ 进一步的研究可能集中在改进这些领域的工作。 一些策略包括使用更广泛和更多样化的数据集,以及使用半监督学习方法。

最后的话

​ 我要感谢并祝贺加州大学伯克利分校AI研究实验室的朱俊彦,Taesung Park,Phillip Isola和Alexei A.Efros在CycleGans方面所做的工作。 在他们的网站上,您将找到与该项目有关的更多信息。

​ 我鼓励您看一下我的GANs存储库,在那里您可以找到Python中不同类型的GANs实现,以及在PyTorch和TensorFlow中从头开始进行中的CycleGan实现。
http://github.com/diegoalejogm/gans
​ 感谢您阅读本文直到最后。 希望您在学习有关该主题的过程中玩得开心,下一个见。

引用

[1] Jun-Yan Zhu, Taesung Park, Phillip Isola, Alexei A. Efros, Unpaired Image-to-Image Translation using Cycle-Consistent Adversarial Networks, https://arxiv.org/abs/1703.10593

[2] Ian J. Goodfellow, Jean Pouget-Abadie, Mehdi Mirza, Bing Xu, David Warde-Farley, Sherjil Ozair, Aaron Courville, Yoshua Bengio, Generative Adversarial Networks, 2014, https://arxiv.org/abs/1406.2661

[3] Tero Karras, Samuli Laine, Miika Aittala, Janne Hellsten, Jaakko Lehtinen, Timo Aila, Analyzing and Improving the Image Quality of StyleGAN, https://arxiv.org/abs/1912.04958

[4] Gino Brunner, Yuyi Wang, Roger Wattenhofer, Sumu Zhao, Symbolic Music Genre Transfer with CycleGAN, https://arxiv.org/abs/1809.07575)

[5] Takuhiro Kaneko, Hirokazu Kameoka, Kou Tanaka, Nobukatsu Hojo. CycleGAN-VC2: Improved CycleGAN-based Non-parallel Voice Conversion, https://arxiv.org/abs/1904.04631

翻译:孟翔杰

这篇关于循环生成网络 CycleGan 原理介绍的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/354343

相关文章

性能测试介绍

性能测试是一种测试方法,旨在评估系统、应用程序或组件在现实场景中的性能表现和可靠性。它通常用于衡量系统在不同负载条件下的响应时间、吞吐量、资源利用率、稳定性和可扩展性等关键指标。 为什么要进行性能测试 通过性能测试,可以确定系统是否能够满足预期的性能要求,找出性能瓶颈和潜在的问题,并进行优化和调整。 发现性能瓶颈:性能测试可以帮助发现系统的性能瓶颈,即系统在高负载或高并发情况下可能出现的问题

水位雨量在线监测系统概述及应用介绍

在当今社会,随着科技的飞速发展,各种智能监测系统已成为保障公共安全、促进资源管理和环境保护的重要工具。其中,水位雨量在线监测系统作为自然灾害预警、水资源管理及水利工程运行的关键技术,其重要性不言而喻。 一、水位雨量在线监测系统的基本原理 水位雨量在线监测系统主要由数据采集单元、数据传输网络、数据处理中心及用户终端四大部分构成,形成了一个完整的闭环系统。 数据采集单元:这是系统的“眼睛”,

Hadoop数据压缩使用介绍

一、压缩原则 (1)运算密集型的Job,少用压缩 (2)IO密集型的Job,多用压缩 二、压缩算法比较 三、压缩位置选择 四、压缩参数配置 1)为了支持多种压缩/解压缩算法,Hadoop引入了编码/解码器 2)要在Hadoop中启用压缩,可以配置如下参数

好题——hdu2522(小数问题:求1/n的第一个循环节)

好喜欢这题,第一次做小数问题,一开始真心没思路,然后参考了网上的一些资料。 知识点***********************************无限不循环小数即无理数,不能写作两整数之比*****************************(一开始没想到,小学没学好) 此题1/n肯定是一个有限循环小数,了解这些后就能做此题了。 按照除法的机制,用一个函数表示出来就可以了,代码如下

AI一键生成 PPT

AI一键生成 PPT 操作步骤 作为一名打工人,是不是经常需要制作各种PPT来分享我的生活和想法。但是,你们知道,有时候灵感来了,时间却不够用了!😩直到我发现了Kimi AI——一个能够自动生成PPT的神奇助手!🌟 什么是Kimi? 一款月之暗面科技有限公司开发的AI办公工具,帮助用户快速生成高质量的演示文稿。 无论你是职场人士、学生还是教师,Kimi都能够为你的办公文

深入探索协同过滤:从原理到推荐模块案例

文章目录 前言一、协同过滤1. 基于用户的协同过滤(UserCF)2. 基于物品的协同过滤(ItemCF)3. 相似度计算方法 二、相似度计算方法1. 欧氏距离2. 皮尔逊相关系数3. 杰卡德相似系数4. 余弦相似度 三、推荐模块案例1.基于文章的协同过滤推荐功能2.基于用户的协同过滤推荐功能 前言     在信息过载的时代,推荐系统成为连接用户与内容的桥梁。本文聚焦于

hdu4407(容斥原理)

题意:给一串数字1,2,......n,两个操作:1、修改第k个数字,2、查询区间[l,r]中与n互质的数之和。 解题思路:咱一看,像线段树,但是如果用线段树做,那么每个区间一定要记录所有的素因子,这样会超内存。然后我就做不来了。后来看了题解,原来是用容斥原理来做的。还记得这道题目吗?求区间[1,r]中与p互质的数的个数,如果不会的话就先去做那题吧。现在这题是求区间[l,r]中与n互质的数的和

Linux 网络编程 --- 应用层

一、自定义协议和序列化反序列化 代码: 序列化反序列化实现网络版本计算器 二、HTTP协议 1、谈两个简单的预备知识 https://www.baidu.com/ --- 域名 --- 域名解析 --- IP地址 http的端口号为80端口,https的端口号为443 url为统一资源定位符。CSDNhttps://mp.csdn.net/mp_blog/creation/editor

pdfmake生成pdf的使用

实际项目中有时会有根据填写的表单数据或者其他格式的数据,将数据自动填充到pdf文件中根据固定模板生成pdf文件的需求 文章目录 利用pdfmake生成pdf文件1.下载安装pdfmake第三方包2.封装生成pdf文件的共用配置3.生成pdf文件的文件模板内容4.调用方法生成pdf 利用pdfmake生成pdf文件 1.下载安装pdfmake第三方包 npm i pdfma

poj 1258 Agri-Net(最小生成树模板代码)

感觉用这题来当模板更适合。 题意就是给你邻接矩阵求最小生成树啦。~ prim代码:效率很高。172k...0ms。 #include<stdio.h>#include<algorithm>using namespace std;const int MaxN = 101;const int INF = 0x3f3f3f3f;int g[MaxN][MaxN];int n