深度卷积对抗神经网络 进阶 第三部分 GANs Unpaired Translation with Cycle GAN 模型

news/2024/4/27 10:00:53/文章来源:https://blog.csdn.net/Delay_coder/article/details/129173786

非配对的图像转换应用 Unpaired Image-to-Image Translation

Unpaired image-to-image translation 主要用于学习两组图像之间的对应关系,检查和寻找两堆数据中的共同内容(content)以及每堆独有的特点(style)。而这个模型是非监督的,也就意味着不需要进行数据的标注便可以进行训练。

CycleGAN 循环GANs模型

循环一致性 Cycle Consistency

循环一致性指的是当图片经过生成模型后再次经过生成模型的反向模型而得到的循环后的模型,其图片与原图片的一致性问题。

当然,如果循环后图片与原图片一模一样当然是最好的,这证明了了模型的稳定性。而在循环模型中,我们通过这种方式来告诉两个模型哪些是特征,哪些不是特征。这样,我们不用通过对数据进行标注,而是原图像与循环后的图像互为配对,以此来互相纠正模型的错误,并使其能够达到我们想要的效果。

模型结构 - Two GANs

Cycle会存在两个GANs,分别代表两个方向。比如说我们要把正常马的身上涂上白色斑纹变为斑马。那么在Cycle GANs中,模型会由两个生成器(正常马生成斑马,斑马生成正常马)和两个分辨器(分辨生成的斑马与实际斑马的分辨器,以及分辨生成的马与实际马的分辨器)所组成。

因此Cycle GAN使用两个GAN来进行图片到图片的转化 CycleGAN uses two GANs for unpaired image-to-image translation。并且其分辨器是经典的PatchGAN's,也就是分辨结果是一个分类矩阵而不是一个简单的值。其生成器十分类似于U-Net和DCGAN,但是在其中加入了SKIP CONNECTIONs, 也就是增加了层之间的信息交互。

其中和U-Net最大的区别就是中间的Residual Block (残留区块),这种区块可以相当于一种skip function,它不是作为新的通道被串联起来,而是直接添加到卷积的输出。在下面的可视化中,你可以想象条纹是由卷积产生的,然后添加到马的原始图像中,将其转化为斑马。这些跳过连接也允许网络更加深入,因为它们有助于解决梯度消失的问题,当神经网络变得太深,梯度在反向传播中倍增变得非常小的时候,就会出现梯度消失的问题;相反,这些跳过连接能够实现更多的梯度流动。一个更深的网络通常能够学习更复杂的特征。Residual Block的解释还有待进一步研究(*)。

正向的从斑马到正常的马

反向的从正常的马到斑马

总之,由于是无监督的学习,数据并没有配对,因此并没有明确的目标输出。而且不同的分辨器分辨的是不同类型的数据。

损失函数

循环一致性损失 Cycle Consistency Loss

正向的从斑马到马再到斑马的循环一致性

经过连个生成器保持一致是非常重要的性质,其可以让模型去分析两组图片中的唯一特性(有条纹和没有条纹)和共同特性(马的形状),并将其他模型所误判断的特性进行逐渐的纠正。

反向的从马到斑马再到马的循环一致性

另一种理解便是循环一致性Cycle consistency可以将不一致的特征进行传递,而保持一致的内容。而且这种损失可以缓慢地矫正生成器生成结果的趋势,且两个方向的一致性都需要保证。

具体的实例代码如下。

def get_identity_loss(real_X, gen_YX, identity_criterion):'''Return the identity loss of the generator given inputs(and the generated images for testing purposes).Parameters:real_X: the real images from pile Xgen_YX: the generator for class Y to X; takes images and returns the images transformed to class Xidentity_criterion: the identity loss function; takes the real images from X andthose images put through a Y->X generator and returns the identity loss (which you aim to minimize)'''identity_X = gen_YX(real_X)identity_loss = identity_criterion(identity_X, real_X)return identity_loss, identity_X
 

最小均方误差 Least Squares Loss

最小均方误差的损失函数在某些情况下可以解决vanishing gradients 和 mode collapse的问题,其定义如下所示。

其定义的原理主要是预测值与真实值的差距,类似于BCEloss, 但是其的平方特性使得其比BCELoss更加的稳定。

不变性损失 Identity Loss

加入该损失可以非常有效地避免生成器改变图片颜色的问题,其主要利用像素距离来告诉生成器进行一定的纠正。

具体的操作便是将图片经过反向的生成器,将生成的结果与原结果比较像素距离。如果相同则说明其能够分辨出这个结果不需要进行任何变化,而不相同则说明生成器还有待进步。

