| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 人工智能 -> 对抗生成网络GAN系列——CycleGAN简介及图片春冬变换案例 -> 正文阅读 |
|
[人工智能]对抗生成网络GAN系列——CycleGAN简介及图片春冬变换案例 |
? ? 对抗生成网络GAN系列——CycleGAN简介及风景照春冬变换案例写在前面? ??在前面我们已经介绍过了最原始的GAN网络和DCGAN,这篇文章我将来为大家介绍CycleGAN,并且基于CycleGAN实现一个小demo——将一张图片进行季节转换,即从冬天变换到夏天和从夏天变换到冬天。🍹🍹🍹 ???大家已经看到了CycleGAN,应该对GAN已经有了一定的了解,因此我不会对GAN的原理进行详细的讲解,只会叙述CycleGAN的独到之处。如若你还对GAN的原理不够清楚,下列两篇文章获取能帮到您: ???在正式讲解之前,我给大家先展示一下CycleGAN可以做哪些事: 准备好了嘛,下面就正式发车了。🚖🚖🚖 ? CycleGAN核心思想??这一部分我会来介绍CycleGAN的核心思想,相信你了解后会和我有一样的感觉,那就是这个设计太巧妙了!!!🌼🌼🌼 ??首先我们还是来介绍一下这篇论文的全称—— ??接下来再来讲讲什么是循环一致性对抗网络?这个就是本文的核心思想,听懂这个那么这篇论文你就搞懂了,这就为大家慢慢道来!!!🌼🌼🌼 ???我们先来明确一下这篇文章的目标,即有两个域的图像,分别为域X和域Y,例如域X表示夏季图片、域Y表示冬季图片,现期望将这两个域的图片互相转换,即输入域X的夏季图片生成器输出域Y的冬季图片或输入域Y的冬季图片生成器输出域X的夏季图片。我们来考虑考虑传统的GAN网络能否完成这项任务,示意图如下: ???域X的图片经生成器G不断生成图片G(x),而 D Y D_Y DY? 鉴别生成的图片和域Y中的图片,这样就构成了一个GAN网络,这样看似乎也可以完成任务,会将域X中的图片不断像域Y转换,但是呢,大家能否看出这里似乎还是存在着一些漏洞,如下图所示: ???上图我们的确是将域X中图片转换成了域Y中冬季图片风格,但是你会发现转换后的图片和原始图片没有任何关系,即GAN网络只学到了把一张夏季图片传化为冬季图片,但至于转换后的冬季图片和原始夏季图片有没有关系没有学习到,这样的话这个网络肯定是不符合实际要求的。那么CycleGAN就提出了循环一致性网络,如下图所示: ? ??现对上图做相关解释,首先我们先对相关字母做一定了解,如下表所示:
???说明了这些字母后,我们来看上图:首先域 X X X中的数据 x x x经过生成器 G G G会变成 Y ^ {\rm{\hat Y}} Y^ 中的图片 y ^ {\rm{\hat y}} y^? ,即现在夏季的图片已经转换成冬季的图片,不过此时夏冬两季图片的相关性我们是不知的,可能很差,而我们期望夏冬两季的图片相关性强,即区别只会体现在季节的差异上。于是我们会将 Y ^ {\rm{\hat Y}} Y^ 中的图片 y ^ {\rm{\hat y}} y^? 再经过生成器 F F F变换回来,即将冬季图片再转换成夏季图片,结果记为 x ^ {\rm{\hat x}} x^ 。然后我们就设置损失让 x x x和 x ^ {\rm{\hat x}} x^ 尽可能一样,这样就能控制生成器G生成的冬季图片和原始夏季图片相关性很强了。上述循环一致性大致过程为: x → G ( x ) → F ( G ( x ) ) ≈ x ^ x \to G(x) \to F(G(x)) \approx \hat x x→G(x)→F(G(x))≈x^ ,即让 x x x和 x ^ {\rm{\hat x}} x^尽可能相似。 ???上文介绍完了从域 X X X转域 Y Y Y的过程,那从域 X X X转域 Y Y Y是一样的,即尽可能让 y y y 和 y ^ {\rm{\hat y}} y^? 相似【 y → F ( y ) → G ( F ( y ) ) ≈ y ^ y \to F(y) \to G(F(y)) \approx \hat y y→F(y)→G(F(y))≈y^?】,过程如下: ???其实这样就把CycleGAN的核心思想都介绍完了,这里再贴上论文中关于这部分的一张完整的图供大家参考: ? CycleGAN损失函数??其实介绍完理论部分,那么损失函数就很简单了,一共有三部分组成,如下表所示:【呜呜呜,这里编辑的markdown表格在网页中显示总是乱码,大家将就看一下图片吧🎃】 ??而总的损失为上述三部分之和,公式如下: ? L ( G , F , D X , D Y ) = L G A N ( G , D Y , X , Y ) + L G A N ( G , D X , Y , X ) + λ L c y c ( G , F ) L(G,F,{D_X},{D_Y}) = {L_{GAN}}(G,{D_Y},X,Y) + {L_{GAN}}(G,{D_X},Y,X) + \lambda {L_{cyc}}(G,F) L(G,F,DX?,DY?)=LGAN?(G,DY?,X,Y)+LGAN?(G,DX?,Y,X)+λLcyc?(G,F) ??其中 λ \lambda λ 表示循环一致损失所占比重,论文中设置 λ = 10 \lambda = 10 λ=10。 ? CycleGAN图像夏冬转换案例???实验论文中也给除了Github地址,连接如下:CycleGAN 🍁🍁🍁 ???这里我就不带大家一点点的解读代码了,相信你阅读了我之前的文章看这个代码应该能大致了解,我之前几期做过一些代码的解读,但是我自己觉得描述并不算很清晰,有的想要表达的点也没有表述清楚,所以我觉得代码部分大家还是看视频讲解比较高效,但是不论怎样,阅读代码你一定要自己亲自调试调试,这样你会有很大的收获!!! ??这里我就放一张我运行的结果图片,从夏季转换到冬季,如下: ??可以看出,变换的效果还是不错的。【注意:我只再Googleclab上训练了15个epoch就得动了这样的效果,大家可以增大epoch进行训练。】 ? 论文下载CycleGAN论文下载 🍁🍁🍁 ? 参考连接
? |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/25 20:19:37- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |