香港城市大学和微软亚洲研究院的“让老照片重现光彩”(Bringing Old Photos Back to Life)项目侧重于对老照片进行划痕修复和人脸效果增强,在老照片处理方面取得了很好的成绩,在这篇文章里我们介绍一下这个项目。
论文地址:https://arxiv.org/abs/2004.09484
Github项目:https://github.com/microsoft/Bringing-Old-Photos-Back-to-Life
(一)架构简介
作者开创性地使用了两个变分自动编码器(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 下载源