【Keras+计算机视觉+Tensorflow】生成对抗神经网络中DCGAN、CycleGAN网络的讲解(图文解释 超详细)

简介: 【Keras+计算机视觉+Tensorflow】生成对抗神经网络中DCGAN、CycleGAN网络的讲解(图文解释 超详细)

觉得有帮助麻烦点赞关注收藏~~~

一、生成对抗网络简介

生成对抗网络(GANs,Generative Adversarial Nets),由Ian Goodfellow在2014年提出的,是当今计算机科学中最有趣的概念之一。GAN最早提出是为了弥补真实数据的不足,生成高质量的人工数据。GAN的主要思想是通过两个模型的对抗性训练。随着训练过程的推进,生成网络(Generator,G)逐渐变得擅长创建看起来真实的图像,而判别网络(Discriminator,D)则变得更擅长区分真实图像和生成器生成的图像。GAN网络不局限于提高单一网络的性能,而是希望实现生成器和鉴别器之间的纳什均衡。

事实上,整个学习优化的过程是一个极大极小博弈问题,即寻找G和D之间的平衡点,G的目标是使其输出X的分布尽可能接近真实数据的分布,而D是一个二分类器,目标在于分清是输出为0的生成数据还是输出为1的真实数据,当达到平衡点时,D便无法判断数据来自G还是真实样本,此时的G就为最优状态,综上所述,GAN在不断的对抗学习过程中,生成的数据越来越接近真实样本,而D的判别能力则越来越模糊

假设在低维空间Z存在一个简单容易采样的分布p(z),例如正态分布 ,生成网络构成一个映射函数G:Z→X,判别网络需要判别输入是来自真实数据X_real还是生成网络生成的数据X_fake,结构示意图如下图所示

随着深度卷积神经网络在图像领域的发展,GAN衍生出了很多模型,广泛应用于多个领域。例如DCGAN 为稳定的GAN网络设计和训练提供了十分宝贵的经验,其采用CNN实现对样本的无监督学习,即生成网络可以从随机噪声映射到真实数据空间,可以生成与样本相似的图像。CycleGAN使用循环一致性生成对抗网络,实现两种图像不同风格的互相转换,StackGAN可以将文字描述作为条件,生成器生成与之符合的自然图像,另外GAN还经常被用于图像修复,编辑,去模糊等领域。

二、DCGAN

DCGAN为稳定的GAN网络设计和训练提供了十分宝贵的借鉴,DCGAN使用CNN结构代替传统GAN的全连接网络,具体的改进如下

1:批处理标准化

即对每层都进行批标准化,批标准化是将分散数据统一的做法,其优化了神经网络,产生了具有统一规格的数据,能让机器更容易学习到数据之间的规律

2:使用转置卷积上采样

转置卷积上采样是神经网络生成图像时,从低分辨率到高分辨率的上采样方法,转置卷积能够让神经网络学会如何以最佳方式进行上采样

3:使用Leaky ReLU

使用它作为激活函数,从而实现神经网络的网络结构中从输入到输入的映射,正是由于这些非线性函数的反复叠加,才使得神经网络有能力来抓取复杂的类型,Leaky ReLU的应用提高了系统的计算速度,改善了梯度消失的问题

此外DCGAN的相关论文证明了随机噪声向量维度和范围变化对隐空间结构产生影响,可以改变生成图像内容,这也是我们产生多样化训练样本的原因,同时证明了生成器生成的数据也能用于图像分类任务上,这表明合成图像并不影响神经网络提取图像特征的强大能力

 

三、CycleGAN

CycleGAN是由两个镜像对称的GAN构成的环形网络,其输入为源域和目标域的图像,对同时输入的图像是否匹配并无要求,即CycleGAN能在输入图像不配对的情况下实现风格转换,思路框架如下

CycleGAN共包含两个生成网络和判别网络实现A域和B域图像的互相映射,CycleGAN的损失由GAN的损失和循环一致性损失共同组成

哈尔滨工业大学和腾讯优图提出加强版的CycleGAN结果如下图,可以看出CycleGAN在风格转换领域有着很强的应用价值(转成二次元啦...)

创作不易 觉得有帮助请点赞关注收藏~~~

