尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
毕设开源 深度学习照片上色与动态化
文章目录0 前言1 项目运行效果2 课题背景3 GAN(生成对抗网络)3.1 简介3.2 基本原理4 DeOldify 框架5 First Order Motion Model6 最后0 前言这两年开始毕业设计和毕业答辩的要求和难度不断提升传统的毕设题目缺少创新和亮点往往达不到毕业答辩的要求这两年不断有学弟学妹告诉学长自己做的项目系统达不到老师的要求。并且很难找到完整的毕设参考学习资料。为了大家能够顺利以及最少的精力通过毕设学长分享优质毕业设计项目提供大家参考学习今天要分享的是毕业设计 深度学习照片上色与动态化学长这里给一个题目综合评分(每项满分5分)难度系数3分工作量3分创新点4分项目分享见主页任意置顶文章1 项目运行效果视频效果毕业设计 深度学习照片上色与动态化2 课题背景随着科技的发展现在已经没有朋友会再去买胶卷拍照片了。不过对于很多70、80后来说他们家中还保存着大量之前拍摄的胶卷和老照片。这些老照片是一个时代的记忆记录着我们生活中的点点滴滴。不过时代发展了这些老照片的保存和浏览也应该与时俱进。在本期文章中我们就介绍如何将这些老照片转化为数字照片更方便大家在电脑或者手机上浏览、保存和回忆。本项目中我们利用生成对抗网络-GAN和图像动作驱动-First Order Motion Model来给老照片上色并使它动起来。3 GAN(生成对抗网络)3.1 简介**GANsGenerative adversarial networks对抗式生成网络**可以把这三个单词拆分理解。Generative生成式模型Adversarial采取对抗的策略Networks网络不一定是深度学习模型通过框架中(至少)两个模块生成模型(Generative Model)和判别模型(Discriminative Model)的互相博弈学习产生相当好的输出。原始 GAN 理论中并不要求 G 和 D 都是神经网络只需要是能拟合相应生成和判别的函数即可。但实用中一般均使用深度神经网络作为 G 和 D 。3.2 基本原理这里介绍的是原生的GAN算法虽然有一些不足但提供了一种生成对抗性的新思路。放心我这篇博文不会堆一大堆公式只会提供一种理解思路。理解GAN的两大护法G和D生成对抗网络GAN由2个重要的部分构成生成器(Generator)通过机器生成数据大部分情况下是图像负责凭空捏造数据出来目的是“骗过”判别器判别器(Discriminator)判断这张图像是真实的还是机器生成的负责判断数据是不是真数据目的是找出生成器做的“假数据”这样可以简单的看作是两个网络的博弈过程。在最原始的GAN论文里面G和D都是两个多层感知机网络。首先注意一点GAN操作的数据不一定非得是图像数据不过为了更方便解释用图像数据为例解释以下GANtensorflow实现importtensorflowastfdefload_dataset(mnist_size,mnist_batch_size,cifar_size,cifar_batch_size,): load mnist and cifar10 dataset to shuffle. Args: mnist_size: mnist dataset size. mnist_batch_size: every train dataset of mnist. cifar_size: cifar10 dataset size. cifar_batch_size: every train dataset of cifar10. Returns: mnist dataset, cifar10 dataset # load mnist data(mnist_train_images,mnist_train_labels),(_,_)tf.keras.datasets.mnist.load_data()# load cifar10 data(cifar_train_images,cifar_train_labels),(_,_)tf.keras.datasets.cifar10.load_data()mnist_train_imagesmnist_train_images.reshape(mnist_train_images.shape[0],28,28,1).astype(float32)mnist_train_images(mnist_train_images-127.5)/127.5# Normalize the images to [-1, 1]cifar_train_imagescifar_train_images.reshape(cifar_train_images.shape[0],32,32,3).astype(float32)cifar_train_images(cifar_train_images-127.5)/127.5# Normalize the images to [-1, 1]# Batch and shuffle the datamnist_train_datasettf.data.Dataset.from_tensor_slices(mnist_train_images)mnist_train_datasetmnist_train_dataset.shuffle(mnist_size).batch(mnist_batch_size)cifar_train_datasettf.data.Dataset.from_tensor_slices(cifar_train_images)cifar_train_datasetcifar_train_dataset.shuffle(cifar_size).batch(cifar_batch_size)returnmnist_train_dataset,cifar_train_dataset4 DeOldify 框架本项目中用到的上色就用到了DeOldify 框架DeOldify 创建的目的是为了给黑白照片上色但让人惊艳的是它除了能处理图片外也可以处理视频DeOldify 的核心网络框架是 GAN 对比以前上色技术有以下几个特点1老照片中的伪影在上色过程中会被消除2老照片的人脸部位来说处理后皮肤会变得更光滑3呈现更详细、真实的渲染效果实现过程准备好权重文件相关代码#部分代码defdeoldify(self,img,render_factor35): 风格化 # 转换通道imgcv2.cvtColor(img,cv2.COLOR_BGR2RGB)pil_imgImage.fromarray(img)# 渲染彩图color_imgself.deoldify_model.filter(pil_img,pil_img,render_factorrender_factor,post_processTrue)color_imgnp.asarray(color_img)color_imgcv2.cvtColor(color_img,cv2.COLOR_RGB2BGR)# 转为numpy图print(deoldify 转换成功)returnnp.asarray(color_img)实现效果5 First Order Motion ModelFirst Order Motion model的任务是image animation给定一张源图片给定一个驱动视频生成一段视频其中主角是源图片动作是驱动视频中的动作源图像通常包含一个主体驱动视频包含一系列动作。通俗来说First Order Motion能够将给定的驱动视频中的人物A的动作迁移至给定的源图片中的人物B身上生成全新的以人物B的脸演绎人物A的表情的视频。以人脸表情迁移为例给定一个源人物给定一个驱动视频可以生成一个视频其中主体是源人物视频中源人物的表情是由驱动视频中的表情所确定的。通常情况下我们需要对源人物进行人脸关键点标注、进行表情迁移的模型训练。基本框架first-order 的算法框架如下图所示主要包括三个部分的网络keyporint detector 检测图像中的关键点以及每个关键点对应的jaccobian矩阵dense motion network 基于前面的结果生成最终的transform map 以及occulation map使用transform map 和 occulation map 对编码后的source feature 做变换和mask处理再decoder 生成出最终的结果。本项目相关代码defFOM_video(self,driving_video,source_image,result_video):# 读取图片source_imageimageio.imread(source_image)# 读取视频readerimageio.get_reader(driving_video)fpsreader.get_meta_data()[fps]driving_video[]try:foriminreader:driving_video.append(im)exceptRuntimeError:passreader.close()# 预处理source_imageresize(source_image,(255,255))[...,:3]driving_video[resize(frame,(255,255))[...,:3]forframeindriving_video]# 推理predictionsself.make_animation(source_image,driving_video,self.fom_generator,self.fom_kp_detector,relativeTrue,adapt_movement_scaleTrue,cpuTrue)# 保存imageio.mimsave(result_video,[img_as_ubyte(frame)forframeinpredictions],fpsfps)driving_video./images/test2.mp4source_image./images/out2.jpgresult_video./putput/result.mp4# 图像动起来gan.FOM_video(driving_video,source_image,result_video)运行如下命令实现表情动作迁移。其中各参数的具体使用说明如下driving_video: 驱动视频视频中人物的表情动作作为待迁移的对象。本项目中驱动视频路径为 “work/driving_video.MOV”大家可以上传自己准备的视频更换driving_video参数对应的路径;source_image: 原始图片视频中人物的表情动作将迁移到该原始图片中的人物上。这里原始图片路径使用 “work/image.jpeg”大家可以使用自己准备的图片更换source_image参数对应的路径;relative: 指示程序中使用视频和图片中人物关键点的相对坐标还是绝对坐标建议使用相对坐标若使用绝对坐标会导致迁移后人物扭曲变形;adapt_scale: 根据关键点凸包自适应运动尺度;ratio: 针对多人脸将框出来的人脸贴回原图时的区域占宽高的比例默认为0.4范围为【0.40.5】命令运行成功后会在ouput文件夹生成名为result.mp4的视频文件该文件即为动作迁移后的视频。实现效果若使用绝对坐标会导致迁移后人物扭曲变形;adapt_scale: 根据关键点凸包自适应运动尺度;ratio: 针对多人脸将框出来的人脸贴回原图时的区域占宽高的比例默认为0.4范围为【0.40.5】命令运行成功后会在ouput文件夹生成名为result.mp4的视频文件该文件即为动作迁移后的视频。实现效果篇幅有限更多详细设计见设计论文6 最后项目包含内容项目分享见主页任意置顶文章
RELATED

