最近,几个中国小伙组成的微软研究团队开发了一种全新的修复旧照片的工具,那些我们想要留在心底或未曾经历过的从前,都可以通过翻看老照片找回来,目前已在 GitHub 上开源。
没有彩色照片的时候能留下的只有黑白照片。而随着时光的流逝,那些老照片的细节也不再清晰。保存好以前的老照片就变成了一件非常有意义的事情。
如今,我们用手机就能拍出上亿像素的照片,无论是景色还是人物都能留下最美的瞬间。
利用真实照片和大量合成图像提出了一种新颖的三重态域翻译网络,两个变体自动编码器(VAE),分别将旧照片和清晰的照片转换为两个潜在空间,并使用合成配对数据学习这两个潜在空间之间的转换。
为了解决一张旧照片中混合的多种退化问题,bringing-old-photos-back-to-life研究团队还设计了一个全局分支和局部非全局分支。全局分支针对结构化缺陷(例如划痕和灰尘斑点)进行修复,局部非全局分支针对非结构化缺陷的局部分支,例如噪音和模糊性。他们利用这种方法在潜在空间中融合了两个分支,从而提高了从多个缺陷还原旧照片的能力。
目前,这种照片还原工具的代码已经在装有 Nvidia GPU 和 CUDA 的 Ubuntu 上进行了测试,需要 Python> = 3.6 才能运行代码。
下载安装预训练模型后,可以使用一个简单的命令轻松恢复旧照片。
没有划痕的图像可以选择以下命令:
pythonrun.py--input_folder[test_image_folder_path]
--output_folder[output_path]
--GPU0
有划痕的图像可以选择以下命令:
python run.py --input_folder [test_image_folder_path]
--output_folder [output_path]
--GPU 0
--with_scratch
注意:请尝试使用绝对路径,图像的修复结果将最终保存在 ./output_path/final_output/ 中。
注:
修复的图片不要太大,比较大的照片还是别想了,大概率带不动的,大图可以把人身体区域截图下来修复,或者将图片切割或裁剪。
报错:
1、incompatible function arguments. The following argument types are supported: 1. (arg0: object, arg1: torch._C._jit_tree_views.SourceRange, arg2: Callable[[str], function]) -> torch._C.Type
错误原因:torch版本和torchvision版本不匹配
2、AssertionError: The NVIDIA driver on your system is too old (found version 9000).
错误原因:torch版本太高,与cuda不匹配,比如我cuda-8.0装了torch-1.5报错了,重新安装torch1.0.0解决。
研究团队表示,他们不打算直接发布带有标签的有划痕的旧照片数据集,如果需要获取配对数据,可以使用他们的预训练模型来测试收集图像以获得标签。
前文提到的新颖的三重态域翻译网络可以用来解决结构化退化和非结构化退化问题,做到旧照片的全局还原。
以下图为例:
bringing-old-photos-back-to-life研究团队使用了渐进式生成器来完善旧照片的脸部区域。
作者采用VAE来实现,使用VAE的关键一点就是,VAE包含隐空间的KL正则项,该项可以帮助对齐老照片的隐空间和合成数据的隐空间,从而减小域间隔。这里,该框架总共有两个VAE,真实老照片数据R和合成数据X共享同一个VAE_1,真实图像用第二个VAE_2进行编解码。VAE假设隐编码服从高斯先验,这样,新的图像可以从高斯分布采样进行重建。
通过隐编码映射进行复原:
由于老照片和合成数据已经在隐空间进行了很好的域对齐,因此,通过成对数据{x, y}学到的从隐编码Z_X到隐编码Z_Y的映射,也能够很好的泛化到老照片上。在这一阶段,那就是固定两个VAE,然后学两个隐空间的映射网络T,
DeOldify:一键还原百年老电影、黑白旧照片本色
DeOldify在Github一上线就爆火,目前已收获6000多星,可以让黑白老电影以及老照片复原其本色。该作者在GitHub中提到,DeOldify中至关重要的就是NoGAN。
训练结构的灵感来自Progressive Growing of GANs(https://arxiv.org/abs/1710.10196)。但不是完全一样,差别主要是我的版本层数保持不变——只是逐步改变输入的大小并调整学习率以确保尺寸的转换成功。最终结果基本一致——训练速度更快、更稳定,并且能更好地泛化。
NoGAN训练结合了GAN训练的优点(绚烂的色彩),同时消除了视频中闪烁的物体。视频是使用孤立的图像生成,没有任何形式的时间建模附加。该过程执行30-60分钟的GAN部分的“NoGAN”训练,一次使用1%到3%的imagenet数据。然后,与静态图像着色一样,在重建视频之前,对单个帧进行“去旧化”。
DeOldify现在有三种型号模型可供选择。每个都有关键优势和劣势,因此具有不同的用例。
影像技术和 AI 的发展让我们有机会“穿越回”百年前去看那时的人们是如何生活的,也能让我们一睹父母年轻时的风采。
有越来越多的工具和技术可以帮我们恢复正在逐渐消失的记忆。看着百年前北京百姓的生活景象,我们能更切实的体会到文化的进步和历史的变迁,看到革命先辈浴血奋战的影像我们能亲眼见证整个国家和社会的变革,更加珍惜今天来之不易的幸福生活。