使用 Python 让旧照片修复清晰

liftword3个月前 (03-06)技术文章20

翻开家里的的相片册,可以看到每张照片都是那么的弥足珍贵,特别是很久以前的照片,都是美好的回忆,还有那些年错过的场景,都被记录下来了,不过可惜的是,随着时间的流逝,照片可能泛黄,出现划痕,画质损失等等,那么这时候,如果可以让这些老旧的照片修复回来,那就忒棒啊!

如何使用呢?今天小帅b和你一起玩一下,把旧照片修复清晰。

在此之前,确保你的电脑有:

Python3的运行环境

GPU或者CPU

环境准备

首先将微软的「
Bringing-Old-Photos-Back-to-Life」库 clone 到本地:

git clone https://github.com/microsoft/Bringing-Old-Photos-Back-to-Life.git

下载 Synchronized-BatchNorm-PyTorch

接着进入项目文件,进入 「
Face_Enhancement/models/networks/」,把「
Synchronized-BatchNorm-PyTorch」clone下来:

clone https://github.com/vacancy/Synchronized-BatchNorm-PyTorch

同样的,在「Global/detection_models」下同步下载 「
Synchronized-BatchNorm-PyTorch」:

下载 landmark detection pretrained model

进入 「Face_Enhancement」,使用 wget 命令下载地标检测预训练模型:

wget http://dlib.net/files/shapepredictor68facelandmarks.dat.bz2

接着解压:

bzip2 -d shapepredictor68facelandmarks.dat.bz2

下载训练模块

进入「Face_Enhancement」,使用 wget 下载:

wget https://facevc.blob.core.windows.net/zhanbo/oldphoto/pretrain/FaceEnhancement/checkpoints.zip

接着解压一波:

unzip checkpoints.zip

进入 「Global」,下载:

wget https://facevc.blob.core.windows.net/zhanbo/old_photo/pretrain/Global/checkpoints.zip

同样解压一波:

unzip checkpoints.zip

创建 python3 虚拟环境

python3 -m venv .venv

source .venv/bin/activate

安装项目依赖库

pip3 install -r requirements.txt

至此,我们该安装都特么安装完成了,接下来就可以使用了。

修复没有划痕的老照片

我们可以创建两文件夹,分别用来存放旧照片和生成的修复照片:

比如你要修复这样的旧照片:

把它放进 「old」文件夹中,然后使用这样的命令进行修复:

python run.py --inputfolder [旧照片的文件夹路径] --outputfolder [新照片的文件夹路径] --GPU 0

像这样:

这时候在 「out」中就可以得到修复好的照片了:

打开可以看到新的照片:

是不是清晰了很多?

当然你也可以批量修复,把旧照片都放入你创建的 old 文件夹就可以。

修复有划痕的老照片

使用方式和刚刚的命令一样,只不过我们需要在命令后面添加 「--with_scratch」。

删除刚刚 out 下生成的文件:

rm -rf test/out/*

修复:

python run.py --inputfolder [旧照片的文件夹路径] --outputfolder [新照片的文件夹路径] --GPU 0 --with_scratch

得到的效果就是这样的:

写到这里,小帅b在某宝搜了一下「老照片修复」,这...商机啊!

哈哈,OK,以上就是小帅b今天给你带来的分享,希望对你有帮助。

相关文章

pyinstaller打包python程序高级技巧

pyinstaller是最常用的python程序打包成可执行程序(exe)的工具,这篇文章将介绍几个pyinstaller打包可能遇到的问题及其解决方法。安装pyinstaller的安装很简单,直接p...

Python exe 文件反编译为 Python 脚本

前言将 Python 可执行文件(.exe)反编译为 Python 脚本是一项有趣的技术挑战,可以帮助我们理解程序的工作原理,以及可能包含的逻辑和算法。虽然反编译不是一项简单的任务,并且对于使用各种保...

使用python展开tar包

类Unix的系统,打包文件经常使用的就是tar包,结合zip工具,可以方便的打包并解压。在python的标准库里面有tarfile库,可以方便实现生成了展开tar包。使用这个库最大的好处,可能就在于不...

【Python语音识别系列】实现m4a到wav语音格式的批量转化(源码)

这是我的第388篇原创文章。一、引言在语音识别和音频处理领域,我们经常需要对音频文件格式进行转换,例如将 M4A 格式转为更常见的 WAV 格式。本文将基于pydub这个库批量实现m4a到wav语音格...

Python自动化打包

最近需要打包一二十个同报名的Android apk用来测试,但是版本不一样,如果手动的去打包一个个的太麻烦了,于是乎想着用Python写一个脚本用来打包这些apk。Python执行打包命令首先需要Py...