AIGC实战——ProGAN(Progressive Growing Generative Adversarial Network)

AIGC实战——ProGAN

    • 0. 前言
    • 1. ProGAN
    • 2. 渐进式训练
    • 3. 其他技术
      • 3.1 小批标准差
      • 3.2 均等学习率
      • 3.3 逐像素归一化
    • 4. 图像生成
    • 小结
    • 系列链接

0. 前言

我们已经学习了使用生成对抗网络 (Generative Adversarial Network, GAN) 解决各种图像生成任务。GAN 的模型架构和训练过程具有很高的灵活性,通过改进 GAN 架构设计和训练过程,研究人员提出了多种不同的网络架构,本节中,我们将介绍 ProGAN (Progressive Growing Generative Adversarial Network) 架构。

1. ProGAN

ProGAN (Progressive Growing Generative Adversarial Network )是由 NVIDIA2017 年提出的生成对抗网络 (Generative Adversarial Network, GAN) 模型,旨在提高 GAN 训练的速度和稳定性。在 ProGAN 中,并不直接对高分辨率图像进行训练,而是首先在低分辨率图像(例如 4 × 4 像素的图像)上训练生成器和判别器,然后在整个训练过程中逐渐增加网络层数以提高分辨率。需要注意的是,训练 ProGAN 需要大量的计算资源。

2. 渐进式训练

ProGAN 同样需要构建两个独立的网络,生成器和判别器,在训练过程中它们交替训练。
在普通 GAN 中,生成器始终输出高分辨率图像,即使在训练的早期阶段也是如此。但这种策略可能并非最优选择,生成器可能在训练的早期阶段很难学习到复杂特征。首先训练一个轻量级的 GAN 来生成准确的低分辨率图像,然后逐渐增加分辨率,这就是渐进式训练 (progressive training) 的核心思想。ProGAN 通过多个阶段进行训练,使用插值方法将训练集中图像尺寸缩放到 4 × 4 作为初始阶段,如下图所示。

渐进式训练

首先训练生成器将潜在输入噪声向量z(例如,长度为 512 )转换为形状为 4 × 4 × 3 的图像。相应的判别器将需要将尺寸为 4 × 4 × 3 的输入图像转换为标量预测,第一步中网络架构如下图所示。

网络架构

生成器中的蓝色框表示将一组特征图转换为 RGB 图像 (toRGB) 的卷积层,判别器中的蓝色框表示将 RGB 图像转换为一组特征图 (fromRGB) 的卷积层。
在原始 ProGAN 模型中,使用 80 万张图像训练这两个网络。接下来,我们需要了解如何扩展生成器和判别器以处理 8 × 8 像素的图像。
为了扩展生成器和判别器,我们需要混合使用其他神经网络层,可以分为过渡 (transition) 和稳定 (stabilization) 两个阶段。

网络架构

在过渡阶段,生成器会在现有的网络中附加新的上采样和卷积层,并使用残差连接来传递已经过训练的 toRGB 层的输出。需要注意的是,新的网络层最初使用参数 α α α 进行掩码处理,该参数在过渡阶段逐渐从 0 增加到 1,以便允许更多的新 toRGB 输出通过,减少现有 toRGB 层的输出。这是为了避免在添加新层时对网络造成冲击。
最终,旧的 toRGB 层输出被完全掩码,网络进入稳定阶段,在这一阶段,网络可以进一步调整输出,而不需要经过旧的 toRGB 层的输出。
鉴别器使用类似的过程,如下图所示。需要在输入图像之后,添加新的下采样和卷积层。现有的fromRGB层通过残差连接相连,并在过渡阶段随着新层的添加逐渐被淘汰,稳定阶段允许鉴别器使用新层进行微调。

模型架构

需要注意的是,即使网络是渐进训练的,也不会冻结任何网络层,在整个训练过程中,所有网络层都保持可训练状态。
ProGAN 中图像尺寸从 4 × 4 开始逐渐增长到 8 × 816 × 1632 × 32,直到 1,024 × 1,024,如下图所示。

整体架构

生成器和鉴别器的整体结构如下图所示。

模型架构

3. 其他技术

除了渐进训练外,ProGAN 还使用了包括小批标准差、均等学习率和逐像素归一化等技术。

3.1 小批标准差