而加入不变性损失会非常高效的保留原相片的颜色(Color preservation),如下图所示。

具体的示例代码如下。

def get_identity_loss(real_X, gen_YX, identity_criterion):'''Return the identity loss of the generator given inputs(and the generated images for testing purposes).Parameters:real_X: the real images from pile Xgen_YX: the generator for class Y to X; takes images and returns the images transformed to class Xidentity_criterion: the identity loss function; takes the real images from X andthose images put through a Y->X generator and returns the identity loss (which you aim to minimize)'''identity_X = gen_YX(real_X)identity_loss = identity_criterion(identity_X, real_X)return identity_loss, identity_X

模型总结

正向结构的模样

反向结构的模样

损失函数的结构

参考文献 Reference

(Optional) The CycleGAN Paper

Compelled to learn more about CycleGAN? Take a look at the original paper!

Unpaired Image-to-Image Translation using Cycle-Consistent Adversarial Networks (Zhu, Park, Isola, and Efros, 2020): https://arxiv.org/abs/1703.10593

(Optional) CycleGAN for Medical Imaging

Intrigued by the application of CycleGANs in the medical field? See how they can be used to help augment data for medical imaging!

Data augmentation using generative adversarial networks (CycleGAN) to improve generalizability in CT segmentation tasks (Sandfort, Yan, Pickhardt, and Summers, 2019):

(Optional Notebook) MUNIT

https://colab.research.google.com/github/https-deeplearning-ai/GANs-Public/blob/master/C3W3_MUNIT_(Optional).ipynb

Please note that this is an optional notebook, meant to introduce more advanced concepts if you're up for a challenge, so don't worry if you don't completely follow!

In this notebook, you will learn about and implement MUNIT, a method for unsupervised image-to-image translation, as proposed in Multimodal Unsupervised Image-to-Image Translation (Huang et al. 2018).

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_73016.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【Database-03】从 MySQL 迁移到 达梦数据库(DM 8)

1、环境 源数据库 MySQL 8.30 目标数据库 DM 8 操作系统 Centos 9 Steam 迁移工具 DM 数据迁移工具 (DM DTS) 2、开始迁移 2.1、打开DM数据迁移工具 在新建工程对话框中填写工程名和工程描述信息,点击【确定】按钮,成功添加了一个工程。 2.2、新建迁…

3年经验,3轮技术面+1轮HR面,拿下字节30k*16薪offer,这些自动化测试面试题值得大家借鉴

面试一般分为技术面和hr面,形式的话很少有群面,少部分企业可能会有一个交叉面,不过总的来说,技术面基本就是考察你的专业技术水平的,hr面的话主要是看这个人的综合素质以及家庭情况符不符合公司要求,一般来…

2023年,IT互联网还有发展前景吗?

不得不说,互联网在整个社会经济发展中扮演着不可或缺的角色;不仅自身的技术具有前沿性,也推动着其他行业进入数字化经济时代,让我们的工作生活变得更加便捷。 在“互联网”时代,每个服务行业都会利用大数据&#xff0…

SpringBoot入门(二)

这里写目录标题一、SpringBoot整合Junit1.1 搭建SpringBoot工程1.2 引入starter-test起步依赖1.3 编写类1.4 测试二、SpringBoot整合mybatis2.1 搭建SpringBoot工程2.2 引入mybatis起步依赖,添加驱动2.3 编写DataSource和MyBatis相关配置2.4 定义表和实体类2.5 编写…

Bootstrap入门到精通

文章目录前言一、Bootstrap是什么?二、Bootstrap安装方式一:将压缩包下载到本地引入使用方式二:使用Bootstrap官方cdn二.Bootstrap容器下面是屏幕宽度在不同大小时不同容器的显示状态三.Bootstrap栅格系统bootstrap网格系统有以下六个类网格系…

linux shell 入门学习笔记7 父子shell面试题

1. 不同的执行方式,不同的shell环境 每次调用bash/sh解释器执行脚本都会开启一个子shell,因此不保留当前shell变量,通过pstree命令检查进程树调用source是当前环境加载脚本,因此保留变量 例子: xiao123xiao123:~/Dow…

直播间的2个小感悟

我是卢松松,点点上面的头像,欢迎关注我哦! 在线人数固定 最近直播间出现了很多新面孔,有的是偶然刷到的,有的是关注互联网找到的。而直播间的人数一直没什么变化,卢松松在抖音直播较少,主播间…

开学第一周,超30所高校系主任选择与百度飞桨联办校赛

经历了一场特殊而漫长的假期,各地校园又恢复了往日的热闹,重新焕发出勃勃生机,师生们在一声声久别重逢的暖心问候中,迎来了2023年春季学期。 以赛促学蔚然成风 开学季是校内竞赛策划及启动的最佳时机之一,越来越多的老…