相关推荐

纯C++实现ini文件操作

纯C++实现ini文件操作

纯C实现ini文件操作(可以自从此处下载 https://download.csdn.net/download/huangjiazhi_/93079858&#xff09; 头文件 #ifndef INIRW_H #define INIRW_H#include <string> #include <map> #include <vector>/*** brief INI配置文件读写类* 特性&#xff…

📅 2026/11/3 21:09:50
Docker 容器化本地部署 Claude Code 完整硬核教程|隔离沙盒 + 国产模型直连 + 持久化 Skill

Docker 容器化本地部署 Claude Code 完整硬核教程|隔离沙盒 + 国产模型直连 + 持久化 Skill

国内开发者使用 Claude Code 长期面临时区风控、账号封禁、环境污染、会话丢失四大痛点。本文完整落地 Docker 本地镜像部署方案&#xff0c;分官方镜像一键运行、自定义 Dockerfile 构建、docker-compose 企业持久化三套方案&#xff1b;支持 DeepSeek/GLM/ 千问国产模型直连&…

📅 2026/10/10 19:14:53
5大创新功能:TEdit如何彻底改变你的泰拉瑞亚创作体验

5大创新功能:TEdit如何彻底改变你的泰拉瑞亚创作体验

5大创新功能&#xff1a;TEdit如何彻底改变你的泰拉瑞亚创作体验 【免费下载链接】Terraria-Map-Editor TEdit - Terraria Map Editor - TEdit is a stand alone, open source map editor for Terraria. It lets you edit maps just like (almost) paint! It also lets you cha…

📅 2026/10/2 0:13:40
MORE NEWS

更多资讯

📰

10. 软件设计架构-微服务-部署和架构模式

文章目录前言微服务部署微服务多实例部署微服务容器化部署微服务Serverless部署微服务容器编排部署微服务架构模式微服务聚合模式微服务共享模式微服务代理模式微服务异步消息模式前言 微服务部署 微服务部署是微服务非常重要的环节&#xff0c;下面详解4种常见的微服务部署案例…

📰

本地RAG知识库问答系统实战:小白也能轻松上手大模型,含收藏功能!

本文介绍一个可直接运行的本地RAG知识库问答系统&#xff0c;使用Python、Streamlit构建Web页面&#xff0c;整合LangChain文本切分、ChromaDB向量库及Ollama本地大模型。系统支持TXT、Markdown、PDF文档&#xff0c;切分向量化后存入库&#xff0c;用户提问时检索Top-K片段并生…

📰

企业线索数据中个体工商户的识别和分层跟进策略

企业线索数据中个体工商户占比高&#xff0c;下面从产品匹配度出发&#xff0c;拆解识别、筛选和分层跟进的方法。为什么搜出来的名单里&#xff0c;个体工商户这么多&#xff1f;▌个体工商户占全国经营主体的三分之二左右&#xff0c;按行业和地区一搜&#xff0c;名单里个体…

📰

Okbiye 一站式学术工作台:覆盖论文全周期的全能型论文辅助工具

引言 写学位论文&#xff0c;整个流程环环相扣&#xff1a;开题定方向、研读文献、设计问卷、绘制模型、正文润色、格式调整、盲审返修、准备答辩。很多毕业生会分开使用多款工具&#xff0c;读文献一个、绘图一个、降重另换一个&#xff0c;极易出现变量名称前后不一、模型图…

📰

2026 Java 大模型框架选型终极指南:Spring AI vs LangChain4j vs AgentScope Java 深度横评(万字 + 架构图 + 决策树)

2026 Java 大模型框架选型终极指南&#xff1a;Spring AI vs LangChain4j vs AgentScope Java 深度横评&#xff08;万字 架构图 决策树&#xff09; 一句话结论&#xff08;赶时间的架构师只看这一句&#xff09;&#xff1a;Spring AI 和 LangChain4j 是"LLM 应用框架…

📰

LVGL 面试实战:对象模型及继承机制

一、场景引入在 LVGL 项目开发中&#xff0c;你是否遇到过自定义控件无法复用基础控件的事件回调、修改样式不生效、或者调用通用控件 API 触发异常的问题&#xff1f;这些问题 90% 都是对 LVGL 对象模型和继承机制理解不到位导致的。该考点是 LVGL 二次开发、自定义控件的核心…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