DC-GAN

2025年3月17日 | 阅读 8 分钟

DCGAN (深度卷积生成对抗网络) 是一种成熟且有效的 GAN 网络架构。它主要由卷积层组成,没有最大池化或完全连接层。它分别使用卷积步长和转置卷积进行下采样和上采样。

生成器的设计是 GAN 最引人入胜的方面之一。生成器网络可以将随机噪声映射到图像中,使判别器无法确定哪些图像来自数据集,哪些来自生成器。

这是一个有趣的神经网络应用。神经网络通常将输入转换为二进制输出(1 或 0)、回归输出(任何实数值),甚至多个类别输出(如 MNIST 或 CIFAR-10/100)。

下图是生成器的网络设计。

DC-GAN

这是在 LSUN 场景建模工作中描述的 DCGAN 生成器。该网络接受一个 100x1 的噪声向量(标记为 z),并将其转换为 64x64x3 的 G(Z) 输出。

在这种架构中,第一层传播随机噪声的方式确实很有趣。网络从 100x1 扩展到 1024x4x4!这一层被称为“投影和重塑”。

现在我们将尝试借助 DC-GAN 生成狗的图像。

代码

导入库

加载数据

在这里我们将加载数据及其注释。

预处理

在这里我们将尝试预处理数据集,以便我们将尝试在这些帧中查看数据集中的一些图像。

输出

DC-GAN
DC-GAN

我们有许多品种的狗。

输出

DC-GAN

发电机

现在我们将构建模型的生成器部分。它从一个潜在向量开始,并通过一系列转置卷积层逐渐对其进行上采样,增加空间维度同时减少通道计数。最后,它创建一个应该看起来与集合中的真实照片完全相同的人工照片。该生成器的目标是生成可行的虚假图像,这些图像可能会欺骗 GAN 中的判别器。

判别器

它检查输入图像的真实性,区分真实图像和人工生成图像。此功能由许多带有批量归一化和 Leaky ReLU 激活的卷积层组成,逐步处理输入快照,下采样它们的维度,同时增加深度。它以一个完全连接的层结束,该层输出“logits”,表示判别器的选择,并通过 sigmoid 激活函数计算最终输出,该函数生成指示图像真实性的概率分数。总而言之,GAN 中的“判别器”通过评估图像的有效性,在生成器和判别器网络之间的对抗性训练中发挥重要作用。

损失和优化器

此函数计算 GAN 中的判别器和生成器损失。它通过使用生成器生成假图像并测量判别器在真实图像和假图像上的性能来计算对抗性损失。损失是根据预期概率和真实标签(真实或虚假)之间的差异计算的。

此函数描述了生成器和判别器模型的优化方法。它隔离每个模型的训练变量,处理批量归一化层更新,并对判别器和生成器使用 Adam 优化器,并采用不同的学习率。

此函数为真实图像、噪声向量 (z) 以及判别器和生成器网络的学习率生成占位符张量。在训练期间,这些占位符充当信息访问位置。

用途

这些实用函数有助于训练和评估 GAN 的许多方面,包括生成和可视化图像、总结损失以及准备批次数据进行训练。






训练

在这里,该函数在多个 epoch 中反复处理判别器和生成器网络的优化,同时提供可视化和摘要来监控训练进度。具体的使用案例和需求可能需要对超参数和模型设计进行更改。

超参数

训练循环

输出

DC-GAN
DC-GAN
DC-GAN

所有 epoch 之后

DC-GAN
DC-GAN
DC-GAN

训练时间 = 4096.158711194992

生成的图像

我们将查看生成的图像。

输出

DC-GAN

DC-GAN 很好地尝试生成图像,如果训练得好,它就可以轻松地生成更精确和更棒的图像。

生成的图像信息

在这里,我们将查看我们之前生成的图像信息。

输出

DC-GAN

考虑到图像的尺寸,很明显 DC-GAN 生成的图像是正方形格式的。


下一主题StyleGAN