毕业设计项目 基于深度学习的图像修复算法 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 生成对抗网络简介生成对抗网络其实两个网络互相博弈最终达到纳什均衡。这两个网络一个是生成器网络它的目标接受随机噪声不断训练生成假图片为了方便叙述把生成假图片的函数记作G(z)。另一个网络是判别器网络该网络负责判断输入的图片是由G(z)生成的假图片还是原图如果是原图的会输出1如果是假图片输出0.这两个网络的博弈过程具体说就是生成器网络输入随机噪声后不断生成足够接近真实图片的假图片去欺骗判别器网络而判别器网络就是要把生成器网络生成的假图片判断出来这样两者互相博弈最终到达纳什均衡。图2.5是GAN网络的对抗生成原理图。上图 GAN网络生成图片原理图 输入随机噪声生成器生成的假图片以及真图片又作为判别器的输入判别器判别错误惩罚判别器判别正确惩罚生成器3 生成对抗网络在图像修复上的应用把GAN网络应用于图像修复[9]时首先不考虑的是使用破损的不完整图像进行修复而是采用完整的原图进行GAN网络训练图像生成模型。首先随机输入一些噪声使用GAN模型的生成器与判别器互相博弈使生成器能有产生接近原图的假图片的能力。但是此时的模型还不足够生成最佳的假图片进行图像修复因为该假图片的输入的概率分布不一定与待修复图片的概率分布一致所以对假图片的输入噪声进行迭代更新直到训练后输入的概率分布与待修复图片一致即可提取由生成器生成的假图片和破损原图一样大一样位置的破损块利用破损块与待修复图做简单的通道拼接之后即可完成图像修复工作。图2.6即为使用GAN网络进行图像修复的原理图。GAN网络进行图像修复的原理 (随机噪声经过生成器多次迭代后提取生成后假图片的部分填充到待修复图)4 深度卷积对抗网络与图像修复4.1 深度卷积对抗网络简介DCGAN网络简单来理解就是把GAN网络框架的生成器和判别器用卷积神经网络实现。但是在进行实验时为了提高训练收敛的速度DCGAN对卷积网络的结构进行了一些修正这些修正如下(1) 取消卷积后的池化层在判别器网络中取消的池化层改用卷积层在生成器网络中取消的池化层改用转置卷积层。(2) 对判别器网络训练时除了输出层外都采用relu函数进行激活。输出层为保证输出为两个输出采用sigmoid函数。(3) 对生成器网络训练时除了输出层外都采用修正的ReLU函数LeakyReLU函数进行激活。输出层为保证输出在-1到1之间采用tanh激活。上图为DCGAN网络的生成器。图2.7 DCGAN网络的生成器 (100维噪声经过三层转置卷积层图像由窄深变为宽浅)(4) 卷积后每一层在激活前都使用batch_normalization归一化避免参数过大出现过拟合现象。(5) 取消密集dense层。4.2 深度卷积对抗网络与图像修复DCGAN网络实际是GAN网络的升级所以使用DCGAN网络进行图像修复的原理与GAN网络相似。总的来说就是训练生成器具备生成假图片的能力然后不断调整输入使之能找到最佳假图片。关于原理细节和实验细节将在第三四章详细介绍。5 算法实现5.1 数据集Celeba数据集最初是由The Chinese University of Hong Kong的MMLAB收集的用来训练的人脸图片集该人脸图片集包含202,599张各种名人的脸部图像并对人脸的5个标志眼睛的左边与右边鼻子嘴巴的左边与右边进行标记本文采用的数据文件img_align_celeba.zip为所有脸部图像进行了裁剪和对齐的数据集文件。5.2 基于人脸图片数据集的图像生成模型的构建下面按照本章描写的步骤对Celeba图片进行图像生成模型的构建。本部分将会详细介绍模型的形成。(1)Celeba图片数据的处理①使用scipy的库函数对Celeba图片集进行裁剪[shape64643]。②首先从数据集中提取样本集。③对数据集进行处理。对数据具体的数据处理步骤和方法如下。图像生成代价函数与优化器的构建判别器代价函数 方法 因为判别器想要输入真图片输出1想要输入假图片输出0所以需要两个代价函数一个利用交叉熵函数判断输入真图片输出与1的差别另一个利用交叉熵函数判断输入假图片输出与0的差别但是为了防止判别效果太好,导致梯度消失,所以添加很小的参数smooth,输入真图片时判断真图片与1个略比1小的差别。当两个差别过大就惩罚判别器以此得到好的判别效果。关键代码如下#真图片输出与略比1小的标签的差距d_loss_realtf.reduce_mean(tf.nn.sigmoid_cross_entropy_with_logits(logitsd_logits_real,labelstf.ones_like(d_logits_real)*(1-smooth)))#假图片输出与标签0的差距d_loss_faketf.reduce_mean(tf.nn.sigmoid_cross_entropy_with_logits(logitsd_logits_fake,labelstf.zeros_like(d_model_fake)))#两个差距之和构成判别器代价函数d_lossd_loss_reald_loss_fake 生成器代价函数 方法 因为生成器想要自己构造的假图片让判别器输出1所以生成器的构造利用交叉熵函数判断判别器输入假图片输出与1的差别。 代码#假图片输出与标签1的差距g_losstf.reduce_mean(tf.nn.sigmoid_cross_entropy_with_logits(logitsd_logits_fake,labelstf.ones_like(d_model_fake))判别器优化器 方法 输入学习率learning_rate权重衰减参数beta1使用Adam优化器 代码#判别器优化器discriminator_optimizertf.train.AdamOptimizer(learning_ratelearning_rate,beta1beta1)生成器优化器 方法 输入学习率learning_rate权重衰减参数beta1使用Adam优化器 代码#生成器优化器generator_optimizertf.train.AdamOptimizer(learning_ratelearning_rate,beta1beta1)参数确定此参数是经过不断优化实验所得。参数 参数值输入噪声维度(z_size) 100学习率(learning_rate) 0.0002权重衰减率(beta1) 0.5增加对抗攻击(smooth) 0.1LeakyReLU的斜率(alpha) 0.2训练的batch的大小batch_size 128卷积核大小ksize 5*5卷积步长(stride) 2训练次数(epoch) 105.3 实现效果此次模型采用优化一次判别器再优化一次生成器的方法进行图像生成下图展示了图像生成的过程。(输入为100维随机噪声向量经过迭代不断生成假图片的过程)6 模型改进虽然使用一次判别器迭代一次生成器迭代达到图像生成的目的但是通过观察图损失变化图(红线是生成器生成损失蓝线是判别器判别损失)容易发现判别器判别损失有趋于0的现象此种现象叫做梯度消失。为了解决这种梯度消失现象本文对图像生成模型进行了改进在原有基础上增加了一次生成器损失也就是优化后的模型变为一次判别器优化迭代两次生成器迭代优化。图展示了优化后的损失变化图。很明显从图中能看出梯度消失得到了解决。展示了进行优化后的图像生成过程可以从图中看出图像生成的迭代效果也比之前有了提高完整项目与论文获取https://gitee.com/sinonfin/algorithm-sharing详细设计论文5 最后项目分享见主页任意置顶文章