小批标准差(Minibatch Standard Deviation)可以用于增加样本的多样性和减少模式崩溃的问题。在传统的 GAN 中,生成器网络接收一个随机噪声向量作为输入,并生成相应的合成样本。然而,这种方法存在一个问题,即生成的样本可能会过于相似,缺乏多样性。这是因为生成器通过学习大量样本的平均特征来生成图像,导致样本之间缺乏差异。
为了解决这个问题,小批标准差技术引入了一种新的特征向量计算方法。具体而言,它在生成器网络的某一层中计算生成样本的特征向量,并在训练过程中使用这些特征向量的标准差作为一个额外的特征。这个标准差可以理解为表示一小批(minibatch)样本之间的差异程度。
通过引入小批标准差,判别器网络不仅可以评估生成样本与真实样本之间的差异,还可以考虑生成样本之间的多样性。这使得生成器更倾向于生成多样性更高的样本,避免生成过于相似的输出。
小批标准差技术对于解决模式崩溃问题也是有效的。通过使用小批标准差,生成器可以更好地学习到数据集的整体分布,避免陷入单一模式。

3.2 均等学习率

均等学习率 (Equalized Learning Rates) 是一种用于训练神经网络的技术,旨在解决传统神经网络中的权重初始化问题。传统的神经网络在权重初始化时通常使用高斯分布或均匀分布随机初始化,这通常有助于提高训练过程的稳定性,但这种方法缺乏可解释性和普适性,导致网络可能出现梯度爆炸、梯度消失等问题。
AdamRMSProp 等优化器会规范化每个权重的梯度更新,使得更新的大小与权重的尺度(大小)无关。然而,这意味着动态范围较大的权重(即,输入较少的层)比动态范围较小的权重(即,输入较多的层)调整所需的时间相对较长。这会导致 ProGAN 中的生成器和判别器不同层的训练速度不平衡,因此需要使用均等学习率来解决这个问题。
均等学习率利用了批归一化的基本原理,在每一层的输入上动态地归一化权重,从而使每一层的输出具有相似的数量级。在实际应用中,通常通过将每一层的权重乘以一个标准化因子来实现。这个标准化因子可以根据每一层的权重大小和输入维度自适应地计算,从而保证每一层的权重归一化后具有相似的数量级。
除了权重归一化之外,均等学习率还通过缩放每一层的学习率来实现更加稳定的优化。在传统神经网络中,学习率通常是固定的,并在每次训练迭代中应用。然而,在使用均等学习率时,学习率会根据每一层的权重缩放,从而避免过度更新较小的权重(由于它们具有较大的梯度)或过度更新较大的权重(由于它们具有较小的梯度)。

3.3 逐像素归一化

逐像素归一化 (Pixelwise normalization) 是一种在图像生成任务中常用的技术,旨在提高生成模型的稳定性和样本质量。与传统的批归一化不同,批归一化是对整个批数据进行归一化处理,而逐像素归一化则是将每个像素独立地进行归一化。
在传统的生成模型中,生成器网络通常接收一个随机噪声向量作为输入,并生成一张完整的图像。然而,由于每个像素都是独立的,它们具有不同的分布和范围。这导致生成器在训练过程中可能会过度关注某些像素,而忽略其他像素的贡献,导致生成图像出现不均匀的色彩分布或噪点。
为了解决这个问题,逐像素归一化将每个像素独立地进行归一化处理,使得图像在各个像素上具有相似的分布。具体而言,对于每个像素,逐像素归一化计算该像素在所有样本中的均值和标准差,并将像素的原始值减去均值,然后除以标准差。这样做可以将每个像素的值缩放到接近零均值和单位方差的范围内,使得生成器更容易学习到图像的结构和细节。
逐像素归一化增加了生成器对每个像素的敏感性,并减少了样本之间的差异。这有助于生成器更好地捕捉图像的局部细节和全局结构,提高生成图像的质量和真实度。在逐像素归一化层并不存在可训练的权重。

4. 图像生成

除了 CelebA 数据集外,ProGAN 还是用大规模场景理解 (Large-scale Scene Understanding LSUN) 数据集的图像进行训练,生成的结果样本如下所示,这充分证明了 ProGAN 在图像生成方面的强大性能,并为 StyleGANStyleGAN2 等模型奠定了基础。

生成结果

小结

本节中,详细介绍了 ProGAN 模型的基本架构与训练流程。ProGAN 中首次提出了渐进训练概念,首先在低分辨率图像上训练生成器和判别器,然后在整个训练过程中逐渐增加网络层数以提高分辨率。

系列链接

