基于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

相关文章

Java如何获取视频文件的视频时长

《Java如何获取视频文件的视频时长》文章介绍了如何使用Java获取视频文件的视频时长,包括导入maven依赖和代码案例,同时,也讨论了在运行过程中遇到的SLF4J加载问题,并给出了解决方案... 目录Java获取视频文件的视频时长1、导入maven依赖2、代码案例3、SLF4J: Failed to lo

Python实现多路视频多窗口播放功能

《Python实现多路视频多窗口播放功能》这篇文章主要为大家详细介绍了Python实现多路视频多窗口播放功能的相关知识,文中的示例代码讲解详细,有需要的小伙伴可以跟随小编一起学习一下... 目录一、python实现多路视频播放功能二、代码实现三、打包代码实现总结一、python实现多路视频播放功能服务端开

Python实现视频转换为音频的方法详解

《Python实现视频转换为音频的方法详解》这篇文章主要为大家详细Python如何将视频转换为音频并将音频文件保存到特定文件夹下,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. python需求的任务2. Python代码的实现3. 代码修改的位置4. 运行结果5. 注意事项

Python视频处理库VidGear使用小结

《Python视频处理库VidGear使用小结》VidGear是一个高性能的Python视频处理库,本文主要介绍了Python视频处理库VidGear使用小结,文中通过示例代码介绍的非常详细,对大家的... 目录一、VidGear的安装二、VidGear的主要功能三、VidGear的使用示例四、VidGea

流媒体平台/视频监控/安防视频汇聚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                    这个平台的基本组成是: