基于DeOldify的给黑白照片、视频上色

news2024/9/20 16:49:45

老照片常常因为当时的技术限制而只有黑白版本。然而现代的 AI 技术,如 DeOldify,可以让这些照片重现色彩。

本教程将详细介绍如何使用 DeOldify 来给老照片上色。

在这里插入图片描述

文章目录

  • 准备工作
  • 执行代码
    • 图片上色
    • 视频上色
  • 总结

准备工作

这里用 git clone 命令克隆了 DeOldify 的 GitHub 仓库,然后安装了所需的依赖库。

git clone https://github.com/jantic/DeOldify.git

常规的需要创建和激活虚拟环境,并安装相关依赖包。

conda create --name python38 python=3.8
conda activate python38 

pip install -r requirements.txt

然后会可能会提示

ERROR: pip's dependency resolver does not currently take into account all the packages that are installed. This behaviour is the source of the following dependency conflicts.
onnxruntime 1.14.1 requires flatbuffers, which is not installed.
onnxruntime 1.14.1 requires sympy, which is not installed.

这里还需要安装flatbufferssympy

pip install flatbuffers sympy

安装完成之后你的文件目录是这样的,然后将虚拟环境目录移动到当前目录下。

在这里插入图片描述
接下来需要下载模型文件。

下载地址在 https://huggingface.co/spensercai/DeOldify/tree/main 。

在这里插入图片描述
将下载好的文件移动到models文件夹下即可。

在这里插入图片描述

执行代码

图片上色

  • 导入依赖库:包括DeOldify库、matplotlib.pyplot、torch等。这些库用于图像处理、可视化以及深度学习任务。
  • 设置设备:使用DeOldify库的device.set()函数将计算设备设置为GPU0。这意味着后续的图像处理任务将在GPU上进行加速处理,如果有多个GPU可用,可以根据需要进行选择。
  • 设置图像风格:使用plt.style.use('dark_background')设置了Matplotlib图形的风格,使其采用黑色背景。
  • 禁用警告:使用warnings.filterwarnings()函数来忽略特定类型的警告,这里忽略了UserWarning类型的警告消息。
  • 创建着色器:使用get_image_colorizer(artistic=True)创建了一个图像着色器对象,其中artistic=True表示使用艺术化的着色方式。
  • 设置参数
    • render_factor定义了渲染因子,影响着色的细节程度。
    • source_urlsource_path分别指定了输入图像的URL和本地路径。
    • result_path用于存储着色后的图像的路径,初始设置为None。
  • 图像着色
    • 代码根据source_url是否为空,选择不同的方式来进行图像着色。如果source_url不为空,将从URL加载图像并进行着色,否则从本地路径加载图像进行着色。着色后的结果将存储在result_path中。
# env setup.py/py
# -*- coding: UTF-8 -*-
'''
@Project :setup.py 
@File    :porcess_img.py
@IDE     :PyCharm 
@Author  :Mr数据杨
@Date    :2023/10/11 12:43 
'''

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')
torch.backends.cudnn.benchmark = True
import warnings

warnings.filterwarnings("ignore", category=UserWarning, message=".*?Your .*? set is empty.*?")

colorizer = get_image_colorizer(artistic=True)

render_factor = 35
source_url = None
source_path = 'data/img.jpg'
result_path = None

if source_url is not None:
    result_path = colorizer.plot_transformed_image_from_url(url=source_url, path=source_path, render_factor=render_factor, compare=True)
else:
    result_path = colorizer.plot_transformed_image(path=source_path, render_factor=render_factor, compare=True)

show_image_in_notebook(result_path)

最后会在result_images文件夹下生成结果图片。

在这里插入图片描述

视频上色

执行代码之前需要在项目目录下创建video文件夹,并在文件夹下创建source文件夹。

这里执行的代码不再解释,理论上和上面图片的差不多,就是处理的时候先将视频转帧然后依次上色最后再合并在一起,保存成视频。

# env setup.py/py
# -*- coding: UTF-8 -*-
'''
@Project :setup.py 
@File    :porcess_img.py
@IDE     :PyCharm 
@Author  :Mr数据杨
@Date    :2023/10/11 12:43 
'''

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()

