图像着色、图像增强、恢复旧图像等是计算机视觉领域的热点问题,不过,用一个模型很好地实现多个任务的研究不多。
近日,GitHub用户Janson Antic发布了一个名为DeOldify的项目,这是一个给旧照片着色和修复的神器。
更多结果图像请点击文末链接查看)
技术细节
这是一个基于深度学习的模型。具体来说,我结合了以下方法:
Self-Attention生成对抗网络( https://arxiv.org/abs/1805.08318)。除了generator是一个预训练的Unet之外,我只做了一点修改,使它具有光谱规范化(spectral normalization)和自注意力(self attention)。一开始我努力想实现一个Wasserstein GAN版本,但没成功,转向这个版本之后就一切都好了。我喜欢Wasserstein GAN的理论,但它在实践中并不成功,因此我喜欢上了Self-Attention GANs。
这个模型的惊艳之处在于,它对各种各样的图像修改都很有用,而且应该能做得很好。上面举例的是着色模型的结果,但这只是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 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
|