AIGC实战——StyleGAN(Style-Based Generative Adversarial Network)

AIGC实战——StyleGAN

    • 0. 前言
    • 1. StyleGAN
      • 1.1 映射网络
      • 1.2 合成网络
      • 1.3 自适应实例归一化层
      • 1.4 风格混合
      • 1.5 随机变化
    • 2. StyleGAN 生成样本
    • 3. StyleGAN2
      • 3.1 权重调制与解调
      • 3.2 路径长度正则化
      • 3.3 非渐进式增长
    • 4. StyleGAN2 生成样本
    • 小结
    • 系列链接

0. 前言

StyleGAN (Style-Based Generative Adversarial Network) 是于 2018 年提出的一种生成对抗网络 (Generative Adversarial Network, GAN) 架构,该架构建立在 ProGAN 基础之上。实际上,StyleGANProGAN 的判别器是相同的,只有生成器发生了变化。本节中,我们将介绍 StyleGAN (Style-Based Generative Adversarial Network) 架构。

1. StyleGAN

在训练生成对抗网络 (Generative Adversarial Network, GAN) 时,通常很难将潜空间中对应于高级属性的向量分离出来,它们通常融合在一起,这意味着虽然调整潜空间中的图像可以使人物具有金色的头发,但这也可能也会无意间改变背景颜色。虽然 ProGAN 能够生成极其逼真的图像,但它也无法解耦潜空间中的特征。如果我们希望完全控制图像的风格,就需要在潜空间中对特征进行解耦。
StyleGAN 通过在不同位置将风格向量显式地注入网络来解耦潜空间的特征,包括控制高级特征(例如脸部方向)的向量和控制低级细节特征(例如头发的颜色)的向量。StyleGAN 生成器的整体架构如下图所示,接下来,我们逐步介绍此架构。

