毕业设计 基于深度学习的图像修复算法 DCGAN
文章目录
-
0 简介
-
1 图像修复
-
2 生成对抗网络与图像修复
-
- 2.1 生成对抗网络简介
-
3 生成对抗网络在图像修复中的应用
-
4 基于深度卷积抗干扰网络的图像修复
-
- 4.1 关于深度卷积抗干扰网络的基础介绍
-
-
4.2 基于深度卷动抗干扰网络的图像修复技术探讨
-
5 算法实现
-
- 5.1 数据集
- 5.2 基于人脸图片数据集的图像生成模型的构建
- 5.3 实现效果
-
6 模型改进
-
5 最后
-
0 简介
今天学长向大家分享一个毕业设计项目
基于深度学习的图像修复算法 DCGAN
🧿 项目分享:见文末!
1 图像修复
图像是通过先进算法重建其损坏或丢失部分的主要恢复手段。在现实中,
这一工作仍需经验丰富的专业人员进行处理。不仅用于解决日常使用的噪声污染或
人为破坏造成的损坏图片问题,并且还可以处理图片中的小区域或瑕疵。
基于深度学习技术的应用使得图像是自动化的这一研究课题值得深入探索。
为了构建完整的图像修复模型,在原有的基础之上增加了专门针对这一过程设计的损失函数——即所谓的"图像修复代价"损失函数。在训练过程中,在进行实际的图像是重建任务之前应先迭代训练这一部分网络单元——也就是所谓的"原始生成网络"——以便能够获得能够在给定噪声情况下产生看似真实的"假样本"的能力;随后,在这一阶段的学习完成后就可以开始针对整个系统进行全面的学习过程——也就是所谓的"联合学习"阶段;具体的实现方法是在完成原始生成网络阶段之后对输入噪声进行迭代优化;这样就能得到一组能够在特定输入分布下最佳表现的参数值;最后通过将这些参数带入到后续的目标恢复网络中就可以得到最终的结果;如图所示的是这种基于自监督学习设计的自洽网络框架的具体流程图。

2 生成对抗网络与图像修复
2.1 生成对抗网络简介
生成对抗网络本质上是两个神经网络之间的对抗过程,在达到纳什均衡时实现了平衡状态。其中一个是生成器网络,在接收随机噪声输入后持续优化以产生逼真的假图像;另一个是判别器网络,则通过分析判断输入图像是否为由生成器产生的虚假图像或真实图像。在这个对抗过程中,生成器不断调整其参数以欺骗判别器并产出更接近真实数据的假图像;而判别器则不断学习以识别并区分来自不同来源的数据样本。最终双方达成动态平衡状态即为纳什均衡状态。图2.5展示了GAN网络的对抗生成原理图

展示GAN网络的工作原理图(其中随机噪声源产生的虚假图像与真实图像均作为判别器的输入,并且当判断结果错误时会对判别器施加相应的惩罚;而当判断结果正确时会对生成过程施加相应的激励)
3 生成对抗网络在图像修复上的应用
在文献[9]中应用GAN网络于图像修复时

GAN网络在图像修复中的机制是基于以下过程:首先,在这一过程中, 随机噪声通过多次迭代的过程, 在生成器的作用下产生高保真度的虚拟样本, 这些样本随后被注入到待修复图像中以补充其缺陷区域
4 深度卷积对抗网络与图像修复
4.1 深度卷积对抗网络简介
从直观上来说,DCGAN将GAN框架中的生成器和判别器模块转化为卷积神经网络架构。然而,在实验阶段中旨在加速训练收敛速度的情况下,在实际应用中发现仅仅使用标准的卷积神经网络难以满足需求。基于此观察,在理论推导的基础上对卷积神经网络的结构进行了优化调整,并在此基础上提出了相应的解决方案方案
- (1) 在判别器和生成器网络中均移除原有的池化操作,在判别器网络中被移除的池化操作改用卷积层进行替代,在生成器网络中则改用转置卷积层替代被移除的池化操作。
- (2) 判别器网络在训练过程中除了输出层均运用ReLU激活函数,在输出层部分则为了保证二元分类的需求而采用sigmoid激活函数。
- (3) 生成器网络在训练过程中除了输出层均选择修正型ReLU(LeakyReLU)作为激活函数,在输出层部分为了使输出值限定在-1到1之间,则采用了tanh激活函数。

上图为DCGAN网络的生成器。
图2.7展示了DCGAN网络中的生成模块(100维的噪声信号通过三层反卷积层转化为图像特征,并从较深较窄的特征空间转变为较宽较浅的特征空间)。
- (4) 在激活之前对每层卷积后的结果进行批归一化处理以防止模型复杂度过高导致模型过度拟合问题。
- (5) 移除所有密集(Dense)层。
4.2 深度卷积对抗网络与图像修复
可以说DCGAN网络本质上是对GAN网络的一种提升,在实际应用中表现更为出色。因此在图像修复任务中运用DCGAN所遵循的基本原理与传统的GAN方法具有高度相似性。总体而言,在训练过程中我们旨在让生成器能够产生看似真实的假图像,并通过不断优化输入参数使其能够寻找到最优解以达到最佳效果的具体相关内容将在后续章节中展开详细讨论
5 算法实现
5.1 数据集
由香港中文大学MMLAB团队创建并用于训练的人脸图像集合是Celeba数据集。其中包含了来自不同名人共202,599张的脸部图像。并对其间的关键特征进行了标注:左右眼、鼻子以及左右嘴。所使用的数据文件img_align_celeba.zip经过了裁剪与归整处理。

