请选择 进入手机版 | 继续访问电脑版
查看: 128|回复: 2

旧照片着色修复神器!自注意力GAN效果惊艳

[复制链接]

79

主题

160

帖子

480

积分

推广大使

积分
480
发表于 2018-11-4 10:09:08 | 显示全部楼层 |阅读模式
图像着色、图像增强、恢复旧图像等是计算机视觉领域的热点问题,不过,用一个模型很好地实现多个任务的研究不多。

近日,GitHub用户Janson Antic发布了一个名为DeOldify的项目,这是一个给旧照片着色和修复的神器。

51.jpg

52.jpg

53.jpg

54.jpg

55.jpg



更多结果图像请点击文末链接查看)


技术细节

这是一个基于深度学习的模型。具体来说,我结合了以下方法:

  • Self-Attention生成对抗网络https://arxiv.org/abs/1805.08318)。除了generator是一个预训练的Unet之外,我只做了一点修改,使它具有光谱规范化(spectral normalization)和自注意力(self attention)。一开始我努力想实现一个Wasserstein GAN版本,但没成功,转向这个版本之后就一切都好了。我喜欢Wasserstein GAN的理论,但它在实践中并不成功,因此我喜欢上了Self-Attention GANs。


  • 训练结构的灵感来自Progressive Growing of GANshttps://arxiv.org/abs/1710.10196)。但不是完全一样,差别主要是我的版本层数保持不变——只是逐步改变输入的大小并调整学习率以确保尺寸的转换成功。最终结果基本一致——训练速度更快、更稳定,并且能更好地泛化。


  • Two Time-Scale Update Rulehttps://arxiv.org/abs/1706.08500)。 这也非常简单, 就是一对一的generator/critic迭代和更高的critic学习率。


  • Generator Loss包括两部分:一部分是基于VGG16的基本Perceptual Loss(或Feature Loss),基本上只是使生成模型偏差以复制输入图像。第二部分是critic的loss score。对于curious来说,Perceptual Loss本身不足以产生良好的结果。它往往只是鼓励一堆棕色/绿色/蓝色 ,基本上这只是在测试中作弊,神经网络很擅长做这些!这里需要意识到的关键问题是,GAN实际上正在学习损失函数,这对于我们在机器学习中所追求的理想来说真正迈出了一大步。当然,当你把以前人工编码的东西交给机器学习,通常能得到更好的结果。这个项目就是这样。


这个模型的惊艳之处在于,它对各种各样的图像修改都很有用,而且应该能做得很好。上面举例的是着色模型的结果,但这只是pipeline的一个部分,用同样的模型可以开发更多任务。

我用这个模型开发的下一个任务是修复旧图像,使它们看起来更好,所以我的下一个项目是“defade”模型
。我已经做了最初的努力,在我写这篇文章时已经处于模型训练的早期阶段。基本上,它只是训练相同的模型来重建图像,使用夸张的对比度/亮度调整来增强图像,作为褪色照片和使用旧/坏设备拍摄的照片的模拟。我已经看到了一些有希望的结果:


56.jpg



如何启动这个项目


以上就是这个项目的要点——我希望用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


回复

使用道具 举报

326

主题

666

帖子

4179

积分

xdtech

Rank: 5Rank: 5

积分
4179
发表于 2018-11-4 10:14:32 | 显示全部楼层
确实神奇

效果惊艳

哈哈,收藏了
回复

使用道具 举报

326

主题

666

帖子

4179

积分

xdtech

Rank: 5Rank: 5

积分
4179
发表于 2018-12-18 10:15:51 | 显示全部楼层
这以后
真真假假
都无法辨别了
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表