AIGC实战——生成模型简介
AIGC实战——深度学习 (Deep Learning, DL)
AIGC实战——卷积神经网络(Convolutional Neural Network, CNN)
AIGC实战——自编码器(Autoencoder)
AIGC实战——变分自编码器(Variational Autoencoder, VAE)
AIGC实战——使用变分自编码器生成面部图像
AIGC实战——生成对抗网络(Generative Adversarial Network, GAN)
AIGC实战——WGAN(Wasserstein GAN)
AIGC实战——条件生成对抗网络(Conditional Generative Adversarial Net, CGAN)
AIGC实战——自回归模型(Autoregressive Model)
AIGC实战——改进循环神经网络
AIGC实战——像素卷积神经网络(PixelCNN)
AIGC实战——归一化流模型(Normalizing Flow Model)
AIGC实战——能量模型(Energy-Based Model)
AIGC实战——扩散模型(Diffusion Model)
AIGC实战——GPT(Generative Pre-trained Transformer)
AIGC实战——Transformer模型

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

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

相关文章

真实的招生办对话邮件及美国高校官网更新的反 AI 政策

这两年 ChatGPT 的热度水涨船高,其编写功能强大,且具备强大的信息整合效果,所以呈现的内容在一定程度上具备可读性。 那么,美国留学文书可以用 ChatGPT 写吗?使用是否有风险?外网博主 Kushi Uppu 在这个申…

基于卷积神经网络的天气识别系统(pytorch框架)【python源码+UI界面+前端界面+功能源码详解】

功能演示: 天气识别系统,vgg16,mobilenet卷积神经网络(pytorch框架)_哔哩哔哩_bilibili (一)简介 基于卷积神经网络的天气识别系统是在pytorch框架下实现的,系统中有两个模型可选…

vue+elementUI实现表格组件的封装

效果图&#xff1a; 在父组件使用表格组件 <table-listref"table":stripe"true":loading"loading":set-table-h"slotProps.setMainCardBodyH":table-data"tableData":columns"columns.tableList || []":ra…

基于Springboot的Java学习平台

采用技术 基于Springbootjava学习平台的设计与实现~ 开发语言&#xff1a;Java 数据库&#xff1a;MySQL 技术&#xff1a;SpringBootMyBatis 工具&#xff1a;IDEA/Ecilpse、Navicat、Maven 页面展示效果 系统功能模块 后台管理 用户注册 课程信息 作业信息 资料信息…

电工技术学习笔记——正弦交流电路

一、正弦交流电路 1. 正弦量的向量表示法 向量表示方法&#xff1a;正弦交流电路中&#xff0c;相量表示法是一种常用的方法&#xff0c;用于描述电压、电流及其相位关系。相量表示法将正弦交流信号表示为复数&#xff0c;通过复数的运算来描述电路中各种参数的相互关系 …

java中的正则表达式和异常

正则表达式&#xff1a; 作用一&#xff1a;用来校验数据格式是否合法 作用二&#xff1a;在文本中查找满足要求的内容 不用正则表达式&#xff1a;检验QQ号是否合法&#xff0c;要求全部是数字&#xff0c;长度在6-20&#xff0c;不能以0开头 public class test {public stat…

【Linux实践室】Linux高级用户管理实战指南:创建与删除用户组操作详解

&#x1f308;个人主页&#xff1a;聆风吟_ &#x1f525;系列专栏&#xff1a;Linux实践室、网络奇遇记 &#x1f516;少年有梦不应止于心动&#xff0c;更要付诸行动。 文章目录 一. ⛳️任务描述二. ⛳️相关知识2.1 &#x1f514;Linux创建用户组命令2.1.1 知识点讲解2.1.2…

亲手开发全国海域潮汐表查询微信小程序详情教程及代码

最近在做一个全国海域潮汐表查询&#xff0c;可以为赶海钓鱼爱好者提供涨潮退潮时间表及潮高信息。 下面教大家怎么做一个这样的小程序。 主要功能&#xff0c;根据IP定位地理位置&#xff0c;自动查询出省份或城市的港口&#xff0c;进入后预测7天内港口潮汐表查询。 步骤&…

全坚固笔记本丨工业笔记本丨三防笔记本相较于普通笔记本有哪些优势?

三防笔记本和普通笔记本在设计和性能方面存在显著差异&#xff0c;三防笔记本相较于普通笔记本具备以下优势&#xff1a; 三防笔记本通常采用耐磨、耐摔的材料&#xff0c;并具有坚固的外壳设计&#xff0c;能够承受恶劣环境和意外碰撞&#xff0c;有效保护内部组件不受损坏。相…