相关新闻

Godot引擎调试与测试实战:从空对象引用到单元测试完整指南

Godot引擎调试与测试实战:从空对象引用到单元测试完整指南

1. 项目概述:为什么调试和测试是Godot开发者的必修课 如果你刚开始用Godot引擎,可能觉得把节点拖进场景、写几行GDScript脚本,然后点一下“运行”就能看到游戏跑起来,这感觉棒极了。但很快,你就会遇到第一个“幽灵Bug”…

2026/10/15 13:02:43 阅读更多 →
LM89远程温度传感器实战:从SMBus通信到PCB布局的完整指南

LM89远程温度传感器实战:从SMBus通信到PCB布局的完整指南

1. LM89远程温度传感器:从芯片手册到系统集成的实战指南在服务器主板、高性能计算卡或者任何对温度敏感的嵌入式系统里,你总能看到一个不起眼的8脚芯片,默默地监控着CPU或GPU的“体温”。它就是远程温度传感器,比如德州仪器&#…

2026/10/15 13:02:14 阅读更多 →
从ISDN BRI终端设计看嵌入式通信系统架构与协议栈实现

从ISDN BRI终端设计看嵌入式通信系统架构与协议栈实现

1. 项目概述:从一份90年代的应用笔记说起最近在整理一些老旧的通信技术资料时,翻出了一份1990年由美国国家半导体公司(National Semiconductor)发布的应用笔记,编号AN-664,标题是《ISDN BRI终端设备系统设计…