相关文章
|
14天前
|
机器学习/深度学习 人工智能 编解码
【神经网络】基于对抗神经网络的图像生成是如何实现的?
对抗神经网络,尤其是生成对抗网络(GAN),在图像生成领域扮演着重要角色。它们通过一个有趣的概念——对抗训练——来实现图像的生成。以下将深入探讨GAN是如何实现基于对抗神经网络的图像生成的
13 3
|
22天前
|
机器学习/深度学习 算法 文件存储
【博士每天一篇文献-算法】 PNN网络启发的神经网络结构搜索算法Progressive neural architecture search
本文提出了一种名为渐进式神经架构搜索(Progressive Neural Architecture Search, PNAS)的方法,它使用顺序模型优化策略和替代模型来逐步搜索并优化卷积神经网络结构,从而提高了搜索效率并减少了训练成本。
25 9
|
2天前
|
机器学习/深度学习 网络安全 TensorFlow
探索操作系统的心脏:内核与用户空间的奥秘云计算与网络安全:技术挑战与未来趋势深度学习中的卷积神经网络(CNN)及其在图像识别中的应用
【8月更文挑战第29天】在数字世界的每一次点击与滑动背后,都隐藏着一个不为人知的故事。这个故事关于操作系统——计算机的灵魂,它如何协调硬件与软件,管理资源,并确保一切运行得井井有条。本文将带你走进操作系统的核心,揭示内核与用户空间的秘密,展现它们如何共同编织出我们日常数字生活的底层结构。通过深入浅出的讲解和代码示例,我们将一同解锁操作系统的神秘面纱,理解其对现代计算的重要性。 【8月更文挑战第29天】本文将深入探讨卷积神经网络(CNN)的基本原理和结构,以及它们如何被广泛应用于图像识别任务中。我们将通过代码示例来展示如何使用Python和TensorFlow库构建一个简单的CNN模型,并训练
|
28天前
|
机器学习/深度学习 IDE API
【Tensorflow+keras】Keras 用Class类封装的模型如何调试call子函数的模型内部变量
该文章介绍了一种调试Keras中自定义Layer类的call方法的方法,通过直接调用call方法并传递输入参数来进行调试。
21 4
|
28天前
|
TensorFlow 算法框架/工具
【Tensorflow+Keras】用Tensorflow.keras的方法替代keras.layers.merge
在TensorFlow 2.0和Keras中替代旧版keras.layers.merge函数的方法,使用了新的层如add, multiply, concatenate, average, 和 dot来实现常见的层合并操作。
14 1
|
28天前
|
机器学习/深度学习 TensorFlow 算法框架/工具
【Tensorflow+keras】解决cuDNN launch failure : input shape ([32,2,8,8]) [[{{node sequential_1/batch_nor
在使用TensorFlow 2.0和Keras训练生成对抗网络(GAN)时,遇到了“cuDNN launch failure”错误,特别是在调用self.generator.predict方法时出现,输入形状为([32,2,8,8])。此问题可能源于输入数据形状与模型期望的形状不匹配或cuDNN版本不兼容。解决方案包括设置GPU内存增长、检查模型定义和输入数据形状、以及确保TensorFlow和cuDNN版本兼容。
24 1
|
16天前
|
机器学习/深度学习 监控 数据可视化
|
27天前
|
TensorFlow 算法框架/工具
【Tensorflow+Keras】学习率指数、分段、逆时间、多项式衰减及自定义学习率衰减的完整实例
使用Tensorflow和Keras实现学习率衰减的完整实例,包括指数衰减、分段常数衰减、多项式衰减、逆时间衰减以及如何通过callbacks自定义学习率衰减策略。
28 0
|
28天前
|
API 算法框架/工具
【Tensorflow+keras】使用keras API保存模型权重、plot画loss损失函数、保存训练loss值
使用keras API保存模型权重、plot画loss损失函数、保存训练loss值
16 0
|
28天前
|
TensorFlow API 算法框架/工具
【Tensorflow+keras】解决使用model.load_weights时报错 ‘str‘ object has no attribute ‘decode‘
python 3.6,Tensorflow 2.0,在使用Tensorflow 的keras API,加载权重模型时,报错’str’ object has no attribute ‘decode’
28 0
下一篇
云函数