AI老照片上色-DeOldify

 🏡 个人主页:IT贫道-CSDN博客

 🚩 私聊博主:私聊博主加WX好友,获取更多资料哦~

 🔔 博主个人B栈地址:豹哥教你学编程的个人空间-豹哥教你学编程个人主页-哔哩哔哩视频


目录

1. 老照片上色原理

2. 老照片上色环境准备

2.1 下载DeOldify项目

2.2 下载权重文件

2.3 安装依赖的python包

3. 给图片上色

4. 给视频上色


1. 老照片上色原理

老照片上色原理就是使用GAN生成式对抗网络,对于一些原始黑白图片及对应的彩色图像,使用GAN生成式对抗网络来实现上色。

2. 老照片上色环境准备

2.1 下载DeOldify项目

项目下载地址:https://github.com/jantic/DeOldify,下载之后解压到对应的非中文路径下,这里解压到“J:\DeOldify-master”路径。可以处理图片上色,也可以处理视频上色。DeOldfy的核心网络框架是GAN,可以对图片和视频呈现更详细、真实的渲染效果。

2.2 下载权重文件

DeOldify 是基于深度学习开发的,需要用到预训练权重,这里项目开发者已经把训练好的权重上传到网上,我们可以直接拿来使用,不需要我们再训练,本项目中用到的权重文件比较多,一共三个:

  • Artistic 权重,会使图片上色效果 更大胆一些,下载地址:

https://data.deepai.org/deoldify/ColorizeArtistic_gen.pth

  • Stable 权重,相对于 Artistic 上色效果更保守一些,下载地址:

https://www.dropbox.com/s/usf7uifrctqw9rl/ColorizeStable_gen.pth

  • Video 权重,此权重文件用来给视频上色,下载地址

https://data.deepai.org/deoldify/ColorizeVideo_gen.pth

权重文件下载完毕后,在项目根目录下创建一个models文件夹,把下载好的三个权重文件放入models文件夹内。

2.3 安装依赖的python包

首先需要安装pytorch,这里在“修复照片”中已经处理,所以不再安装,此外还需安装如下:

从https://www.lfd.uci.edu/~gohlke/pythonlibs/ 网站中下载“Bottleneck-1.3.2-cp36-cp36m-win_amd64.whl”手动安装,不然后面自动下载不下来。

​
pip install -i Simple Index fastai==1.0.51pip install -i Simple Index wandbpip install -i Simple Index tensorboardX==1.6pip install -i Simple Index ffmpegpip install -i Simple Index ffmpeg-python==0.1.17pip install -i Simple Index youtube-dl>=2019.4.17pip install -i Simple Index jupyterlabpip install -i Simple Index opencv-python>=3.3.0.10pip install -i Simple Index pillow==8.2.0​

可以直接 使用如下命令指定文件进行批量安装python依赖包:

D:\ProgramData\Anaconda3\envs\python36_oldimage\Scripts>pip install -r J:\DeOldify-master\requirements.txt

指定文件安装,这里还是手动每个安装吧,指定文件下载太慢。

​​​​​​​3. 给图片上色

from deoldify import device
from deoldify.device_id import DeviceId# choices:  CPU, GPU0...GPU7
device.set(device=DeviceId.GPU0)
from deoldify.visualize import *
import gcplt.style.use('dark_background')
# 加速训练
torch.backends.cudnn.benchmark=Trueimport warnings
warnings.filterwarnings("ignore", category=UserWarning, message=".*?Your .*? set is empty.*?")#Artistic 为布尔值, True 表示启用 Artistic 模式 ( False 启用 Stable 模式);
colorizer = get_image_colorizer(artistic=True)#render_factor 表示渲染因子,值越大效果越好,但同时需要更大的显存;
#我的电脑设置1就承受不住了
render_factor=10#source_path 表示输入图片路径
source_path = 'J:\\s8.jpg'# result_path = 'J:\\finished\\'colorizer.plot_transformed_image(path=source_path, render_factor=render_factor, compare=True)
gc.collect()

前面提到过 Artistic 与 Stable 是有区别的(因为用到的权重文件是不一样的), Artistic 上色效果会更加激进一些。

运行代码前如果使用Artistic模式那么下载resnet101-63fe2227.pt文件存在“C:\Users\wubai/.cache\torch\hub\checkpoints\”路径下;

如果使用Stable模式那么下载https://download.pytorch.org/models/resnet101-63fe2227.pth放在“C:\Users\wubai/.cache\torch\hub\checkpoints\”路径下。

