生成式对抗网络GAN
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)在多个领域都取得了显著的成就,其灵活性和强大的生成能力使其能够应用于各种应用。
-
图像生成与转换:
- pix2pix 和 CycleGAN: 用于图像转换,例如风格迁移、图片翻译等。
- StyleGAN 和 ProGAN: 生成高分辨率逼真的图像,用于人脸合成和自然图像生成。
-
人脸生成和编辑:
- DeepFake 技术: 使用 GANs 进行逼真的人脸合成。
- StarGAN 和 Age-cGAN: 实现多领域的人脸编辑,如年龄、性别、表情等。
-
图像修复和超分辨率:
- Super-Resolution GANs(SRGAN): 用于提高图像的分辨率。
- Deep Image Prior: 利用 GANs 进行图像修复。
-
生成式艺术:
- Artbreeder: 利用 GANs 进行创造性的艺术生成,探索图像合成的艺术应用。
-
医学图像生成与分割:
- 生成医学图像: GANs 用于生成具有各种病例特征的医学图像,用于培训机器学习模型。
- 图像分割: 利用 GANs 进行医学图像的分割和增强。
-
风格迁移和设计:
- Neural Style Transfer: 使用 GANs 进行艺术风格的图像转换。
- FashionGAN: 用于时尚设计和生成。
-
文本生成:
- Text-to-Image Synthesis: GANs 用于将文本描述转换为图像。
- Conditional GANs: 用于生成与给定文本描述相关的图像。
-
无监督学习和数据增强:
- 生成无监督特征: GANs 用于学习无监督的特征表示。
- 数据增强: GANs 用于生成额外的训练数据,提高监督学习模型的性能。
其他GAN论文
-
pix2pix: https://affinelayer.com/pixsrv/
-
DiscoGAN:https://github.com/carpedm20/DiscoGAN-pytorch
-
TPGAN: https://arxiv.org/pdf/1704.04086.pdf
-
pix2pix HD:https://tcwang0509.github.io/pix2pixHD/
-
stackGAN: https://arxiv.org/pdf/1612.03242.pdf
-
AttnGAN:https://arxiv.org/abs/1711.10485
-
DTN:https://arxiv.org/pdf/1611.02200.pdf
-
MGAN: https://arxiv.org/pdf/1604.04382.pdf
-
Age-cGAN:https://arxiv.org/pdf/1702.01983.pdf
-
StarGAN:https://arxiv.org/abs/1711.09020
-
Image Inpainting:https://arxiv.org/abs/1804.07723
-
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的时候,就会发现求不动了。
后续论文改进
- Improved Techniques for Training GANs提出了一系列的训练技巧,包括正则化项、生成器和判别器的架构选择等,以提高GAN的训练稳定性和生成样本的质量。
- Wasserstein GAN引入Wasserstein距离(Earth Mover’s Distance)作为GAN的目标函数,通过减小生成分布和真实分布之间的差异,改善了训练的稳定性和生成图像的质量。
- Least Squares Generative Adversarial Networks使用最小二乘损失函数代替原始GAN的二元交叉熵损失,有助于解决训练过程中的模式崩溃问题,提高生成图像的质量。
- Self-Attention Generative Adversarial Networks引入了自注意力机制,使生成器能够更好地捕捉输入数据的长距离依赖关系,提高生成图像的细节和整体质量。
- 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)
相关文章:

生成式对抗网络GAN
Generative Adversarial Nets由伊恩古德费洛(Ian J.Goodfellow)等人于2014年发表在Conference on Neural Information Processing Systems (NeurIPS)上。NeurIPS是机器学习和计算神经科学领域的顶级国际学术会议之一。 1. GAN在哪些领域大放异彩 图像生…...

