生成式对抗网络GAN

news2024/11/19 20:17:40

Generative Adversarial Nets由伊恩·古德费洛(Ian J.Goodfellow)等人于2014年发表在Conference on Neural Information Processing Systems (NeurIPS)上。NeurIPS是机器学习和计算神经科学领域的顶级国际学术会议之一。

1. GAN在哪些领域大放异彩

图像生成:

论文地址:styleGAN styleGAN2
图像生成是生成模型的基本问题,GAN相对先前的生成模型能够生成更高图像质量的图像。如生成逼真的人脸图像。https://thispersondoesnotexist.com是一个叫做‘这个人不存在’的网站,它是基于GAN的一个随机人脸生成网站,每次刷新该网站都将生成一个不同的人脸。
在这里插入图片描述

图像超分辨率

论文地址:SRGAN
将图像放大时,图片会变得模糊。使用GAN将32*32的图像扩展为64*64的真实图像,放大图像的同时提升图片的分辨率。
在这里插入图片描述

图像转化:

论文地址:CycleGAN
CycleGAN,即循环生成对抗网络,出自发表于 ICCV17 的论文《Unpaired Image-to-Image Translation using Cycle-Consistent Adversarial Networks》,和它的兄长Pix2Pix(均为朱大神作品)一样,用于图像风格迁移任务。以前的GAN都是单向生成,CycleGAN为了突破Pix2Pix对数据集图片一一对应的限制,采用了双向循环生成的结构,因此得名CycleGAN。

在这里插入图片描述

其他GAN领域

生成对抗网络(GANs)在多个领域都取得了显著的成就,其灵活性和强大的生成能力使其能够应用于各种应用。

  1. 图像生成与转换:

    • pix2pix 和 CycleGAN: 用于图像转换,例如风格迁移、图片翻译等。
    • StyleGAN 和 ProGAN: 生成高分辨率逼真的图像,用于人脸合成和自然图像生成。
  2. 人脸生成和编辑:

    • DeepFake 技术: 使用 GANs 进行逼真的人脸合成。
    • StarGAN 和 Age-cGAN: 实现多领域的人脸编辑,如年龄、性别、表情等。
  3. 图像修复和超分辨率:

    • Super-Resolution GANs(SRGAN): 用于提高图像的分辨率。
    • Deep Image Prior: 利用 GANs 进行图像修复。
  4. 生成式艺术:

    • Artbreeder: 利用 GANs 进行创造性的艺术生成,探索图像合成的艺术应用。
  5. 医学图像生成与分割:

    • 生成医学图像: GANs 用于生成具有各种病例特征的医学图像,用于培训机器学习模型。
    • 图像分割: 利用 GANs 进行医学图像的分割和增强。
  6. 风格迁移和设计:

    • Neural Style Transfer: 使用 GANs 进行艺术风格的图像转换。
    • FashionGAN: 用于时尚设计和生成。
  7. 文本生成:

    • Text-to-Image Synthesis: GANs 用于将文本描述转换为图像。
    • Conditional GANs: 用于生成与给定文本描述相关的图像。
  8. 无监督学习和数据增强:

    • 生成无监督特征: GANs 用于学习无监督的特征表示。
    • 数据增强: GANs 用于生成额外的训练数据,提高监督学习模型的性能。

其他GAN论文

  1. pix2pix: https://affinelayer.com/pixsrv/

  2. DiscoGAN:https://github.com/carpedm20/DiscoGAN-pytorch

  3. TPGAN: https://arxiv.org/pdf/1704.04086.pdf

  4. pix2pix HD:https://tcwang0509.github.io/pix2pixHD/

  5. stackGAN: https://arxiv.org/pdf/1612.03242.pdf

  6. AttnGAN:https://arxiv.org/abs/1711.10485

  7. DTN:https://arxiv.org/pdf/1611.02200.pdf

  8. MGAN: https://arxiv.org/pdf/1604.04382.pdf

  9. Age-cGAN:https://arxiv.org/pdf/1702.01983.pdf

  10. StarGAN:https://arxiv.org/abs/1711.09020

  11. Image Inpainting:https://arxiv.org/abs/1804.07723

  12. MaskGAN:https://arxiv.org/abs/1801.07736

GAN工作原理