2026/10/15 13:47:47 阅读更多 →

最新新闻

Java工程师转Agent工程师:24周实战转型路线全解析

Java工程师转Agent工程师:24周实战转型路线全解析

最近小半年,我身边好几个写Java的朋友陆续来问同一个问题:Agent这波机会,Java工程师能不能上车?我的答案一直很直接:能,而且比想象中容易得多。关键在于别一上来就扎进模型API和各种框架的文档里&#xff0…

2026/10/16 13:30:01 阅读更多 →
生产级Jaeger部署与Trace管理:从存储选型到采样策略

生产级Jaeger部署与Trace管理:从存储选型到采样策略

微服务化之后,线上问题定位的体验跟以前完全不一样了。以前查故障,登录服务器看日志就行;现在一个请求从网关进来,要过认证、订单、支付好几个服务,中间还可能打了消息队列、查了缓存、调了外部接口。日志明明都在&…

2026/10/16 13:30:01 阅读更多 →
SparkSQL会话分析实战:10分钟登录间隔与累计流量精准计算

SparkSQL会话分析实战:10分钟登录间隔与累计流量精准计算

1. 项目概述:为什么这个需求在真实业务中高频出现且容易踩坑“SparkSQL案例——用SQL和DSL两种语法格式,求出用户登录间隔小于10分钟时一段时间内的总累计流量”,光看标题,很多人第一反应是:“又一个教学Demo&#xff…

2026/10/16 13:30:01 阅读更多 →
Codex智能体实战指南:从零搭建到应用落地的完整路径

Codex智能体实战指南:从零搭建到应用落地的完整路径

先交代一下背景,再往下讲方法论。我接触智能体开发不算早,真正系统投入是在 Codex 智能体出来之后。在此之前,我花了很多时间在传统提示词工程和单轮 API 调用上,总觉得差一口气——提示词再精巧,也只能在"单个任…

2026/10/16 13:30:01 阅读更多 →
图像修复评价指标:从PSNR到CLIP Score的分层评估体系

图像修复评价指标:从PSNR到CLIP Score的分层评估体系

简介:本资源是一份面向深度学习图像修复方向研究者与工程实践者的评价指标工具包,聚焦SSIM、PSNR、L1 Error及FID等核心量化指标的代码实现与使用参考,解决图像修复模型效果难以客观比对与优化验证的痛点,适用于算法复现、论文实验…

2026/10/16 13:30:01 阅读更多 →
Java开发必备:Google Guava核心工具库实战解析

Java开发必备:Google Guava核心工具库实战解析

聊到Java生态里的工具库,Guava始终绕不过去。这个由Google开源并持续维护的核心库,几乎已经成为很多服务端项目的“标配依赖”——哪怕你不主动引,不少框架的底层也会带上它。我最早接触Google Guava是因为项目里要封装一个本地缓存&#xff…

2026/10/16 13:28:59 阅读更多 →

日新闻

个人 AI Agent 平台接入 TaoToken:统一 Key 与 API 通道的配置大纲

个人 AI Agent 平台接入 TaoToken:统一 Key 与 API 通道的配置大纲

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 0:00:05 阅读更多 →
信号与系统频域分析作业解题指南

信号与系统频域分析作业解题指南

1. 作业背景与核心要求解析信号与系统作为电子信息类专业的核心基础课,其作业设计往往直接关联课程的核心知识框架。2026年春季第六次作业的布置,通常对应着课程进展到频域分析的关键阶段。根据常规教学进度推测,本次作业可能涉及以下核心内容…

2026/10/16 0:00:05 阅读更多 →
Django MVT实战:从零构建图书借阅系统,彻底搞懂Model-View-Template分层

Django MVT实战:从零构建图书借阅系统,彻底搞懂Model-View-Template分层

1. 从一个"四不像"的练手项目说起如果你已经看完了Django的官方教程前几章,跟着敲完了投票应用,大概会有一种"我好像会了,又好像什么都不会"的割裂感。教程里每个知识点都是拆开的——这一章讲模型,下一章讲视…

2026/10/16 0:00:05 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/15 16:18:54 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/15 19:41:51 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/15 13:48:15 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 0:14:36 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 3:49:43 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 9:49:14 阅读更多 →