Python如何使用Excel文件
使用Python操作Office——EXCEL 首先介绍下office win32 com接口,这个是MS为自动化提供的操作接口,比如我们打开一个EXCEL文档,就可以在里面编辑VB脚本,实现我们自己的效果。对于这种一本万利的买卖,Python怎么能放过…...
前端基础:回顾es6相关知识
Author note(题记): ECMAscript is international standard of javascript。 ECMA 是 js的国际标准版语言。 let and const 为什么之前用var现在需要用let,const呢? 其实就是因为规范作用域的问题。var的作用域无块级 for (var i 0; i <…...
Hive条件函数详细讲解
Hive 中的条件函数允许你在查询中基于某些条件执行逻辑操作。以下是你提到的条件函数的详细讲解,包括案例和使用注意事项: IF() 功能:根据条件返回两个表达式中的一个。语法:IF(boolean_test, value_if_true, value_if_false)案例:SELECT IF(1=1, true, false); 结果为 tr…...

java应用CPU过高查找原因
用top查到占用cpu最高的进程pid 根据进程ID找到占用CPU高的线程 ps -mp 60355 -o THREAD,tid | sort -r 用 printf "%x \n" 将tid换为十六进制:xid printf "%x \n" 6036 根据16进制格式的线程ID查找线程堆栈信息 jstack 60355 |grep ebcb -A…...

RXJS中Subject, BehaviorSubject, ReplaySubject, AsyncSubject的区别?
在RxJS(Reactive Extensions for JavaScript)中,Subject、BehaviorSubject、ReplaySubject和AsyncSubject都是Observable的变体,它们用于处理观察者模式中的不同场景。以下是它们之间的主要区别: 1、Subject: 是一种特…...
【算法题】55. 跳跃游戏
题目 给你一个非负整数数组 nums ,你最初位于数组的 第一个下标 。数组中的每个元素代表你在该位置可以跳跃的最大长度。 判断你是否能够到达最后一个下标,如果可以,返回 true ;否则,返回 false 。 示例 1ÿ…...

工业企业能源管理平台,可以帮助企业解决哪些方面的能源问题?
随着全球工业化进程的加快,工业企业在生产经营过程中消耗的能源也越来越庞大。能源成本的上升和环境保护的压力使得工业企业对能源管理的重要性有了深刻的认识。为了提高能源利用效率、降低能源消耗、减少环境污染,工业企业在能源管理方面迫切需要一套规…...

LLM:Training Compute-Optimal Large Language Models
论文:https://arxiv.org/pdf/2203.15556.pdf 发表:2022 前文回顾: OpenAI在2020年提出《Scaling Laws for Neural Language Models》:Scaling Laws(缩放法则)也一直影响了后续大模型的训练。其给出的结论是最佳计算效…...

http跟https有什么区别?
HTTP(Hypertext Transfer Protocol)和HTTPS(HTTP Secure)是两种不同的通信协议,它们在数据传输的安全性方面有明显的区别: 1. 安全性: - HTTP:是一种明文传输协议,数…...

python flask学生管理系统
预览 前端 jquery css html bootstrap: 4.x 后端 python: 3.6.x flask: 2.0.x 数据库 mysql: 5.7 学生管理模块 登录、退出查看个人信息、修改个人信息成绩查询查看已选课程选课、取消选课搜索课程课程列表分页功能 教师模块 登录、退出查看个人信息、修改个人信息录入…...

IDC机房服务器搬迁之运行了几年的服务器没关过机,今天关机下架,再上架突然起不来了,怎么快速处理?
环境 戴尔R420 服务器 1U 2台直连存储 4U CentOS 7 问题描述 IDC机房服务器搬迁之运行了几年的服务器没关过机,今天关机下架,再上架突然起不来了,怎么快速处理? 服务器上电开机就出现进入紧急模式 Welcome to emergency mode! After logging in, type “journalctl …...

基于位的权限系统
基于位的权限系统是一种利用二进制位运算进行权限管理的技术。在这种系统中,不同的权限被编码为2的幂次方 (例如1、2、4、8等),每个权限对应一个独立的二进制位(可想而知运算速度是非常快的)。通过将这些权限值组合在一起形成一个…...
[AIGC] Spring Boot Docker 部署指南
Spring Boot Docker 部署指南 引言 近年来,容器化部署成为了越来越流行的部署方式。Docker 是目前最受欢迎的容器化平台之一,它提供了一种将应用程序与其依赖项打包在一起,并以容器的形式运行的方法。Spring Boot 是一种用于快速开发和微服…...

图像处理------亮度
from PIL import Imagedef change_brightness(img: Image, level: float) -> Image:"""按照给定的亮度等级,改变图片的亮度"""def brightness(c: int) -> float:return 128 level (c - 128)if not -255.0 < level < 25…...

LeetCode刷题---基本计算器
解题思路: 根据题意,字符串中包含的运算符只有和- 使用辅助栈的方法来解决该问题 定义结果集res和符号位sign(用于判断对下一数的加减操作),接着对字符串进行遍历。 如果当前字符为数字字符,判断当前字符的下一个字符是否也是数字字符&#x…...

Kafka生产消费流程
Kafka生产消费流程 1.Kafka一条消息发送和消费的流程图(非集群) 2.三种发送方式 准备工作 创建maven工程,引入依赖 <dependency><groupId>org.apache.kafka</groupId><artifactId>kafka-clients</artifactId><version>3.3.1…...
c 小熊猫 c++ IDE编译ffmpeg 设置
菜单-》运行-》运行参数->编译器->编译器配置集->链接时加入下列选项 : -I /usr/local/ffmpeg/include -L /usr/local/ffmpeg/lib -lavformat -lavdevice -lavfilter -lavcodec -lavutil -lswscale -lswresample -lm 本机ffmpeg存储位置:inclu…...

【Java】十年老司机转开发语言,新小白从学习路线图开始
欢迎来到《小5讲堂》 大家好,我是全栈小5。 这是《Java》序列文章,每篇文章将以博主理解的角度展开讲解, 特别是针对知识点的概念进行叙说,大部分文章将会对这些概念进行实际例子验证,以此达到加深对知识点的理解和掌握…...

5.3 Verilog 带参数例化
5.3 Verilog 带参数例化 分类 Verilog 教程 关键词: defparam,参数,例化,ram 当一个模块被另一个模块引用例化时,高层模块可以对低层模块的参数值进行改写。这样就允许在编译时将不同的参数传递给多个相同名字的模块…...
React Native 开发环境搭建(全平台详解)
React Native 开发环境搭建(全平台详解) 在开始使用 React Native 开发移动应用之前,正确设置开发环境是至关重要的一步。本文将为你提供一份全面的指南,涵盖 macOS 和 Windows 平台的配置步骤,如何在 Android 和 iOS…...

黑马Mybatis
Mybatis 表现层:页面展示 业务层:逻辑处理 持久层:持久数据化保存 在这里插入图片描述 Mybatis快速入门 
Python实现prophet 理论及参数优化
文章目录 Prophet理论及模型参数介绍Python代码完整实现prophet 添加外部数据进行模型优化 之前初步学习prophet的时候,写过一篇简单实现,后期随着对该模型的深入研究,本次记录涉及到prophet 的公式以及参数调优,从公式可以更直观…...

相机从app启动流程
一、流程框架图 二、具体流程分析 1、得到cameralist和对应的静态信息 目录如下: 重点代码分析: 启动相机前,先要通过getCameraIdList获取camera的个数以及id,然后可以通过getCameraCharacteristics获取对应id camera的capabilities(静态信息)进行一些openCamera前的…...

PL0语法,分析器实现!
简介 PL/0 是一种简单的编程语言,通常用于教学编译原理。它的语法结构清晰,功能包括常量定义、变量声明、过程(子程序)定义以及基本的控制结构(如条件语句和循环语句)。 PL/0 语法规范 PL/0 是一种教学用的小型编程语言,由 Niklaus Wirth 设计,用于展示编译原理的核…...
服务器--宝塔命令
一、宝塔面板安装命令 ⚠️ 必须使用 root 用户 或 sudo 权限执行! sudo su - 1. CentOS 系统: yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh2. Ubuntu / Debian 系统…...

安宝特方案丨船舶智造的“AR+AI+作业标准化管理解决方案”(装配)
船舶制造装配管理现状:装配工作依赖人工经验,装配工人凭借长期实践积累的操作技巧完成零部件组装。企业通常制定了装配作业指导书,但在实际执行中,工人对指导书的理解和遵循程度参差不齐。 船舶装配过程中的挑战与需求 挑战 (1…...
A2A JS SDK 完整教程:快速入门指南
目录 什么是 A2A JS SDK?A2A JS 安装与设置A2A JS 核心概念创建你的第一个 A2A JS 代理A2A JS 服务端开发A2A JS 客户端使用A2A JS 高级特性A2A JS 最佳实践A2A JS 故障排除 什么是 A2A JS SDK? A2A JS SDK 是一个专为 JavaScript/TypeScript 开发者设计的强大库ÿ…...

iview框架主题色的应用
1.下载 less要使用3.0.0以下的版本 npm install less2.7.3 npm install less-loader4.0.52./src/config/theme.js文件 module.exports {yellow: {theme-color: #FDCE04},blue: {theme-color: #547CE7} }在sass中使用theme配置的颜色主题,无需引入,直接可…...