目前Stable模式老是内存不够,我们就记住一个模式是Artistic即可。

问题解决:pip uninstall numpy pip uninstall pandas

4. 给视频上色

给视频上色需要两个步骤:

1) 在window中安装ffmpeg

ffmpeg主要用户合成视频。ffmpeg下载地址:Download FFmpeg

登录后,选择windows:

下载完成之后,解压到某一路径下,这里解压到“J:\ffmpeg-4.4-essentials_build”,配置window环境变量:

2) 编写代码,转换视频

准备视频:old_video.mp4与old_video.mp4 ,编写下面代码:

from deoldify import device
from deoldify.device_id import DeviceId#choices:  CPU, GPU0...GPU7
device.set(device=DeviceId.GPU0)from deoldify.visualize import *
plt.style.use('dark_background')
import warnings
warnings.filterwarnings("ignore", category=UserWarning, message=".*?Your .*? set is empty.*?")colorizer = get_video_colorizer()#NOTE:  Max is 44 with 11GB video cards.  21 is a good default
render_factor=21#"D:\ProgramData\Anaconda3\envs\python36_oldimage\lib\subprocess.py" 文件中 611行 shell=False 改成shell=True,不然读取不到文件
file_name_ext = "J:\\old_video2.mp4"
# file_name_ext = file_name + ".mp4"
result_path = Nonecolorizer.colorize_from_file_name(file_name_ext, render_factor=render_factor)

转换之后的视频在目录:“J:\DeOldify-master\video\result”中,在转换过程中使用的显卡非常大,内存也比较多。


​​​​​​​

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/610519.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

windows10+ubuntu20.04双系统中,ubuntu系统显示home空间不足的扩容方法

实际上网上有两种扩容方法,除了本文的方法外,另一种是在使用启动U盘打开试用ubuntu,应该涉及到nvidia显卡驱动问题故未采用。另一种即本文。 最开始安装双系统时内存分配没有分配好,给ubuntu系统分配的空间较小,导致了后来的的问…

Multimodal Segmentation of Medical Images with Heavily Missing Data

F是mapping function 吐槽 图3太简单了吧。作者未提供代码

iOS14 Widget 小组件调研

桌面小组件是iOS14推出的一种新的桌面内容展现形式。 根据苹果的统计数据,“一般用户每天进入主屏幕的次数超过90次”,如果有一个我们应用的小组件在桌面,每天都有超过90次曝光在用户眼前的机会,这绝对是一个顶级的流量入口。 “…

Oracle之 第1篇 Oracle 11g 简介

目录 Oracle之 第1篇 Oracle 11g 简介 1.1 Oracle概述 1.2 Oracle 11g 系统的体系结构★ 1.1 Oracle物理结构 1.1物理结构--数据文件 1.1.2 物理结构---日志文件 1.1.3 物理结构---控制文件 1.2.4 配置文件 Oracle之 第1篇 Oracle 11g 简介 1.1 Oracle概述 常用…

无线与局域网技术期末划题自制答案

简答题 1.描述5G的三大应用场景? 5G的三大应用场景包括增强型移动宽带(eMBB)、超可靠低延迟通信(URLLC)和大规模机器类型通信(mMTC)。增强型移动宽带(eMBB)主要用于支持…

android自定义时间选择