JVM17GUI工具

3. JVM 监控及诊断工具-GUI 篇 3.1. 工具概述 命令行工具或组合能帮您获取目标 Java 应用性能相关的基础信息,但它们存在下列局限: 1.无法获取方法级别的分析数据,如方法间的调用关系、各方法的调用次数和调用时间等&#xff0…

TEMU联盟计划用意何在?做推广达人真的能收入满满吗?

据东哥近期了解,Temu在北美市场表现十分火爆,甚至冲上了AppStore下载榜第一名。Temu在美国市场上采用了类似PDD的病毒式传播策略,以实惠的产品和折扣吸引消费者并动员普通人大量传播链接和App下载,所以有了TEMU联盟计划&#xff0…

ArcGIS导出AI或EPS格式的地图图片并在Adobe Illustrator中继续编辑

本文介绍在ArcGIS下属的ArcMap软件中,将绘制好的地图导出为.ai或者.eps格式文件,并在Adobe Illustrator软件中进一步编辑地图,并最终导出为图片格式的结果文件的方法。 在ArcMap软件中绘制各类地图可以说非常方便,绘制得到的地图也…

深圳/东莞/惠州师资比较强的CPDA数据分析认证

深圳/东莞/惠州师资比较强的CPDA数据分析认证培训机构 CPDA数据分析师认证是中国大数据领域有一定权威度的中高端人才认证,它不仅是中国较早大数据专业技术人才认证、更是中国大数据时代先行者,具有广泛的社会认知度和权威性。 无论是地方政府引进人才、…

synchronized和ReentrantLock有什么区别呢?

第15讲 | synchronized和ReentrantLock有什么区别呢? 从今天开始,我们将进入 Java 并发学习阶段。软件并发已经成为现代软件开发的基础能力,而 Java 精心设计的高效并发机制,正是构建大规模应用的基础之一,所以考察并发…

Golang学习Day1

😋 大家好,我是YAy_17,是一枚爱好网安的小白。本人水平有限,欢迎各位大佬指点,欢迎关注 😁,一起学习 💗 ,一起进步 ⭐ 。⭐ 此后如竟没有炬火,我便是唯一的光…

诚邀您体验人工智能AI

近期,人工智能(AI)领域动作频频,OPENAI公司Chat GPT的出现,标志着人工智能的研究与应用已经进入了一个崭新的发展阶段,国内腾讯、阿里巴巴、百度、易网、国外微软、谷歌、苹果、IBM、Amazon,等互…

电子技术——反馈放大器的分析方法总结

电子技术——反馈放大器的分析方法总结 第一种也是最简单的估算方法,直接拿出反馈网络,计算 β\betaβ 则假设在 AβA\betaAβ 无限大的情况下有 Af≃1/βA_f \simeq 1/\betaAf​≃1/β 。开环法。比第一种方法更能精确的估计 AAA 和 β\betaβ 的值。系…

自动化测试优势和劣势

一、自动化测试概述 软件自动化测试是相对手工测试而存在的,由测试人员根据测试用例中描述的规程一步步执行测试,得到实际结果与期望结果的比较。在此过程中,节省人力、时间或硬件资源,提高测试效率。 二、自动化测试优势&劣…

BP神经网络参数总结,BP神经训练窗口详解,基于BP神经网络的火灾识别,1000案例之17

目录 摘要 BP神经网络参数设置及各种函数选择 参数设置 训练函数 传递函数 学习函数 性能函数 显示函数 前向网络创建函数 BP神经网络训练窗口详解 训练窗口例样 训练窗口四部详解 基于B P神经网络的火灾识别 数据集 MATLAB编程BP神经网络代码,并附有GUI窗口 效果图…

Python-项目实战--贪吃蛇小游戏-贪吃蛇功能实现(4)

5.贪吃蛇功能的实现在这一小节,我们就以完成的游戏框架为基础,加入贪吃蛇的功能,完成整个游戏的开发本小节的知识重点包括:贪吃蛇类的设计定义贪吃蛇类添加蛇身体绘制和移动身体改变贪吃蛇的方向贪吃蛇吃食物贪吃蛇的死亡5.1贪吃蛇类的设计我…

java -cp 错误:找不到或无法加载主类

java -cp 错误:找不到或无法加载主类 1.问题场景 在一个项目开发中,我需要写一个 windows的bat脚本,需要在里面 调用 SpringBoot项目生成的jar包,我在调用 classes下面的 jar时 通过 调用 jar包 去调用 jar包中的某个 .java类 …