5.2 基于人脸图片数据集的图像生成模型的构建
依据本章所述的方法对Celeba图片数据进行图像生成模型的构建。本节将详细介绍模型的具体构建过程。
对数据具体的数据处理步骤和方法如下。

图像生成代价函数与优化器的构建
由于GAN模型中判别器的作用是通过区分真实图像(label=1)与生成图像(label=0)来优化生成网络的质量,在此过程中我们发现仅仅依靠单一的损失函数难以充分捕捉到生成样本的质量特征因此采用双重损失设计以分别从正反两方面引导生成网络向着理想的方向进化具体而言我们引入两个交叉熵损失项一个用于衡量真实图像预测值与理想输出(接近于1)之间的差异另一个则用于评估生成图像预测值与目标输出(接近于0)之间的偏差为了避免过度增强判别器的能力从而导致训练过程中的梯度消失问题我们在损失计算中加入了一个极小的平滑参数smooth并将其应用在真实图像的损失计算环节通过这种方式我们能够平衡两者的训练关系最终实现对生成器的有效优化
关键代码如下:
#真图片输出与略比1小的标签的差距
d_loss_real = tf.reduce_mean(tf.nn.sigmoid_cross_entropy_with_logits(
logits=d_logits_real, labels=tf.ones_like(d_logits_real) * (1 - smooth)))
#假图片输出与标签0的差距
d_loss_fake = tf.reduce_mean(tf.nn.sigmoid_cross_entropy_with_logits(
logits=d_logits_fake, labels=tf.zeros_like(d_model_fake)))
#两个差距之和构成判别器代价函数
d_loss = d_loss_real + d_loss_fake
生成器代价函数 方法 因为生成器想要自己构造的假图片让判别器输出1,所以生成器的构造利用交叉熵函数判断判别器输入假图片输出与1的差别。
代码 #假图片输出与标签1的差距
g_loss = tf.reduce_mean(tf.nn.sigmoid_cross_entropy_with_logits(logits=
d_logits_fake, labels=tf.ones_like(d_model_fake))
判别器优化器 方法 输入学习率learning_rate,权重衰减参数beta1,使用Adam优化器
代码 #判别器优化器
discriminator_optimizer = tf.train.AdamOptimizer(learning_rate=
learning_rate, beta1=beta1)
生成器优化器 方法 输入学习率learning_rate,权重衰减参数beta1,使用Adam优化器
代码 #生成器优化器
generator_optimizer = tf.train.AdamOptimizer(learning_rate=learning_rate, beta1=beta1)
python

参数确定
此参数是经过不断优化实验所得。
输入噪声空间的维度(z_size)为100
学习速率(learning_rate)率为等于等于等于等于等于等于等于等于等于等于等于等于于于于于于于于于于于于于于于与与与与与与与与与与与与与等于是于是于是于是于是于是于是于是于是于是于是于是于是于是于是等同于相当于相当于相当于相当于相当于相当于相当于相当于相当于相当于相当于相当于等同于等价转换后的数值即即即即即即即即即即即即是即是即是即是即是即是即是即是即是即是即是的是就是就是就是就是就是就是就是就是就是就是就是。
权重衰减系数(beta1)的比例为等同于等价转换后的数值即可转换后得到的结果。
增强对抗攻击强度(smooth)强度设置为设置成设定为调整至指定数值。
LeakyReLU网络模型中的斜率(alpha)斜率为设定值。
训练过程中的批次大小设置(batch_size)大小设置为设置成设定为调整至指定数值。
5.3 实现效果
此次模型通过依次优化判别器和接着优化生成器的方法进行图像的合成操作。通过图形化界面可以看出图像生成的具体流程。(输入是一个包含100个随机噪声的向量,并且在多次迭代运算后能够持续产出看似真实的假图像过程)

6 模型改进
尽管通过一次判别器迭代与一次生成器迭代就实现了图像的生成目标。然而,在分析图损失变化曲线图中(其中红线表示生成器的生成损失、蓝线代表判别器的判定损失),我们不难发现判断结果出现了一个趋近于零的趋势。这种现象被称作梯度消失。

为了缓解梯度消失问题,在现有框架基础上进行优化研究,在原有模型架构上增加了单个生成器的损失项,并将其纳入整体训练流程;其判别器更新频率相应降低至每一轮训练周期的一次性更新;同时新增了两次独立的生成器更新过程以进一步平衡各参数间的更新关系;实验曲线表明通过上述改进措施能够有效缓解梯度消失现象;从实验曲线可以看出梯度消失问题已得到有效缓解

通过优化后实现的图像生成过程可以从图中看到图像生成的迭代效果有所提升

完整项目与论文获取:
https://gitee.com/sinonfin/algorithm-sharing
详细设计论文

5 最后
🧿 项目分享:见文末!
