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

2023-10-12 12:45

本文主要是介绍基于DeOldify的给黑白照片、视频上色,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

老照片常常因为当时的技术限制而只有黑白版本。然而现代的 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 warningswarnings.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 = Noneif 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 warningswarnings.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 = Noneif 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给黑白照片、视频上色。

这篇关于基于DeOldify的给黑白照片、视频上色的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/195937

相关文章

流媒体平台/视频监控/安防视频汇聚EasyCVR播放暂停后视频画面黑屏是什么原因?

视频智能分析/视频监控/安防监控综合管理系统EasyCVR视频汇聚融合平台,是TSINGSEE青犀视频垂直深耕音视频流媒体技术、AI智能技术领域的杰出成果。该平台以其强大的视频处理、汇聚与融合能力,在构建全栈视频监控系统中展现出了独特的优势。视频监控管理系统EasyCVR平台内置了强大的视频解码、转码、压缩等技术,能够处理多种视频流格式,并以多种格式(RTMP、RTSP、HTTP-FLV、WebS

综合安防管理平台LntonAIServer视频监控汇聚抖动检测算法优势

LntonAIServer视频质量诊断功能中的抖动检测是一个专门针对视频稳定性进行分析的功能。抖动通常是指视频帧之间的不必要运动,这种运动可能是由于摄像机的移动、传输中的错误或编解码问题导致的。抖动检测对于确保视频内容的平滑性和观看体验至关重要。 优势 1. 提高图像质量 - 清晰度提升:减少抖动,提高图像的清晰度和细节表现力,使得监控画面更加真实可信。 - 细节增强:在低光条件下,抖

《x86汇编语言:从实模式到保护模式》视频来了

《x86汇编语言:从实模式到保护模式》视频来了 很多朋友留言,说我的专栏《x86汇编语言:从实模式到保护模式》写得很详细,还有的朋友希望我能写得更细,最好是覆盖全书的所有章节。 毕竟我不是作者,只有作者的解读才是最权威的。 当初我学习这本书的时候,只能靠自己摸索,网上搜不到什么好资源。 如果你正在学这本书或者汇编语言,那你有福气了。 本书作者李忠老师,以此书为蓝本,录制了全套视频。 试

SAM2POINT:以zero-shot且快速的方式将任何 3D 视频分割为视频

摘要 我们介绍 SAM2POINT,这是一种采用 Segment Anything Model 2 (SAM 2) 进行零样本和快速 3D 分割的初步探索。 SAM2POINT 将任何 3D 数据解释为一系列多向视频,并利用 SAM 2 进行 3D 空间分割,无需进一步训练或 2D-3D 投影。 我们的框架支持各种提示类型,包括 3D 点、框和掩模,并且可以泛化到不同的场景,例如 3D 对象、室

树莓派5_opencv笔记27:Opencv录制视频(无声音)

今日继续学习树莓派5 8G:(Raspberry Pi,简称RPi或RasPi)  本人所用树莓派5 装载的系统与版本如下:  版本可用命令 (lsb_release -a) 查询: Opencv 与 python 版本如下: 今天就水一篇文章,用树莓派摄像头,Opencv录制一段视频保存在指定目录... 文章提供测试代码讲解,整体代码贴出、测试效果图 目录 阶段一:录制一段

基于树梅派的视频监控机器人Verybot

最近这段时间做了一个基于树梅派 ( raspberry pi ) 的视频监控机器人平台 Verybot ,现在打算把这个机器人的一些图片、视频、设计思路进行公开,并且希望跟大家一起研究相关的各种问题,下面是两张机器人的照片:         图片1:                   图片2                    这个平台的基本组成是:

PC与android平板通过浏览器监控Verybot的视频

下面这个视频是PC与android平板通过浏览器监控Verybot的视频:           http://v.youku.com/v_show/id_XNjYzNzYyMTIw.html

Verybot的几个视频

1、Verybot的运动控制                 http://v.youku.com/v_show/id_XNjYxNjg4MTM2.html           2、Verybot比较初步的网络视频监控           http://v.youku.com/v_show/id_XNjYxNjkyMjg0.html           3、V

java计算机毕设课设—停车管理信息系统(附源码、文章、相关截图、部署视频)

这是什么系统? 资源获取方式在最下方 java计算机毕设课设—停车管理信息系统(附源码、文章、相关截图、部署视频) 停车管理信息系统是为了提升停车场的运营效率和管理水平而设计的综合性平台。系统涵盖用户信息管理、车位管理、收费管理、违规车辆处理等多个功能模块,旨在实现对停车场资源的高效配置和实时监控。此外,系统还提供了资讯管理和统计查询功能,帮助管理者及时发布信息并进行数据分析,为停车场的科学

一款支持同一个屏幕界面同时播放多个视频的视频播放软件

GridPlayer 是一款基于 VLC 的免费开源跨平台多视频同步播放工具,支持在一块屏幕上同时播放多个视频。其主要功能包括: 多视频播放:用户可以在一个窗口中同时播放任意数量的视频,数量仅受硬件性能限制。支持多种格式和流媒体:GridPlayer 支持所有由 VLC 支持的视频格式以及流媒体 URL(如 m3u8 链接)。自定义网格布局:用户可以配置播放器的网格布局,以适应不同的观看需求。硬