生成对抗网络(GAN)由两个主要部分组成:生成器(Generator)和判别器(Discriminator)。这两个部分通过对抗的方式共同学习,使得生成器能够生成逼真的数据,而判别器能够区分真实数据和生成器生成的数据。

生成器

在统计学眼中,整个世界是通过采样各种不同的分布得到的。
生成模型:对整个数据的分布进行建模,使得能够生成各种分布。
生成图片、生成文本、生成各种东西就是去抓住整个数据的一个分布。

生成器(Generator):

  • 生成器的目标是生成看起来像真实数据的样本。
  • 它接收一个随机噪声向量(通常是从正态分布中采样得到的)作为输入,并通过神经网络生成数据。
  • 生成器的目标是欺骗判别器,使其无法区分生成的数据和真实数据。

辨别器

判别器(Discriminator):

  • 判别器的目标是区分生成器生成的数据和真实数据。
  • 它接收真实数据或生成器生成的数据作为输入,并通过神经网络输出一个概率值,表示输入是真实数据的概率。
  • 判别器的目标是正确地将真实数据识别为真实,并将生成的数据识别为伪造。

Generative Adversarial Nets Introduction部分

论文提到深度学习的前景是发现丰富的分层模型,这些模型代表了AI应用中遇到的各种数据的概率分布。即深度学习不仅仅是深度神经网络,更多的是对整个数据分布的一个特征的表示。
深度学习在辨别上做的不错,但在生成上的效果不好,难点在于去最大化似然函数时,我们要对概率函数很多近似,近似带来了很大的计算困难。这篇文章的关键是不用近似似然函数而可以用别的方法来得到一个计算上更好的模型

作者在文中做了一个形象的比喻:将生成器比作一个生产假币的造假者,而判别模型类似于警察,试图检测假币。造假者和警察会不断学习,造假者提升自己造假的手段,警察会提升自己判别真假币的能力。最后希望得到这样一个结果:造假者获胜,造的假钱跟真的一样,使得警察无法区分真币假币。

该框架可以针对多种模型和优化算法给出具体的训练算法。在本文中,我们探究了生成模型通过多层感知机传递随机噪声生成样本时的特殊情况,而判别模型也是多层感知机。我们把这种特殊情况称为adversarial nets。在这种情况下,我们可以只使用非常成功的反向传播和dropout算法来训练这两个模型,也可以只使用前向传播从生成模型中采样。不需要任何近似推断或马尔可夫链。

Generative Adversarial Nets Related work部分

在这一部分,作者提到之前的大多数关于深度生成模型的工作:一个是构造出一个分布函数,然后提供参数供其学习,学习出真实的分布,明白其均值、方差到底是什么。一个是不去构造分布函数,而是学一个模型来近似这个分布,但是不知道最后的分布是怎样的,算起来较容易。
随后提到他们观察到的一个结果:对 f f f的期望求导,等价于对 f f f自己求导。这也就是为什么他们使用误差反向传播的原因。
在这里插入图片描述
之后作者提到了一些相关的工作,包括VAE、NCE,并解释了与predictability minimization算法的区别

发现这里有总结的较好的,后续可以查看这里:https://blog.csdn.net/qq_45138078/article/details/128366117

Generative Adversarial Nets的缺陷及后续的改进

训练不稳定:外层循环迭代N次直到完成,如何判断是否收敛,这里有两项,一个是往上走(max),一个是往下走(min),有两个模型,所以如何判断收敛并不容易。整体来说,GAN的收敛是非常不稳定的。

判别器训练得太好:在价值函数中,等式右边的第二项存在一定的问题:在早期的时候G比较弱,生成的数据跟真实的数据差得比较远,这就很容易将D训练的特别好(D能够完美地区分开生成的数据和真实的数据),就导致log(1-D(G(z)))会变成0,求梯度再更新G的时候,就会发现求不动了。
在这里插入图片描述

后续论文改进

  1. Improved Techniques for Training GANs提出了一系列的训练技巧,包括正则化项、生成器和判别器的架构选择等,以提高GAN的训练稳定性和生成样本的质量。
  2. Wasserstein GAN引入Wasserstein距离(Earth Mover’s Distance)作为GAN的目标函数,通过减小生成分布和真实分布之间的差异,改善了训练的稳定性和生成图像的质量。
  3. Least Squares Generative Adversarial Networks使用最小二乘损失函数代替原始GAN的二元交叉熵损失,有助于解决训练过程中的模式崩溃问题,提高生成图像的质量。
  4. Self-Attention Generative Adversarial Networks引入了自注意力机制,使生成器能够更好地捕捉输入数据的长距离依赖关系,提高生成图像的细节和整体质量。
  5. Training Generative Adversarial Networks with Limited Data针对有限数据情况,提出了一种基于数据增强和迁移学习的方法,以改善生成模型在数据稀缺情况下的性能。

