diff --git a/new/gan-proj/6.md b/new/gan-proj/6.md index b3316599a906f19c90a0018859095aacd4c41190..63795eab0cd955bd09f16fa796ca30dd5451f06f 100644 --- a/new/gan-proj/6.md +++ b/new/gan-proj/6.md @@ -143,7 +143,7 @@ StackGAN 网络的主要组成部分是生成器网络和判别器网络。 在 -类似于生成器网络,判别器网络是一个深度卷积神经网络,其中包含一系列下采样卷积层。 下采样层从图像生成特征图,无论它们是真实数据分布![](img/c534d4df-c504-4ff3-83b6-61db0e52035b.png)的真实图像还是生成器网络生成的图像。 然后,我们将特征映射连接到文本嵌入。 我们使用压缩和空间复制将嵌入的文本转换为连接所需的格式。 空间压缩和复制包括一个完全连接的层,该层用于压缩嵌入到![](img/31009ecb-449c-41d6-81c4-dd1d976fb6f2.png)维输出的文本,然后通过空间复制将其转换为![](img/42f86eb5-0593-4986-8a38-397be9b66e56.png)维张量。 然后将特征图以及压缩的和空间复制的文本嵌入沿通道维级联。 最后,我们具有一个节点的完全连接层,该层用于二进制分类。 让我们看一下判别器网络的架构,如以下屏幕截图所示: +类似于生成器网络,判别器网络是一个深度卷积神经网络,其中包含一系列下采样卷积层。 下采样层从图像生成特征图,无论它们是真实数据分布`P_data`的真实图像还是生成器网络生成的图像。 然后,我们将特征映射连接到文本嵌入。 我们使用压缩和空间复制将嵌入的文本转换为连接所需的格式。 空间压缩和复制包括一个完全连接的层,该层用于压缩嵌入到`N[d]`维输出的文本,然后通过空间复制将其转换为`M[d] × M[d] × N[d]`维张量。 然后将特征图以及压缩的和空间复制的文本嵌入沿通道维级联。 最后,我们具有一个节点的完全连接层,该层用于二进制分类。 让我们看一下判别器网络的架构,如以下屏幕截图所示: ![](img/fc0175ae-38b7-42aa-99ec-1bdbe36a8edf.png) @@ -166,13 +166,13 @@ StackGAN 的第一阶段中使用了两个损失,如下所示: * 生成器损失 * 判别器损失 -判别器损失![](img/0a355bdc-0c6f-4cd3-a62e-4b46a301c9f6.png)可以表示为: +判别器损失`l[D]`可以表示为: ![](img/01fddc7c-38fb-4dc6-ac3b-3c73b448e65a.png) 公式前面的很不言自明。 它代表了判别器网络的损失函数,其中两个网络都以文本嵌入为条件。 -生成器损失![](img/b46d75ce-88c8-480a-ba3d-572b93f4c717.png)可以表示为: +生成器损失`l[G]`可以表示为: ![](img/6567c751-fa0d-4009-b4bd-b864d4ecab7c.png) @@ -186,9 +186,9 @@ StackGAN 的第一阶段中使用了两个损失,如下所示: -第二阶段 StackGAN 的主要组件是生成器网络和判别器网络。 生成器网络是编码器-解码器类型的网络。 在此阶段不使用随机噪声`z`,假设 ![](img/94999cb2-2d49-4263-b900-3deef877ccd1.png)已保留了随机性,其中![](img/94999cb2-2d49-4263-b900-3deef877ccd1.png)是生成器网络生成的图像 第一阶段 +第二阶段 StackGAN 的主要组件是生成器网络和判别器网络。 生成器网络是编码器-解码器类型的网络。 在此阶段不使用随机噪声`z`,假设`s[0]`已保留了随机性,其中`s[0]`是生成器网络生成的图像 第一阶段 -我们首先使用预训练的文本编码器生成高斯条件变量 ![](img/308050a3-9d10-4f05-9e8e-d1e4e07bbb93.png) 。 这将生成嵌入 ![](img/b7167483-2ee2-469e-af9f-278f36699c79.png) 的相同文本。 第一阶段和第二阶段条件增强具有不同的完全连接层,用于生成不同的均值和标准 偏差。 这意味着第二阶段 GAN 学会了在文本嵌入中捕获有用的信息,而这些信息被第一阶段 GAN 省略了。 +我们首先使用预训练的文本编码器生成高斯条件变量`c_hat`。 这将生成嵌入`φ[t]`的相同文本。 第一阶段和第二阶段条件增强具有不同的完全连接层,用于生成不同的均值和标准 偏差。 这意味着第二阶段 GAN 学会了在文本嵌入中捕获有用的信息,而这些信息被第一阶段 GAN 省略了。 第一阶段 GAN 生成的图像存在的问题是,它们可能缺少生动的对象部分,它们可能包含形状失真,并且它们可能会忽略对于生成逼真的图像非常重要的重要细节。 第二阶段 GAN 建立在第一阶段 GAN 的输出上。 第二阶段 GAN 取决于第一阶段 GAN 生成的低分辨率图像和文本描述。 它通过校正缺陷产生高分辨率的图像。 @@ -246,13 +246,13 @@ StackGAN 的第一阶段中使用了两个损失,如下所示: 与任何其他 GAN 相似,第二阶段 GAN 中的生成器`G`和判别器`D`也可以通过最大化判别器的损失并将生成器网络的损失最小化来训练 。 -生成器损失![](img/d0ecd579-7d64-4b7c-a9c7-666c14c0e1cc.png)可以表示为: +生成器损失`l[G]`可以表示为: ![](img/24684f0c-814c-4b33-bfe7-c177cfe19a46.png) -前面的方程式非常不言自明。 它代表了判别器网络的损失函数,其中两个网络都以文本嵌入为条件。 一个主要区别是生成器网络以![](img/2fc3c44d-59b8-4da3-b9b7-b5daabb95bb6.png)和![](img/3720bf75-1dba-477b-b833-865282482a25.png)作为输入,其中![](img/134a6916-3b21-48a7-88ee-a115d848fbe5.png)是第一阶段生成的图像,![](img/885a0848-1055-4c3b-976f-11f36d73232b.png)是 CA 变量。 +前面的方程式非常不言自明。 它代表了判别器网络的损失函数,其中两个网络都以文本嵌入为条件。 一个主要区别是生成器网络以`s[0]`和`c_hat`作为输入,其中`s[0]`是第一阶段生成的图像,`c_hat`是 CA 变量。 -判别器损失![](img/a1fce921-d434-45e3-8f15-472f02dcebc5.png)可以表示为: +判别器损失`l[D]`可以表示为: ![](img/8d494e68-1020-471d-91de-e2d6acf9552c.png) @@ -394,7 +394,7 @@ StackGAN 的 Keras 实现分为两部分:第一阶段和第二阶段。 我们 -第一阶段 StackGAN 包含生成器网络和判别器网络。 它还具有一个文本编码器网络和一个条件增强网络(CA 网络),下面将对此进行详细说明。 生成器网络获取文本条件变量(![](img/5636ece2-f10e-4485-bd3b-527ba2c14606.png))以及噪声向量(`x`)。 经过一组上采样层后,它会生成尺寸为`64x64x3`的低分辨率图像。 判别器网络拍摄此低分辨率图像,并尝试识别图像是真实的还是伪造的。 生成器网络是具有一组下采样层的网络,其后是连接,然后是分类层。 在以下各节中,我们将详细探讨 StackGAN 的架构。 +第一阶段 StackGAN 包含生成器网络和判别器网络。 它还具有一个文本编码器网络和一个条件增强网络(CA 网络),下面将对此进行详细说明。 生成器网络获取文本条件变量(`c_hat[0]`)以及噪声向量(`x`)。 经过一组上采样层后,它会生成尺寸为`64x64x3`的低分辨率图像。 判别器网络拍摄此低分辨率图像,并尝试识别图像是真实的还是伪造的。 生成器网络是具有一组下采样层的网络,其后是连接,然后是分类层。 在以下各节中,我们将详细探讨 StackGAN 的架构。 第一阶段 StackGAN 网络中使用的网络如下: @@ -434,7 +434,7 @@ from matplotlib import pyplot as plt -文本编码器网络的唯一目的是将文本描述(`t`)转换为文本嵌入(![](img/bd66dab8-77b6-42b8-bda8-3dd03f9285e8.png))。 该网络将句子编码为 1,024 维文本嵌入。 我们已经下载了预训练的字符 CNN-RNN 文本嵌入。 我们将使用它们来训练我们的网络。 +文本编码器网络的唯一目的是将文本描述(`t`)转换为文本嵌入(`φ[t]`)。 该网络将句子编码为 1,024 维文本嵌入。 我们已经下载了预训练的字符 CNN-RNN 文本嵌入。 我们将使用它们来训练我们的网络。 @@ -444,7 +444,7 @@ from matplotlib import pyplot as plt -CA 网络的目的是将文本嵌入向量(![](img/de8c23e2-ee05-44ea-876e-adfe515c5b5b.png))转换为条件潜在变量(![](img/69b142c0-77c5-4a16-b698-d93249bc30c4.png))。 在 CA 网络中,文本嵌入向量穿过具有非线性的完全连接层,从而产生均值![](img/39b79c42-5da0-4eb5-92c4-146d419591ac.png)和对角协方差矩阵![](img/1032f91a-c420-45d3-846b-6d2f4add232c.png)。 +CA 网络的目的是将文本嵌入向量(`φ[t]`)转换为条件潜在变量(`c_hat[0]`)。 在 CA 网络中,文本嵌入向量穿过具有非线性的完全连接层,从而产生均值`μ(φ[t])`和对角协方差矩阵`∑(φ[t])`。 以下代码显示了如何创建 CA 网络: @@ -849,7 +849,7 @@ def build_adversarial_model(gen_model, dis_model): -第二阶段 StackGAN 与第一阶段 StackGAN 略有不同。 生成器模型的输入是条件变量(![](img/8bd40bf0-5919-4004-920c-9abffb3fe400.png))和生成器网络在第一阶段中生成的低分辨率图像。 +第二阶段 StackGAN 与第一阶段 StackGAN 略有不同。 生成器模型的输入是条件变量(`c_hat[0]`)和生成器网络在第一阶段中生成的低分辨率图像。 它包含五个组成部分: