【实战】(香港城市大学,微软亚洲研究院)让老照片重现光彩(一):Bringing Old Photos Back to Life

香港城市大学和微软亚洲研究院的“让老照片重现光彩”(Bringing Old Photos Back to Life)项目侧重于对老照片进行划痕修复和人脸效果增强,在老照片处理方面取得了很好的成绩,在这篇文章里我们介绍一下这个项目。

论文地址:https://arxiv.org/abs/2004.09484

Github项目:https://github.com/microsoft/Bringing-Old-Photos-Back-to-Life

(一)架构简介

 

【实战】(香港城市大学,微软亚洲研究院)让老照片重现光彩(一):Bringing Old Photos Back to Life_第1张图片

作者开创性地使用了两个变分自动编码器(VAEs),分别将旧照片、干净照片映射到两个不同的潜码空间。这里,r 是真实的旧照片;(x, y) 是通过数据合成产生的配对数据集,y 是干净照片集,x 是由 y 退化而得到的破损照片集。

将数据集 { r }、{ x }、{ y } 分别映射到潜码空间 Zr 、Zx、Zy 。{ r }、{ x } 都是破损照片集,可以强化某种约束使 Zr ≈ Zx (通过联合训练的对抗判别器 adversarial discriminator 来闭合其域间隔)。利用合成的数据对 (x, y) ,将 Zx 映射(原文称之为:翻译)到 Zy,由于这个映射是在较小的低维度的潜码空间完成的,因此训练(原文称之为:学习)起来会比较容易。

为了达成较好的修复效果,特别针对划痕、斑点等照片退化问题引入了 mask input,并且在 Zx --> Zy 的映射中加入了一个全局分支路径(由一个 partial nonlocal block 和几个 residual blocks 组成)和一个局部分支路径(local branch)。其中,partial nonlocal block 针对结构化缺陷,如划痕和灰尘斑点; local branch 针对非结构化缺陷,如噪声和模糊。两个分支在潜码空间融合,从而提高了对带有多个缺陷的旧照片的恢复能力。

论文写得很精彩,建议同学们读一读英文原文,会更有收获。

(二)上手试用

(2.1)必备环境(Windows 10,NVIDIA Geforce RTX 2080Ti)

python       3.7.4
torch          1.5.0
torchvision 0.6.0

(2.2)从 Github 下载源代码,解压缩,进入工作目录,安装其他软件环境:

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

pip install -r requirements.txt

(2.3)下载组件

(2.3.1)https://github.com/vacancy/Synchronized-BatchNorm-PyTorch

将上面项目的代码下载下来,解压缩,将 .\sync_batchnorm 拷贝到:.\Global\detection_models 和 .\Face_Enhancement\models\networks 两个目录下。

(2.3.2)http://dlib.net/files/shape_predictor_68_face_landmarks.dat.bz2

将下载的压缩包解压缩,拷贝到:.\Face_Detection 下。

该文件也可到百度网盘下载:https://pan.baidu.com/s/1E0J0gOlTcrjWkA5G1qddPw  提取码:qm3h

(2.4)下载预训练模型

https://portland-my.sharepoint.com/personal/ziyuwan2-c_ad_cityu_edu_hk/_layouts/15/onedrive.aspx?id=%2Fpersonal%2Fziyuwan2%2Dc%5Fad%5Fcityu%5Fedu%5Fhk%2FDocuments%2FOld%5FPhoto%5FPretrain%5FModel&originalPath=aHR0cHM6Ly9wb3J0bGFuZC1teS5zaGFyZXBvaW50LmNvbS86ZjovZy9wZXJzb25hbC96aXl1d2FuMi1jX2FkX2NpdHl1X2VkdV9oay9FaDFndGpmTGlXdExpQkRHWmhhVHZva0J2RFVkdkE1ajQ5Zl9OcExfUHA5RlBBP3J0aW1lPXowdF9VOTFlMkVn

将 .\Face_Enhancement\checkpoints.zip (327MB)解压缩,保存为:.\Face_Enhancement\checkpoints 目录及相关文件

将 .\Global\checkpoints.zip (1.62GB)解压缩,保存为:.\Global\checkpoints 目录及相关文件

也可以到百度网盘下载:https://pan.baidu.com/s/1T2tEqUsi4QRwBSbPNNLWPQ  提取码:fdgx

(2.5)修改几个文件

run.py,加入一行代码:

os.environ["KMP_DUPLICATE_LIB_OK"] = "TRUE"

 .\global\detection_models\networks.py,修改:

from .sync_batchnorm.replicate import DataParallelWithCallback
from .antialiasing import Downsample

.\Face_Enhancement\models\networks\normalization.py,修改:

from .sync_batchnorm import SynchronizedBatchNorm2d

(2.6)将待修复的带划痕/有破损的老照片放到:.\test_images\old_w_scratch 目录下,将不带划痕需要改进色彩或清晰度的老照片放到:.\test_images\old 目录下,运行以下命令行(命令行中需要使用绝对目录!):

修复带划痕/有破损的老照片(使用 RTX 2080Ti 最大可修复 512x512 的照片):

python run.py --input_folder \ai\Bringing-Old-Photos-Back-to-Life-master\test_images\old_w_scratch --output_folder \ai\Bringing-Old-Photos-Back-to-Life-master\output_images --GPU 0  --with_scratch

改进老照片的色彩或清晰度(使用 RTX 2080Ti 最大可改善 1024x1024 的照片):

python run.py --input_folder \ai\Bringing-Old-Photos-Back-to-Life-master\test_images\old --output_folder \ai\Bringing-Old-Photos-Back-to-Life-master\output_images --GPU 0

(2.7)为了避免成果照片混淆,在完成上一次修复/改进操作后,将成果照片(放在:.\output_images\final_output 目录下)移走后请将 .\output_images 下的子目录清空,然后再进行下一次操作。

(三)使用效果

(3.1)老照片修复

论文给出的例子:

【实战】(香港城市大学,微软亚洲研究院)让老照片重现光彩(一):Bringing Old Photos Back to Life_第2张图片

实测效果

修复前:                                                         修复后:

【实战】(香港城市大学,微软亚洲研究院)让老照片重现光彩(一):Bringing Old Photos Back to Life_第3张图片  【实战】(香港城市大学,微软亚洲研究院)让老照片重现光彩(一):Bringing Old Photos Back to Life_第4张图片

【实战】(香港城市大学,微软亚洲研究院)让老照片重现光彩(一):Bringing Old Photos Back to Life_第5张图片  【实战】(香港城市大学,微软亚洲研究院)让老照片重现光彩(一):Bringing Old Photos Back to Life_第6张图片

【实战】(香港城市大学,微软亚洲研究院)让老照片重现光彩(一):Bringing Old Photos Back to Life_第7张图片  【实战】(香港城市大学,微软亚洲研究院)让老照片重现光彩(一):Bringing Old Photos Back to Life_第8张图片

(3.2)改进照片表现力(色彩或清晰度)

论文给出的例子:

实测效果

改进前:                                                         改进后:

 

【实战】(香港城市大学,微软亚洲研究院)让老照片重现光彩(一):Bringing Old Photos Back to Life_第9张图片 

总之,这个项目做得很棒,实用效果也不错,值得推荐!

(完)

 

 

 

 

你可能感兴趣的:(深度学习,pytorch)