旧照片着色修复神器!自注意力GAN效果惊艳
图像着色、图像增强、恢复旧图像等是计算机视觉领域的热点问题,不过,用一个模型很好地实现多个任务的研究不多。近日,GitHub用户Janson Antic发布了一个名为DeOldify的项目,这是一个给旧照片着色和修复的神器。地址:https://github.com/jantic/DeOldify
更多结果图像请点击文末链接查看)
技术细节
这是一个基于深度学习的模型。具体来说,我结合了以下方法:
[*]Self-Attention生成对抗网络(https://arxiv.org/abs/1805.08318)。除了generator是一个预训练的Unet之外,我只做了一点修改,使它具有光谱规范化(spectral normalization)和自注意力(self attention)。一开始我努力想实现一个Wasserstein GAN版本,但没成功,转向这个版本之后就一切都好了。我喜欢Wasserstein GAN的理论,但它在实践中并不成功,因此我喜欢上了Self-Attention GANs。
[*]训练结构的灵感来自Progressive Growing of GANs(https://arxiv.org/abs/1710.10196)。但不是完全一样,差别主要是我的版本层数保持不变——只是逐步改变输入的大小并调整学习率以确保尺寸的转换成功。最终结果基本一致——训练速度更快、更稳定,并且能更好地泛化。
[*]Two Time-Scale Update Rule(https://arxiv.org/abs/1706.08500)。 这也非常简单, 就是一对一的generator/critic迭代和更高的critic学习率。
[*]Generator Loss包括两部分:一部分是基于VGG16的基本Perceptual Loss(或Feature Loss),基本上只是使生成模型偏差以复制输入图像。第二部分是critic的loss score。对于curious来说,Perceptual Loss本身不足以产生良好的结果。它往往只是鼓励一堆棕色/绿色/蓝色 ,基本上这只是在测试中作弊,神经网络很擅长做这些!这里需要意识到的关键问题是,GAN实际上正在学习损失函数,这对于我们在机器学习中所追求的理想来说真正迈出了一大步。当然,当你把以前人工编码的东西交给机器学习,通常能得到更好的结果。这个项目就是这样。
这个模型的惊艳之处在于,它对各种各样的图像修改都很有用,而且应该能做得很好。上面举例的是着色模型的结果,但这只是pipeline的一个部分,用同样的模型可以开发更多任务。
我用这个模型开发的下一个任务是修复旧图像,使它们看起来更好,所以我的下一个项目是“defade”模型。我已经做了最初的努力,在我写这篇文章时已经处于模型训练的早期阶段。基本上,它只是训练相同的模型来重建图像,使用夸张的对比度/亮度调整来增强图像,作为褪色照片和使用旧/坏设备拍摄的照片的模拟。我已经看到了一些有希望的结果:
如何启动这个项目
以上就是这个项目的要点——我希望用GAN让老照片看起来更好,更重要的是,让项目有用。
这个项目是用Fast.AI library建的。不幸的是,用的是旧版本,我还没有升级到新版本。 因此,先决条件是:
[*]旧版本的Fast.AI library:https://github.com/jantic/fastai
[*]Fast.AI已有的dependencies:已有方便的requirements.txt和environment.yml
[*]Pytorch 0.4.1(需要spectral_norm,因此需要最新的稳定版本)。
[*]Jupyter Lab
[*]Tensorboard(即安装Tensorflow)和TensorboardX(https://github.com/lanpa/tensorboardX)。 需要注意的是,默认情况下, progress images将每200次迭代写入Tensorboard,因此可以持续方便地查看模型正在执行的操作。
[*]BEEFY显卡。我的是GeForce 1080TI(11GB),真希望有比11 GB更大的内存。Unet和Critic都非常大,但越大效果越好。
对于想要立即开始转换自己的图像的人:......好吧,你需要等我先上传预先训练好的权重。 一旦可用,就可以在可视化笔记本中引用它们。我将使用ColorizationVisualization.ipynb。你只需要用我上传的生成器(colorizer)的权重文件替换colorizer_path = IMAGENET.parent /('bwc_rc_gen_192.h5')
假设你在内存足够大的GPU(例如11 GB GeForce 1080Ti)上运行这个程序,我将保持大小约为500px。如果内存小于11GB,你可以将图像缩小,或尝试在CPU上运行。
项目地址:https://github.com/jantic/DeOldify
确实神奇
效果惊艳
哈哈,收藏了 这以后
真真假假
都无法辨别了
页:
[1]