render_factor = 21

# source_url='https://twitter.com/silentmoviegifs/status/1116751583386034176'
source_url = None
file_name = 'video'
file_name_ext = file_name + '.mp4'
result_path = None

if source_url is not None:
    result_path = colorizer.colorize_from_url(source_url, file_name_ext, render_factor=render_factor)
else:
    result_path = colorizer.colorize_from_file_name(file_name_ext, render_factor=render_factor)

show_video_in_notebook(result_path)

总结

DeOldify 不仅能够给老照片上色,还能用于其他许多有趣的应用,如老电影修复等。希望这个简单的教程能帮助读者更容易地掌握这一技术。

如果想使用Stable Diffusion进行操作的话可以参考 Stable diffusion 用DeOldify给黑白照片、视频上色。

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

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

相关文章

opencv python 深度学习垃圾图像分类系统 计算机竞赛

0 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 opencv python 深度学习垃圾分类系统 🥇学长这里给一个题目综合评分(每项满分5分) 难度系数:3分工作量:3分创新点:4分 这是一个较为新颖的竞…

17、vivado打开保存的仿真文件

1、保存 仿真完成后直接点击保存,输入wcfg文件名称即可。 2、打开 打开原来保存的波形文件,需分两步走。 首先打开wdb文件,Flow,Open Static simulation; 之后再打开原来保存的wcfg文件, File -> Si…

一款新的webshell管理工具

Alien 项目简介 语言 C# .NET Framework V4.8 功能 File Manager (可显示图片, 可SearchFile) 虚拟终端 数据库 注册表 监控 截图 系统信息 项目描述 一句话木马 一句话木马是在渗透测试中用来控制服务器的工具 强大之处在于木…

(2023,LLM,扩散,标记对齐,两阶段训练)MiniGPT-5:通过生成式 Voken 进行交错视觉和语言生成

MiniGPT-5: Interleaved Vision-and-Language Generation via Generative Vokens 公众号:EDPJ(添加 VX:CV_EDPJ 或直接进 Q 交流群:922230617 获取资料) 目录 0. 摘要 1. 简介 2. 相关工作 3. 方法 3.1 多模态…

山海鲸汽车需求调研系统:智慧决策的关键一步

随着社会的发展和科技的进步,汽车行业也迎来了新的挑战和机遇。如何更好地满足用户需求、提高产品竞争力成为了汽车制造商们关注的焦点。在这个背景下,山海鲸汽车需求调研互动系统应运而生,为汽车行业赋予了智慧决策的力量。 智慧决策的核心&…

冠军代言:引领市场潮流的无敌利器!

在当今竞争激烈的商业舞台上,冠军代言已经成为企业吸引更多消费者并提高销售额的无可比拟的利器。这种独特的市场营销策略通过邀请知名运动员、明星或其他广受欢迎的人士代言企业的产品或服务,不仅在短时间内提高了品牌知名度,还能够在消费者…

【转存】异或运算的妙用

概述 异或运算 通过对两个相同长度的二进制数进行逐位比较,若对应位的值不同,结果为 1, 否则结果为 0, Go 语言中使用的运算符号为 ^。 下面举几个简单的小例子: 0 ^ 0 00 ^ 1 11 ^ 0 11 ^ 1 0图片来源: https://www.build-electronic-circuits.c…

Jpg格式如何转成gif格式动图?简单一招搞定gif制作