【Linux】进程初步理解

个人主页 &#xff1a; zxctscl 如有转载请先通知 文章目录 1. 冯诺依曼体系结构1.1 认识冯诺依曼体系结构1.2 存储金字塔 2. 操作系统2.1 概念2.2 结构2.3 操作系统的管理 3. 进程3.1 进程描述3.2 Linux下的PCB 4. task_struct本身内部属性4.1 启动4.2 进程的创建方式4.2.1 父…

C/C++预处理过程

目录 前言&#xff1a; 1. 预定义符号 2. #define定义常量 3. #define定义宏 4. 带有副作用的宏参数 5. 宏替换的规则 6. 宏和函数的对比 7. #和## 8. 命名约定 9. #undef 10. 命令行定义 11. 条件编译 12. 头文件的包含 13. 其他预处理指令 总结&#x…

谷歌在生成式人工智能领域的挑战与机遇:内部纷争与市场压力下的战略调整

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗&#xff1f;订阅我们的简报&#xff0c;深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同&#xff0c;从行业内部的深度分析和实用指南中受益。不要错过这个机会&#xff0c;成为AI领…

nest获取传入接口的参数

代码 Query 可接收接口路径中传入的参数 Body 可接收body中传入的参数 Headers 可接收Headers中传入的参数 import { Controller, Post, Get, Body, Query, Headers } from nestjs/common;// 定义getList参数类型 export class ListDto {readonly page: number;readonly page…

keycloak - 鉴权VUE

目录 一、前言 1、背景 2、实验版本 二、开始干活 1、keycloak配置 a、创建领域(realms) b、创建客户端 c、创建用户、角色 2、vue代码 a、依赖 b、main.js 三、未解决的问题 目录 一、前言 1、背景 2、实验版本 二、开始干活 1、keycloak配置 a、创建领域(r…

SQL Server详细安装使用教程

1.安装环境 现阶段基本不用SQL Server数据库了&#xff0c;看到有这样的分析话题&#xff0c;就把多年前的存货发一下&#xff0c;大家也可以讨论看看&#xff0c;思路上希望还有价值。 SQL Server 2008 R2有32位版本和64位版本&#xff0c;32位版本可以安装在Windows XP及以上…

PyCharm使用指南(个性化设置、开发必备插件、常用快捷键)

&#x1f947;作者简介&#xff1a;CSDN内容合伙人、新星计划第三季Python赛道Top1 &#x1f525;本文已收录于Python系列专栏&#xff1a; 零基础学Python &#x1f4ac;订阅专栏后可私信博主进入Python学习交流群&#xff0c;进群可领取Python视频教程以及Python相关电子书合…

如何在Python中将HTML实体代码转换为文本

在处理HTML数据时&#xff0c;有时会遇到HTML实体代码&#xff0c;这些代码是为了在HTML中表示特殊字符而使用的。例如&#xff0c;<表示小于符号(<)&#xff0c;>表示大于符号(>)&#xff0c;&表示和符号(&)等等。那么当我们在实际操作中可能会遇到下面的…

ebpf+perfetto实现调度延迟记录与展示

1.背景 需要分析生产环境的调度问题,如线程的调度延迟有多少,在哪些时间点延迟比较明显,影响其调度的主要原因是什么?其次,我们希望可以比较直观的展示调度延迟情况。最好能对接perfetto的UI和后处理,因为perfetto已经用于分析比较多的性能数据,可以和调度数据进行整合.我们…

吴恩达:AI 智能体工作流

热门文章推荐&#xff1a; &#xff08;1&#xff09;《为什么很多人工作 3 年 却只有 1 年经验&#xff1f;》&#xff08;2&#xff09;《一文掌握大模型提示词技巧&#xff1a;从战略到战术巧》&#xff08;3&#xff09;《AI 时代&#xff0c;程序员的出路在何方&#xff1…

RGB三通道和灰度值的理解

本文都是来自于chatGPT的回答!!! 目录 Q1:像素具有什么属性?Q2:图像的色彩是怎么实现的?Q3:灰度值和颜色值是一个概念吗?Q4:是不是像素具有灰度值&#xff0c;也有三个颜色分量RGB&#xff1f;Q5:灰度图像是没有色彩的吗&#xff1f;Q6: 彩色图像是既具有灰度值也具有RGB三…