GAN未来及挑战

随着OpenAI发布DALL-E 2,自回归模型和扩散模型一夜之间成为大规模生成模型的新标准,而在此之前,生成对抗网络(GAN)一直都是主流选择,并衍生出StyleGAN等技术。
扩散模型:当前DALL-E, Midjourney, Stable Diffusion图片生成的核心都是Diffusion Model,它就是通过不停去除噪音期望获得好结果的生成模型。
在这里插入图片描述
扩散模型只需要训练一个模型,优化过程更加稳定。
扩散模型在条件生成任务上确实要优于GAN,特别是在生成的多样性方面。
扩散模型的训练过程相对简单,优化更为容易。
两阶段扩散模型可以进一步提高生成图片的质量,其效果通常超过了单一的GAN模型

大模型下的GAN-GigaGAN

针对增加StyleGAN架构容量会导致不稳定的问题,来自浦项科技大学(韩国)、卡内基梅隆大学和Adobe研究院的研究人员提出了一种全新的生成对抗网络架构GigaGAN,打破了模型的规模限制,展示了 GAN 仍然可以胜任文本到图像合成模型。(https://arxiv.org/abs/2303.05511)
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【无主之地3】最详细的补丁教程(酸奶公园)

【无主之地3】最详细的补丁教程(酸奶公园) steam已有游戏 1.迅雷种子下载文件,只用下载AddtionalContent这一个,放在文件夹OakGame下 2.将文件夹Engine>Binaries>ThirdParty>steamworks&a…

防蓝光护眼灯有用吗知乎 防蓝光护眼灯的作用

前段时间去了几个有小孩的家庭拜访,发现现在很多父母都是直接用家里的灯或者超市几十块钱买的台灯给小孩子写作业用的,最后还是只能花大价钱给孩子配眼镜,这样子做得不偿失,因为他们不知道家里灯光对视力的影响。给孩子学习用的最…

Cypress安装与使用教程(4)—— 软测大玩家

😏作者简介:博主是一位测试管理者,同时也是一名对外企业兼职讲师。 📡主页地址:【Austin_zhai】 🙆目的与景愿:旨在于能帮助更多的测试行业人员提升软硬技能,分享行业相关最新信息。…

presto/trino 入门介绍实战

引言 Presto是一款分布式SQL查询引擎,它能够在大规模数据集上实现快速、交互式的查询。本文将介绍Presto的基本概念并结合一些实际的代码示例,能够让的大家快速入门并在实际项目中应用。 官网:Launch Presto: Local download, JDBC, Docker…

【深度学习:构建医学图像】如何构建医学图像的 QA 工作流程

【深度学习:构建医学图像】如何构建医学图像的 QA 工作流程 第 1 步:选择并划分数据集第 2 步:准备使用多个盲注进行注释第三步:建立图像标注协议第 4 步:在少数样本上练习医学图像注释第 5 步:发布第一批图…

Nodejs 入门8 NeDB 轻量级的Node.js 数据库

Nodejs 入门8 NeDB 轻量级的Node.js 数据库 一、简介1. 什么是 Nedb?2. 特性和优势1. 轻量级2. 简单的API3. 内存和磁盘存储 二、如何开始使用 Nedb1. 安装 Nedb2. 创建数据库实例(1)简单示例(2) options 参数说明&…

为什么我说小公司也一定要用K8S

Kubernetes是谷歌以Borg为前身,基于谷歌15年生产环境经验开源的一个项目。Kubernetes致力于提供跨主机集群的自动部署、扩展、高可用以及运行应用程序容器的平台,其遵循主从式架构设计,其组件可以分为工作节点(Node)组…

[力扣 Hot100]Day5 盛最多水的容器

题目描述 给定一个长度为 n 的整数数组 height 。有 n 条垂线,第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。 找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。 返回容器可以储存的最大水量。 说明:你不能倾斜容…

vivado ip manager cache

https://china.xilinx.com/video/hardware/configuring-managing-reusable-ip-vivado.html “Core Containers”(核容器):勾选Use Core Containers for IP(为 IP 使用核容器)即可使用核容器功能,该功能支持…

Python操作excel-读取、表格填充颜色区分

1.场景分析 遇到一个需要读取本地excel数据,处理后打入到数据库的场景,使用java比较重,python很好的解决了这类问题 2.重难点 本场景遇到的重难点在于: 需要根据表格内的背景颜色对数据进行筛选 读取非默认Sheet 总是出现Value…

YOLOv8改进 | 细节涨点篇 | UNetv2提出的一种SDI多层次特征融合模块(分割高效涨点)

一、本文介绍 本问给大家带来的改进机制是UNetv2提出的一种多层次特征融合模块(SDI)其是一种用于替换Concat操作的模块,SDI模块的主要思想是通过整合编码器生成的层级特征图来增强图像中的语义信息和细节信息。该方法已在多个公开的医学图像分割数据集上进行了验证,包括皮…

全包了 功能超级强大的linux管理平台1panel部署教程

目录 先看下效果 1.1panel是什么 2.安装教程 2.1下载安装包 2.2解压 2.3安装 3.查看 3.1初始化并登录 3.2容器管理页面,可以启动 重启 创建容器 ​编辑 3.3应用商店 意见安装常用应用 ​编辑 3.4可视化任务管理 3.5网站管理 3.6数据库管理 ​编辑 3…

[计算机提升] 管理设备

4.8 管理设备 通过设备管理器可以对设备进行管理,通常的操作包括:禁用设备、启用设备、安装设备和卸载设备。 4.8.1 禁用、启用、卸载设备 1、打开设备管理器,找到要操作的设备,这里以网络适配器(网卡)示例: 2、右…

electron+vue项目使用serialport报错Cannot read property ‘indexOf‘ of undefined解决办法

描述 使用ElectronVue项目时引入serialport串口后启动时报下面错误 Cannot read property indexOf of undefined解决方法 打开vue.config.js找到pluginOptions -> electronBuilder -> externals添加serialport module.exports {pluginOptions: {electronBuilder: {e…

走迷宫(c语言)

前言: 制作一个迷宫游戏是一个有趣的编程挑战。首先,我们需要设计一个二维数组来表示迷宫的布局,其中每个元素代表迷宫中的一个格子。我们可以使用不同的值来表示空格、墙壁和起点/终点。接下来,我们需生成迷宫。在生成迷宫的过程…

MIT_线性代数笔记:第 26 讲 复矩阵;快速傅里叶变换

目录 复向量 Complex vectors复矩阵 Complex matrices傅里叶变换 Fourier transform快速傅里叶变换 Fast Fourier transform 实矩阵也可能有复特征值,因此无法避免在矩阵运算中碰到复数,本讲学习处理复数矩阵和复向量。 最重要的复矩阵是傅里叶矩阵&…

【备战蓝桥杯】——Day1

🌈个人主页: Aileen_0v0 🔥热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法 ​💫个人格言:“没有罗马,那就自己创造罗马~” #mermaid-svg-xKn7nmq36s9pgUXR {font-family:"trebuchet ms",verdana,arial,sans-serif;font-siz…

9 - 数据分片概述|部署MyCat服务

数据分片概述|部署MyCat服务|测试配置 数据分片概述分库分表分割方式水平分割(横向切分)垂直分割(纵向切分) 提供分库分表存储服务软件(中间件)MyCAT软件分片服务器的工作过程 部署M…

基于电源完整性的一些PCB设计建议

基于电源完整性的一些PCB设计建议 1. 尽量减少电源和地通路之间的环路电感,在相邻的层上分配电源和接地面时,使用尽可能薄的电介质; 2. 通过在平面之间使用尽可能高的介电常数来获得平面之间的最低阻抗,与尽可能薄的介电常数设计…

基于springboot的流浪动物救助管理系统

🍅点赞收藏关注 → 私信领取本源代码、数据库🍅 本人在Java毕业设计领域有多年的经验,陆续会更新更多优质的Java实战项目希望你能有所收获,少走一些弯路。🍅关注我不迷路🍅一 、设计说明 1.1研究背景 随着…