平时我们看到的使用的gif动图一般是由静态图片合成或是从视频中截取这两种方法制作的。当我们想要将一段视频制作成gif动画却不知从何下手的时候应该怎么办呢?这时候,只需要使用一个在线gif动态图片制作(https://www.gif.cn/)网站…

时间范围配置(昨天,今天,本周,本月,本季度,本年)

ranges:{ ‘昨天’: [ moment(moment().subtract(1, ‘days’).format(‘YYYY-MM-DD 00:00:00’)) ,moment(moment().subtract(1, ‘days’).format(‘YYYY-MM-DD 23:59:59’))], ‘今天’: [ moment(moment().format(‘YYYY-MM-DD 00:00:00’)),moment( moment().format(‘YYY…

Colab matplotlib画图如何显示中文字体【图例坐标轴均可显示中文】

Colab notebook用matplotlib画图中文出现方块: 如何解决这个问题呢? 运行wget -O simhei.ttf "https://www.wfonts.com/download/data/2014/06/01/simhei/chinese.simhei.ttf",安装中文字体,这里装得是SimHei&#xf…

pdf文件过大如何减小?快来试试这个方法

在传送pdf文档的时候,如果内容太多,就会导致文件过大不方法发送,所以需要先把pdf压缩(pdf压缩 PDF文件压缩 pdf在线压缩工具-压缩图)一下,但是下载安装又耽误时间,这里推荐使用pdf在线压缩的方法…

vite vue3 pwa 更新提醒

效果 vite-plugin-pwa插件启用pwa后默认会在后台自动更新应用,并在关闭所有已开启的页面并重新打开后激活 通过此方法可以以消息方式提醒用户手动刷新激活更新应用 方法 已经使用vite-plugin-pwa插件启用pwa 修改vite.config.ts export default defineConfig(…

缓存的力量:提升API性能和可扩展性

缓存是将频繁访问的数据或资源存储在临时存储位置(例如内存或磁盘)的过程,以提高检索速度并减少重复处理的需要。 缓存的好处 提高性能:缓存消除了每次从原始源检索数据的需要,从而提高了响应时间并减少了延迟。减少服务器负载:通…

Maven系列第4篇:仓库详解

maven系列目标:从入门开始开始掌握一个高级开发所需要的maven技能。 这是maven系列第4篇。 整个maven系列的内容前后是有依赖的,如果之前没有接触过maven,建议从第一篇看起,本文尾部有maven完整系列的连接。 环境 maven3.6.1 …

Wifi列表扫描和Wifi链接

上面的截图&#xff0c;就是本文要介绍的主要功能。 1.准备工作&#xff0c;声明权限&#xff1a; <uses-permission android:name"android.permission.CHANGE_WIFI_STATE" /><uses-permission android:name"android.permission.ACCESS_WIFI_STATE&quo…

振弦传感器和振弦采集仪应用隧道安全监测的解决方案

振弦传感器和振弦采集仪应用隧道安全监测的解决方案 现代隧道越来越复杂&#xff0c;对于隧道安全的监测也变得越来越重要。振弦传感器和振弦采集仪已经成为了一种广泛应用的技术&#xff0c;用于隧道结构的监测和评估。它们可以提供更精确的测量结果&#xff0c;并且可以在实…

三维模型3DTile格式轻量化压缩集群处理方法分析

三维模型3DTile格式轻量化压缩集群处理方法分析 在地理信息系统中&#xff0c;由于三维模型的数据密度和文件体积较大&#xff0c;因此需要进行轻量化和压缩处理。这里我们将对使用集群处理方法来实现3D Tiles数据的轻量化压缩进行探讨。 首先&#xff0c;集群计算是一种并行处…

WebDAV之π-Disk派盘 + 开源阅读

开源阅读是一款真正免费的小说阅读软件。开源阅读app有多种新颖的书籍资源。用户可以自由设置并添加书籍清单。无论是在线搜索和浏览还是本地TXT文件导入,都非常方便。当用户使用开源阅读应用阅读小说时,不会有广告跳出来,您可以阅读整个过程,开源阅读app是喜欢看小说的朋友…

持续集成交付CICD:Jenkins部署

目录 一、理论 1.CI/CD 2.Gitlab内置持续集成 3.Jenkins安装与部署 4.Gitlab服务部署 5.Jenkins服务部署 6.Tomcat服务部署 7.Jenkins–Pipeline流水线项目构建 二、实验 1.Gitlab服务部署 2.Jenkins服务部署 3.Tomcat服务部署 4.Jenkins–Pipeline流水线项目构建…

RabbitMQ常见的交换机类型

RabbitMQ安装 pom.xml里导入相关的依赖&#xff1a; <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-amqp</artifactId></dependency> application.properties配置文件 spring.rabbitmq.hos…