自定义时间选择器,可以更改到年月日,时分秒 一、自定义DatePicker public class CustomDatePicker {/*** 定义结果回调接口*/public interface ResultHandler {void handle(String time);}public enum SCROLL_TYPE {HOUR(1),MINUTE(2);SCROLL_TYPE(int …

【Web】CTFSHOW命令执行刷题记录1

目录 web29 web30 web31 web32 web33 web34 web35 web36 web37-39 web40 web41 (y4✌脚本) web42 -44 web45 web46 -49 web50 web51 web52 web53 web54 期末复习不了一点,不如做点旧题醒一醒手感。每一题都尽量用不同payl…

@FunctionalSpringBootTest 和@SpringBootTest注解的区别

FunctionalSpringBootTest 和 SpringBootTest 是Spring框架中用于测试的两个不同注解。下面是它们之间的主要区别: 用途和范围: SpringBootTest:这个注解用于需要测试Spring应用程序上下文的场合。它会加载完整的应用程序上下文,适…

插件和工具汇总

插件和工具汇总 【一】MyBatis Log插件【二】热部署【三】一些快捷键 【一】MyBatis Log插件 能够自动拼接参数生成执行的SQL语句,可以更清晰看到执行本次接口调用的所有sql执行条数。在我们执行myabtis的时候,有的时候报错知道哪里错了,但是…

亚马逊,速卖通,美客多卖家怎么才能安全及有效的积累产品的评论

测评补单对于亚马逊、速卖通等平台卖家来说,是一种重要的运营手段之一,通过测评补单快速增加产品的销量、评论数量,提升排名,从而打造爆款产品。 测评养号的好处包括: 1. 提升店铺信誉,制造爆款&#xff…

【大模型】大型模型飞跃升级—文档图像识别领域迎来技术巨变

写在前面 2023年12月31日,第十九届中国图象图形学学会青年科学家会议在广州举行,由中国图象图形学学会主办。 该会议的目标是促进青年科学家之间的交流与合作,以提升我国在图像图形领域的科研水平和创新能力。 由中国图象图形学学会和上海合合…

我在考 pmp,想知道如何去学习 pmbok?

PMP新版大纲加入了ACP敏捷管理的内容,而且还不少,敏捷混合题型占到了 50%,很多人都觉得考试难度提升了,我最开始备考的时候也被折磨过一段时间,但是后面还是找到了方法,3A通过了考试,也算有点经…

【EAI 005】EmbodiedGPT:通过具身思维链进行视觉语言预训练的具身智能大模型

论文描述:EmbodiedGPT: Vision-Language Pre-Training via Embodied Chain of Thought 论文作者:Yao Mu, Qinglong Zhang, Mengkang Hu, Wenhai Wang, Mingyu Ding, Jun Jin, Bin Wang, Jifeng Dai, Yu Qiao, Ping Luo 作者单位:The Universi…

MyBatis:自定义 typeHandler 处理枚举类型

MyBatis 枚举类型typeHandler 枚举类型 枚举类型,在 Java 中属于基本数据类型,而不是构造数据类型,用于声明一组命名的常数。枚举可以根据 Integer 、Long 、Short 或 Byte 中的任意一种数据类型来创建一种新型变量。这种变量可以设置为已经…

npm安装vue,添加淘宝镜像

如果是第一次使用命令栏可能会遇到权限问题。 解决vscode无法运行npm和node.js命令的问题-CSDN博客 安装 在vscode上面的导航栏选择terminal打开新的命令栏 另外可能会遇到网络或者其他的问题,可以添加淘宝镜像 npm install -g cnpm --registryhttps://registry.…

Appium,多应用程序平台的 UI 自动化

Appium是一个开源的移动应用程序自动化测试工具,可以用于跨平台的UI自动化,包括iOS、Android、Web和Windows应用程序。它基于WebDriver协议,支持多种编程语言,如Java、Python、Ruby,Javascript、C#等。 Appium的设计理念是“一次…

websocket: 了解并利用nodejs实现webSocket前后端通信

目录 第一章 前言 1.1 起源 1.2 短轮询与长轮询 1.2.1 短轮询 1.2.2 长轮询 1.2.3 长连接(SSE) 1.2.4 websocket 第二章 利用Node以及ws创建webSocket服务器 2.1 创建ws服务器(后端部分) 2.1.1 了解一下 2.1.2 代创建W…

“To-Do Master“ GPTs:重塑任务管理的趣味与效率

有 GPTs 访问权限的可以点击链接进行体验:https://chat.openai.com/g/g-IhGsoyIkP-to-do-master 部署私人的 To-Do Master 教程:https://github.com/Reborn14/To-Do-Master/tree/main 引言 在忙碌的日常生活中,有效地管理日常任务对于提高生…

K2P路由器刷OpenWrt官方最新版本固件OpenWrt 23.05.2方法 其他型号的智能路由器OpenWrt固件刷入方法也基本上适用

最近路由器在开机时总出问题,于是就那他来开刀,直接刷一个OpenWrt官方最新版本的固件, 刷其他第三方的固件总是觉得不安全, 而且很多第三方固件都带了些小工具,始终会有安全隐患, 而且占用内存空间太多,本来这个东西就没有多少内存,于是就干脆刷一个官方的原始固件(才6.3M, 相…

HarmonyOS应用开发学习笔记 UI布局学习 相对布局 (RelativeContainer)

UI布局学习 之 相对布局 (RelativeContainer) 官方文档 一、关键字 RelativeContainer, alignRules(适配规则) Text(Text02).alignRules({left: { anchor: text01, align: HorizontalAlign.Start },top: { anchor: t…