`网络架构

1.1 映射网络

映射网络 (Mapping Network) 是一个简单的前馈网络,将输入噪声 z ∈ Z z ∈ \mathcal Z zZ 转换为不同的潜空间 w ∈ W w ∈ \mathcal W wW。这使得生成器有机会将噪声输入向量分离成不同的特征元素,这些元素可以用于下游的风格生成层解码其特征。
这样做是为了将选择图像风格的过程(映射网络)与生成具有给定风格的图像的过程(合成网络)分开。

1.2 合成网络

合成网络 (Synthesis Network) 是一个生成器,可以根据映射网络提供的风格生成实际图像。风格向量 w w w 在不同的位置注入合成网络中,每次通过不同的全连接层 A i A_i Ai 注入,生成两个向量:偏置向量 y b , i y_{b,i} yb,i 和缩放向量 y s , i y_{s,i} ys,i。这些向量定义了应该在网络中的指定位置注入的特定风格,令合成网络调整特征图以将生成的图像朝指定的风格方向调整,这种调整是通过自适应实例归一化 (adaptive instance normalization, AdaIN) 层实现的。

1.3 自适应实例归一化层

自适应实例归一化 (adaptive instance normalization, AdaIN) 是一种神经网络层,根据风格偏置 y b , i y_{b,i} yb,i 和缩放 y s , i y_{s,i} ys,i 调整每个特征图 x i x_i xi 的均值和方差。这两个向量的长度与合成网络中的前一卷积层输出的通道数相同。自适应实例归一化的方程如下:
A d a I N ( x i , y ) = y x , i x i − μ ( x i ) σ ( x i ) + y b , i AdaIN(x_i,y) = y_{x,i}\frac {x_i-\mu(x_i)}{\sigma(x_i)} + y_{b,i} AdaIN(xi,y)=yx,iσ(xi)xiμ(xi)+yb,i
自适应实例归一化层确保每个层注入的风格向量仅影响该层的特征,防止风格信息跨层传播,因此潜向量 w w w 比原始向量 z z z 更具分解性。
由于合成网络基于 ProGAN 架构,因此它采用渐进训练。合成网络中较早的层(图像分辨率为 4 × 48 × 8 )的风格向量将影响比后续网络中的层(图像分辨率从 64 × 641,024 × 1,024 )更整体的特征。这意味着我们不仅可以通过潜向量 w w w 完全控制生成的图像,还可以在合成网络的不同位置切换 w w w 向量以改变图像的不同细节风格。

1.4 风格混合

风格混合 (Style mixing) 可以确保生成器在训练过程中不能利用相邻风格之间的相关性(即,在每个网络层注入的风格之间尽可能解耦)。对两个潜在向量 ( z 1 , z 2 ) (z_1,z_2) (z1,z2) 进行采样,对应于两个风格向量 ( w 1 , w 2 ) (w_1,w_2) (w1,w2),而不是仅仅只对单个潜向量 ( z z z) 进行采样。然后,在每个层上随机选择 ( w 1 w_1 w1 w 2 w_2 w2),以打破向量间可能存在的的任何相关性。

1.5 随机变化

合成器网络在每个卷积层之后添加噪声,以考虑诸如个别头发位置或面部背景之类的随机细节。同样,在不同位置注入噪声会影响图像生成不同细节。
这也意味着合成网络的初始输入可以是一个通过学习得到的常量,而不需要额外的噪声,因为在风格输入和噪声输入中已经包含了足够的随机性,能够生成具有不同变化的逼真图像。

2. StyleGAN 生成样本

StyleGAN 的图像生成效果如下图所示。

StyleGAN 生成样本

在上图中,图像 A 和图像 B 是使用两个不同的 w w w 向量 ( w A w_A wA w B w_B wB) 生成两个图像。为了生成合成图像,将图像 A w w w 向量 w A w_A wA 通过合成网络进行处理,并在某个时间步,切换为图像 B w w w 向量 w B w_B wB。如果切换发生在网络的早期(分辨率为 4 × 48 × 8 时),则图像B的整体风格(如姿势、脸型和眼镜)会传递到图像 A 上。然而,如果切换发生在网络的晚期,则只有来自图像B的细节风格之处会传递过来(如面部的颜色等细微特征),同时保留了源图像 A 的整体风格。

3. StyleGAN2

StyleGAN2 构建在 StyleGAN 架构的基础上,通过一些关键改进提高了生成图像的质量。值得注意的是,StyleGAN2 并不会受到伪影(图像中的水滴状区域)的影响,这些伪影是由 StyleGAN 中的自适应实例归一化 (adaptive instance normalization, AdaIN) 层引起的。

图像伪影

StyleGAN2 中的生成器和判别器都与 StyleGAN 有所不同,接下来,我们将探讨这两个架构之间的关键差异。

3.1 权重调制与解调

通过移除生成器中的自适应实例归一化 (adaptive instance normalization, AdaIN) 层,并将其替换为权重调制与解调 (Weight Modulation and Demodulation) 步骤,解决了图像伪影问题,如下图所示。 w w w 表示卷积层的权重,其在 StyleGAN2 的运行时由调制和解调制步骤直接更新,相比之下,StyleGANAdaIN 层在图像张量流经网络时对其进行操作。
StyleGAN 中的 AdaIN 层仅仅是一个实例归一化后加样式调制(缩放和偏移),StyleGAN2 是在运行时直接将风格调制和归一化(解调)应用于卷积层的权重,而不是应用于卷积层的输出,如下图所示。使用这一方法能够消除伪影问题,同时使用风格向量保持对图像风格的控制。

StyleGAN 与 StyleGAN2 区别

StyleGAN2 中,每个全连接层A输出一个单独的风格向量 s i s_i si,其中 i i i 表示卷积层中的输入通道的索引。然后,将该风格向量应用于卷积层的权重,如下所示:
w i , j , k ′ = s i ⋅ w i , j , k w_{i,j,k}^{\prime} = si · w_{i,j,k} wi,j,k=siwi,j,k
其中, j j j 表示网络层的输出通道索引, k k k 表示空间维度索引。
然后,我们需要对权重进行归一化,使其再次具有单位标准差,以确保训练过程的稳定性,即解调步骤:
w i , j , k ′ ′ = w i , j , k ′ ∑ i , k w i , j , k ′ 2 + ε w_{i,j,k}^{\prime\prime} = \frac {w_{i,j,k}^{\prime}} {\sqrt {{\sum_{i,k}w_{i,j,k}^{\prime }}^2+ε}} wi,j,k′′=i,kwi,j,k2+ε wi,j,k
其中, ε ε ε 是一个很小的常数值,防止除零错误。
使用权重调制与解调步骤足以防止伪影的出现,同时通过风格向量保持对生成图像的控制,并确保输出的高质量。

3.2 路径长度正则化

StyleGAN2 架构在损失函数中加入了一个额外的惩罚项,称为路径长度正则化 (Path Length Regularization)。
我们希望潜空间尽可能平滑和均匀,这样在潜空间中任何方向上的固定大小步长都会导致图像固定幅度的变化。为了实现这种特性,StyleGAN2 期望最大限度的最小化以下值,以及带有梯度惩罚的 Wasserstein 损失:
E w , y ( ∣ ∣ J w T y ∣ ∣ 2 − a ) 2 \mathbb E_{w,y} (||J_w^Ty||_2-a)^2 Ew,y(∣∣JwTy2a)2
其中, w w w 是由映射网络创建的一组风格向量, y y y 是从 N ( 0 , I ) \mathcal N(0, \mathbf I) N(0,I) 中绘制的一组噪声图像, J w = ∂ g ∂ w J_w=\frac {∂g}{∂w} Jw=wg 是生成器网络相对于风格向量的雅可比矩阵。
∣ ∣ J w T y ∣ ∣ 2 ||J_w^Ty||_2 ∣∣JwTy2 可以衡量经过雅可比矩阵给出的梯度变换后图像 y y y 的幅度。我们希望它接近常数 a a a,该常数动态计算为训练过程中 ∣ ∣ J w T y ∣ ∣ 2 ||J_w^Ty||_2 ∣∣JwTy2 的指数移动均值。
这个额外的项能够使探索潜空间更加可靠和一致。此外,为了提高效率,损失函数中的正则化项每 16 批数据仅应用一次,这种懒惰正则化的技术不会导致模型性能显著下降。

3.3 非渐进式增长

StyleGAN2 不再采用通常的渐进训练机制,而是利用生成器中的跳跃连接和判别器中的残差连接将整个网络作为一个整体进行训练,它不再需要对不同分辨率进行独立训练,也并不需要在训练过程中进行混合。StyleGAN2 中的生成器和判别器块如下图所示。

生成器与判别器块

我们希望 StyleGAN2 能够保留的关键特性是,从学习低分辨率特征开始,并随着训练的进行逐渐改进输出。实践证明了,使用以上架构能够保留这一关键特性,在训练的早期阶段,每个网络从低分辨率层的卷积权重中受益,而跳跃连接和残差连接使更高分辨率层的输出基本上没有受到影响;随着训练的进行,更高分辨率的网络层开始主导,生成器发现了能够改进图像真实性的方式,以欺骗判别器,该过程如下图所示。

非渐进式增长

4. StyleGAN2 生成样本

下图显示了 StyleGAN2 的输出示例:

生成样本

小结

StyleGAN 使用用于创建特定风格向量的映射网络,并允许在不同分辨率下注入风格的合成网络,使得模型对图像输出具有更大的控制能力。StyleGAN2 用权重调制和解调步骤代替了 StyleGAN 的自适应实例归一化,并使用如路径正则化等技术。能够在不使用渐近训练模型的情况下,仍保持分辨率逐步提升的特性。

系列链接

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模型
AIGC实战——ProGAN(Progressive Growing Generative Adversarial Network)

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

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

相关文章

Echarts柱状图多样式实现

样式一 样式二 在这里插入代码片

大语言模型开源数据集

本文目标:汇聚目前大语言模型预训练、微调、RM/RL、评测等全流程所需的常见数据集,方便大家使用,本文持续更新。文章篇幅较长,建议收藏后使用。 一、按语料类型分类 1、维基百科类 No.1 Identifying Machine-Paraphrased Plagia…

【行业认证,实力背书】NISP一级证书,你的信息安全职业通行证!

国家信息安全水平考试(NISP一级) 2024年3月考试成绩发布 通过的学员由中国信息安全测评中心颁发证书 以下是考试通过名单 PART01:什么是国家信息安全水平考试 国家信息安全水平考试(NISP)认证分为一级和二级,证书由中国信息安全测…

使用 wangeditor 解析富文本并生成目录与代码块复制功能

在 Web 开发中&#xff0c;经常需要使用富文本编辑器来编辑和展示内容。wangeditor 是一个强大的富文本编辑器&#xff0c;提供了丰富的功能和灵活的配置&#xff0c;但是官方并没有提供目录导航和代码块的复制功能&#xff0c;所以我自己搞了一个 <template><div cla…

安卓的认证测试

1 CTS CTS 是 Android 兼容性测试套件&#xff0c;用于验证设备是否符合 Android 平台的兼容性标准。它包含一系列测试用例&#xff0c;涵盖了设备的各个方面&#xff0c;如硬件功能、软件功能、API 的正确实现等。通过 CTS 测试&#xff0c;设备厂商可以确保其设备符合 Andro…

华为S5735S核心交换配置实例

以下脚本实现创建vlan2,3&#xff0c;IP划分&#xff0c;DHCP启用&#xff0c;接口划分&#xff0c;ssh,telnet,http,远程登录启用 默认用户创建admin/admin123提示首次登录需要更改用户密码S5735产品手册更多功能配置&#xff0c;移步官网参考手册配置 sysname test-Hxvlan …

Linux入门攻坚——18、SELinux、Bash脚本编程续

SELinux——Secure Enhanced Linux&#xff08;安全加强的Linux&#xff09;&#xff0c;工作于Linux内核中。 SELinux 主要作用就是最大限度地减小系统中服务进程可访问的资源&#xff08;最小权限原则&#xff09;。采用委任式存取控制&#xff0c;是在进行程序、文件等细节权…

如何在Flutter应用中配置ipa Guard进行混淆

在移动应用开发中&#xff0c;保护应用代码安全至关重要。Flutter 提供了简单易用的混淆工具&#xff0c;帮助开发者在构建 release 版本应用时有效保护代码。本文将介绍如何在 Flutter 应用中使用混淆&#xff0c;并提供了相关的操作步骤和注意事项。 &#x1f4dd; 摘要 本…

EDM营销:常见的邮件模板制作方法

在EDM邮件营销中&#xff0c;邮件模板的制作是一个关键步骤&#xff0c;邮件模板的质量直接影响到邮件的打开率、阅读率和转化率。邮件内容可能是简单的文字&#xff0c;只需要进行基本的排版&#xff1b;而有些则涉及文字、图片以及超链接等多种元素&#xff0c;这就需要借助工…

spring02:DI(依赖注入)

spring02&#xff1a;DI&#xff08;依赖注入&#xff09; 文章目录 spring02&#xff1a;DI&#xff08;依赖注入&#xff09;前言&#xff1a;一、构造器注入二、set注入&#xff1a;1. Student类&#xff1a;2. Address类&#xff1a;3. beans.xml&#xff1a;4. MyTest&…

想拥有健康体魄?学会中医气血调理秘籍!

《素问调经论》所述&#xff0c;人的生理机能主要依赖于血与气。这两者构成了我们身体生命的基石&#xff0c;其他所有生理活动都是围绕这一核心进行的。因此&#xff0c;各种健康问题&#xff0c;其根源往往可以追溯到气血的失调。 气虚会表现为畏寒怕冷&#xff0c;头晕耳鸣、…

反射(Reflection) --Java学习笔记

反射 反射就是:加载类&#xff0c;并允许以编程的方式解剖类中的各种成分(成员变量、方法、构造器等) 反射学什么? 学习获取类的信息、操作它们 反射第一步:加载类&#xff0c;获取类的字节码:Class对象获取类的构造器:Constructor对象获取类的成员变量:Field对象获取类的成…

SpringBoot集成Skywalking日志收集

在实际项目中&#xff0c;为了方便线上排查问题&#xff0c;尤其是微服务之间调用链路比较复杂的系统中&#xff0c;通过可视化日志的手段仍然是最直接也很方便的排查定位问题的手段&#xff0c;比如大家熟悉的ELK就是一种比较成熟的可视化日志展现方式&#xff0c;在skywalkin…

语音情感识别调研

语音情感识别调研 1、情绪识别综述2、语音情感识别算法3、语音特征提取4、相关项目1、用 LSTM、CNN、SVM、MLP 进行语音情感识别2、DST&#xff1a;基于Transformer的可变形语音情感识别模型3、语音情感基座模型emotion2vec4、IEEE ICME 2023论文&#xff5c;基于交互式注意力的…

康姿百德床垫官网价格公道,为你带来健康与舒适的睡眠享受

我们一生中有很长一段时间在睡眠度过&#xff0c;睡眠之于我们来说十分重要。良好的睡眠质量不仅能够帮助我们更好地恢复体力和精神&#xff0c;还能提高我们的生活质量。因此选择一款优质的床垫变得尤为重要。作为床垫行业的领导品牌&#xff0c;康姿百德床垫一直以提升人们睡…

stm32 之SPI通信协议

本文为大家介绍 SPI 通信协议的基础知识。 文章目录 前言一、SPI协议的概念二、SPI总线架构三、SPI通讯时序1. 起始&#xff0c;停止 信号2.CPOL&#xff08;时钟极性&#xff09;/CPHA&#xff08;时钟相位&#xff09; 四&#xff0c; I2C 总线 和SPI 总线比较相同点&#xf…

二叉树的前序遍历、中序遍历、后序遍历

二叉树的前序遍历、中序遍历、后序遍历 一、递归算法的三个要素二、144. 二叉树的前序遍历三、94. 二叉树的中序遍历四、145. 二叉树的后序遍历 一、递归算法的三个要素 1、确定递归函数的参数和返回值&#xff1a; 确定哪些参数是递归的过程中需要处理的&#xff0c;那么就在…

【单片机】PMS5003,PM2.5传感器数据读取处理

文章目录 传感器介绍数据处理解析pm2.5的代码帮助、问询 传感器介绍 PMS5003是一款基于激光散射原理的数字式通用颗粒物浓度传感器,可连续采集 并计算单位体积内空气中不同粒径的悬浮颗粒物个数,即颗粒物浓度分布,进而 换算成为质量浓度,并以通用数字接口形式输出。本传感器可…

LangChain-15 Manage Prompt Size 管理上下文大小,用Agent的方式询问问题,并去百科检索内容,总结后返回

背景描述 这一节内容比较复杂&#xff1a; 涉及到使用工具进行百科的检索&#xff08;有现成的插件&#xff09;有AgentExecutor来帮助我们执行后续由于上下文过大&#xff0c; 我们通过计算num_tokens&#xff0c;来控制我们的上下文 安装依赖 pip install --upgrade --qu…

SpringBoot整合RabbitMQ-应答模式

一、应答模式 RabbitMQ 中的消息应答模式主要包括两种&#xff1a;自动应答&#xff08;Automatic Acknowledgement&#xff09;和手动应答&#xff08;Manual Acknowledgement&#xff09;。&#xff08;一般交换机发送消息&#xff0c;RabbitMQ只有在接收到消费者的确认后才…