一、实验目的 |
本实验旨在探究生成对抗网络(GAN)在图像生成任务中的应用,通过对特定数据集的 训练,学习生成新图像的潜在规律和分布,达到生成全新、高质量图像的目的。实验将通过 对 GAN 模型的设计、训练和评估,验证其在实际图像生成任务中的效果和性能。 |
二.实验环境 |
1.硬件环境:高性能计算机或服务器,配置 GPU 以加速训练过程。 2.软件环境:Python 编程语言,深度学习框架 TensorFlow 或 PyTorch。 3.数据集:准备相关类别的图像数据集,如自然风景、人脸等 |
三、实验内容与步骤 |
1.数据准备:收集并预处理特定类别的图像数据集,如自然风景、人脸等,以便进行后 续的模型训练。 2.模型设计:构建生成对抗网络模型,包括生成器和判别器两部分。根据实验需求,设 计合适的网络结构和参数设置。 3.模型训练:使用训练集对 GAN 模型进行训练,通过调整网络参数和优化算法,以达 到最佳的生成效果。 4.图像生成:利用训练好的 GAN 模型,生成全新的高质量图像,并对生成的图像进行 评估和比较。 5.结果分析:通过对生成图像的质量、多样性、创新性等方面的评估,分析 GAN 模型 在图像生成任务中的性能表现 |
四、实验过程与分析 |
DCGAN: DCGAN原理 Deep Convolution Generative Adversarial Networks(深度卷积生成对抗网络) DCGAN是将CNN 与 GAN 结合,原理与GAN一样,只是将G和D换成两个卷积神经网络(CNN),DCGAN将CNN做了一些改变,为提高样本质量和收敛速度。 ·strided convolution 替代确定性的pooling(从而可以让网络自己学习downsampling(下采样) 。G 网络中使用微步幅度卷积(fractionally strided convolution) 代替 pooling 层,D 网络中使用步幅卷积(strided convolution)代替 pooling 层。 ·在 D 和 G 中均使用 batch normalization批量归一化 ·去掉 FC 层,使网络变为全卷积网络 ·G 网络中使用 ReLU 激活函数,最后一层使用 tanh激活函数 ·D 网络中所有层都使用 LeakyReLU 作为激活函数 下图为 DCGAN 中 G 的具体网络结构: 生成器的输入是一个 100 维的噪声,中间会通过 4 层卷积层,每通过一个卷 积层通道数减半,长宽扩大一倍 ,最终产生一个 64643 大小的图片输出. 构造生成器: 构造的综合步骤: (1)取一个随机噪声向量Z,通过全连接层将其重塑为7×7×256张量。 (2)使用转置卷积,将7×7×256张量转换为14×14×128张量。 (3)应用批归一化和LeakyReLU激活函数。 (4)使用转置卷积,将14×14×128张量转换为14×14×64张量。注意:宽度和高度尺寸保持不变。可以通过将Conv2DTranspose中的stride参数设置为1来实现。 (5)应用批归一化和LeakyReLU激活函数。 (6)使用转置卷积,将14×14×64张量转换为输出图像大小28×28×1。 (7)应用tanh激活函数。 构造判别器: 搭建步骤如下: (1)使用卷积层将28×28×1的输入图像转换为14×14×32的张量。 (2)应用LeakyReLU激活函数。 (3)使用卷积层将14×14×32的张量转换为7×7×64的张量。 (4)应用批归一化和LeakyReLU激活函数。 (5)使用卷积层将7×7×64的张量转换为3×3×128的张量。 (6)应用批归一化和LeakyReLU激活函数。 (7)将3×3×128张量展成大小为3×3×128=1152的向量。 (8)使用全连接层,输入sigmoid激活函数计算输入图像是否真实的概率。 训练100次: 训练1000次: 训练10000次: DCGAN代码: WGAN: 一、GAN存在的问题 1、原始的GAN训练困难。需要很小心地平衡生成器和判别器的训练程度,如果判别器过强,会导致生成器梯度消失严重,难以进化,进而大大增加训练所需时间。 2、生成器和判别器的loss无法指示进程,也就是说,我们无法通过生成器与判别器的loss来判断我们生成的图像是否到达了我们所满意的情况。只能通过显示训练图像自行感受训练程度。 3、生成样本缺乏多样性。容易产生模型崩坏,即生成的图像中有着大量的重复图像。 二、WGAN的优点所在 1、彻底解决GAN训练不稳定的问题,不再需要小心平衡生成器和判别器的训练程度。 2、基本解决了collapse mode的问题,确保了生成样本的多样性 。 3、训练过程中终于有一个像交叉熵、准确率这样的数值来指示训练的进程,这个数值越小代表GAN训练得越好,代表生成器产生的图像质量越高。 4、以上一切好处不需要精心设计的网络架构,最简单的多层全连接网络就可以做到。(DCGAN依靠的是对判别器和生成器的架构进行实验枚举,最终找到一组比较好的网络架构设置) 三、改进流程 1、判别器最后一层去掉sigmoid。sigmoid函数容易出现梯度消失的情况。 2、生成器和判别器的loss不取log 3、每次更新判别器的参数之后把它们的绝对值截断到不超过一个固定常数c 4、不要用基于动量的优化算法(包括momentum和Adam),推荐RMSProp,SGD也行 算法流程如下 WGAN代码: 训练结果: |
五、实验总结 |
DCGAN的实验总结: 本次实验旨在探索深度卷积生成对抗网络(DCGAN)在图像生成任务中的性能和效果。通过训练生成器网络和判别器网络,我们成功地使用DCGAN生成了逼真的图像样本。以下是我们对实验结果的总结和分析:
通过本次实验,我们对DCGAN的图像生成能力有了更深入的了解,并明确了其优点和局限性。这为未来在图像生成领域的研究和应用提供了有力的支持和指导。 WGAN的实验总结: 本次实验旨在探索Wasserstein生成对抗网络(WGAN)在图像生成任务中的性能和效果。通过使用Wasserstein距离作为损失函数,我们成功地训练了一个稳定的生成器网络,生成了高质量的图像样本。以下是我们对实验结果的总结和分析:
|
03-31
2564
![](https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png)
07-28
874
![](https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png)
09-26
1968
![](https://csdnimg.cn/release/blogv2/dist/pc/img/readCountWhite.png)
“相关推荐”对你有帮助么?
-
非常没帮助
-
没帮助
-
一般
-
有帮助
-
非常有帮助
提交