神还原女神照片!GAN为百年旧照上色

640?wx_fmt=png


一键点击,百年旧照变彩色。


如何把女神的黑白照片变成彩照?今日小编发现新加坡 GovTech 数据科学与人工智能部门在 Medium 上介绍了一个为百年旧照上色的项目。


这个项目名为 Colourise.sg,最初是该团队(成员包括:定量分析师 Andrew Tan、软件工程师 Preston Lim、数据科学家 Tan Kai Wei)参加 hackthon 时为新加坡旧照做的深度学习上色工具。点击以下项目地址可以自己尝试给任意黑白照片上色。


项目地址:https://colourise.sg/#colorize


640?wx_fmt=png

应用页面


具体效果如何呢?小编找了玛丽莲·梦露的经典照片尝试了一下,效果惊艳。


640?wx_fmt=png


以下是从 Colourise.sg 图库中找到的效果对比图。


640?wx_fmt=png

640?wx_fmt=png


以及作者根据项目初衷作出的新加坡旧照上色前后的对比图。


640?wx_fmt=png

原始黑白照片(左)和 Colourise.sg 生成的彩色照片(右)。照片为「新加坡华人女子学校」,摄于 1890-1920 年期间。美国国会图书馆 Frank and Frances Carpenter Collection 收藏。


看过对比图之后,我们发现有的照片效果惊艳,但有的照片效果并不好。作者表示,该配色工具的意义在于生成颜色看上去比较合理的照片。它不保证生成的彩色照片就是当时的真实颜色。此外,该项目也只是该研究领域的一角,其模型也并非是完美的。它在一些照片上表现很好,但在其它照片上可能不是。


所以,这个上色工具是如何做的呢?为什么其表现不太稳定?以下是作者在 Medium 上写的技术解读:


这项技术之前没有人做过吗?


可以说有,也可以说没有。


之前的确有人做过上色工具,但那些工具都不是专门针对新加坡历史背景的。


你可能会问,这有什么关系?以 Algorithmia 创建的彩色图像为例,Algorithmia 创建的图像色彩强度不够,可信度也不够高。


640?wx_fmt=png

原始图像(左)和由 Algorithmia 创建的彩色图像(右)


新加坡老照片上色效果较差的一个主要因素可能是新加坡黑白照片和训练集之间差别太大。Algorithmia 使用的模型是用来自 ImageNet 的 130 万张图像训练而成的。ImageNet 由来自斯坦福大学和普林斯顿大学的研究人员创建,可能不包含与新加坡相关的图像。也就是说,模型可能无法学到旧时新加坡校园的真实颜色。


研究人员认为,针对新加坡老照片训练的工具也许能够生成比现有工具更逼真的彩色新加坡老照片。


如何给黑白旧照上色


在解释电脑程序如何上色之前,我们先来看一下人类如何给图像上色。


上色是一份非常耗时且对技能要求很高的工作。为了创建一张色彩协调的照片,人类着色师必须完成两项任务:


  • 对照片的历史、地理、文化背景进行深入研究,以推断出合适的颜色;

  • 用 Photoshop 等软件工具对黑白图像进行上色。


同样,计算机程序也需要完成两项任务:


  • 识别黑白照片中的目标并基于之前见过的照片推断出适合目标的颜色;

  • 给黑白照片上色


使用生成对抗网络进行上色


为了给黑白照片上色,我们运用了深度学习中已知的生成对抗网络技术。包括:


  • 首先,使用具有大量数学参数(>2000 万)的「生成器」基于图像中的特征来预测不同像素黑白照片的像素值;

  • 其次,用「判别器」来确定与原始彩色图像相比,生成照片的颜色是否逼真。


训练模型,直到判别器无法区分生成器生成的照片是否为真实的。训练模型的架构的简化视图如下所示:


640?wx_fmt=png

用于上色的简化 GAN 架构


我们使用流行的 fast.ai 和 PyTorch 程序库开发模型,其架构和训练步骤受到 Jason Antic 的启发。我们基于一组超过 50 万张关于新加坡的旧照片的数据集进行训练,我们使用装有英伟达 V100 GPU 的本地 GPU 集群编译了这些照片。


在提升模型时我们还采取了一些其它措施,包括添加一些来自谷歌 Open Image V4 的照片(这主要是针对该模型做得不太好的身体部位,如模型难以识别的手、腿和手臂),修改学习率和批大小,从而取得更好效果。


将我们的深度学习模型部署为 web 端应用程序


至此,我们的深度学习模型位于办公室本地端的 GPU 集群上——这意味着,只有我们的团队可以使用 colouriser 模型。为使其他人可以使用 coloriser,我们必须在网络上部署这一模型。


我们将谷歌云作为 coloriser 云服务的供应商,其架构非常简单:


(1)CDN 提供 DDos 防护并缓存静态内容,

(2)NGINX 前端代理和静态内容服务器,

(3)负载平衡器负责流量分配,

(4)用英伟达 Tesla K80 GPU 支持 colouriser 服务,进行实际的上色操作。


640?wx_fmt=png

Colourise.sg 架构图


上色过程属于计算密集型任务,完成一张图片大约花费 3 秒钟。照此,我们打算使用 NGINX 服务器将请求排至后端,从而屏蔽后端 colouriser 服务器。如果请求导入的速度远远超出后端服务器的操作能力,NGINX 服务器直接将状态响应返回至客户,请求用户再次尝试。


这一架构的关键点在于 colouriser 服务虚拟机能够对每台虚拟机所必须提供的流量做出自动调整。此举可以节省成本,其他虚拟机只在需要时开启。


结果


以下是我们最喜欢的一些生成结果,使用的训练照片来自纽约公共图书馆(New York Public Library)和新加坡国家档案馆(National Archives of Singapore)。这些原始照片均为黑白照片,对我们创建的彩色照片没有任何影响。


较好的生成结果


该模型在高分辨率照片上表现很好,这些照片突出了人类主体(人在照片中占很大比例)和自然景色。


下面的照片看起来很真实(至少对我们来说),因为它们包含一些在图像数据集中训练充分的目标。因此模型可以识别图像中的正确目标,并给它们准确上色。


640?wx_fmt=png

「在巴东庆祝马来西亚日」——摄于 1963 年 9 月 16 日。图中为 Yang Di-Pertuan Negara Yusof Ishak 和联邦内部安全长官 Ismail bin Dato Abdul Rahman 拿督。新加坡国家档案馆馆藏照片(左),用 Colourise.sg 上色的照片(右)。


640?wx_fmt=png

「内政和国防部长林金山在裕廊巴西拉峇军营举行的军官学员阅兵仪式上发表讲话」,摄于 1969 年 7 月 10 日。新加坡国家档案馆馆藏照片(左),用 Colourise.sg 上色的照片(右)。


640?wx_fmt=png

「新加坡,康乐通道上行驶的汽车」。来自纽约公共图书馆。左为原始照片,右为加工后的照片。


640?wx_fmt=png

「新加坡」,来自纽约公共图书馆。左为原始照片,右为加工后的照片。


趣事


当模型不能识别照片中的目标时,会发生一些有趣的事。


比如下面这张照片——「新加坡的日本投降者」。配色工具将一个士兵的拳头变成了红色,但其他士兵的拳头颜色是对的。这是因为,从照片拍摄的角度来看,模型不能确定那个紧握的拳头是真的拳头。所以它做出了最佳预测,但却没有猜对。


640?wx_fmt=png

「新加坡的日本投降者」,摄于 1945 年 12 月 12 日。摄影师为皇家海军官方摄影师 Trusler C。帝国战争博物馆的原始照片(左),Colourise.sg 上色后的照片(右)。


下面这张照片也出现了这种情况。图为「财政部长 Dr. Goh Keng Swee 抵达直落布兰雅 Bata 鞋厂开业现场」。照片中最右边那个人的脸被染成了可怕的灰色,因为他半张脸被挡住了,所以模型无法识别该目标。


这种现象被称为「遮挡(occlusion)」,是计算机视觉的主要挑战之一。在这种情况下,目标识别算法无法识别被部分遮挡的目标。


640?wx_fmt=png

「财政部长 Dr. Goh Keng Swee 抵达直落布兰雅 Bata 鞋厂开业现场」,摄于 1964 年 4 月 9 日。来自新加坡国家档案馆的原始照片(左)和 Colourise.sg 上色后的照片(右)。


更多照片


下面是更多效果比较好的照片。


640?wx_fmt=png

「新加坡,马来女孩」,拍摄日期不详。来自纽约公共图书馆。左为原始照片,右为加工后的照片。


640?wx_fmt=png

「新加坡」,拍摄日期不详。来自纽约公共图书馆。左为原始照片,右为加工后的照片。


640?wx_fmt=png

「新加坡,牛在成堆的椰子壳中吃草」。来自纽约公共图书馆。左为原始照片,右为加工后的照片。


640?wx_fmt=png

「新加坡 Jiksha 站」。来自纽约公共图书馆。左为原始照片,右为加工后的照片。


Twitter 网友把爷爷奶奶的黑白结婚照都翻出来了


该网站发布后引起了大量 Twitter 网友的转载,他们从各种渠道找到了一些早已淡出大众视野的老照片,有些还是自己祖父母的旧照。上色之后,这些照片上的人似乎又变得鲜活起来。


640?wx_fmt=png

利用 Colourise.sg 给 1880 年的汤加(太平洋岛国)旧照上色。


640?wx_fmt=png

网友惊呼利用 Colourise.sg 可以将黑白照片「秒变」彩照


640?wx_fmt=png

网友利用 Colourise.sg 给自己祖父母的结婚照上色,惊呼「So so awesome」


640?wx_fmt=png

网友利用 colourise.sg 技术给旧风景照上色,效果惊人。直呼:盘它!


参考链接:https://blog.data.gov.sg/bringing-black-and-white-photos-to-life-using-colourise-sg-435ae5cc5036

来源:机器之心

∞∞∞

640?wx_fmt=png

公众号回复“IT派”

邀你加入 IT派 { 深广创投圈 } 

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 要将SR-GAN单图片输出转换为多图片输出,您可以使用以下步骤: 1. 使用SR-GAN生成一张高分辨率的图像。 2. 将生成的高分辨率图像进行裁剪或分割,生成多个小的图像块。 3. 将这些小的图像块进行缩放或调整大小,使它们适合您想要的输出大小。 4. 将这些小的图像块组合起来,形成一个大的图像,从而获得多张图片的输出。 这些步骤可以使用Python中的图像处理库来实现,例如Pillow或OpenCV。通过这种方法,您可以将SR-GAN单图片输出转换为多张图片输出。 ### 回答2: SR-GAN 是一种用于单一图像超分辨率增强的生成对抗网络模型,其目的是将低分辨率的图像转换为高分辨率的图像。如果我们想将单图片输出转换为多图片输出,可以采取以下方法: 1. 数据扩增:在训练模型时,可以使用数据扩增技术增加数据的多样性,例如随机裁剪、水平翻转、旋转等。通过这种方式,我们可以生成一组具有不同角度、尺寸和位置的多个图像。在测试阶段,通过将同一图像在不同位置进行切割,可以获得多张输出图像。 2. 基于相似样本的生成:通过引入一个相似样本库来完成多图片输出。在训练时,我们可以为每个输入图像匹配多个高分辨率的相似样本,并将它们作为输出数据。这种方法需要一个相似样本库,并且需要根据输入图像选择与之相似的样本。 3. 生成多个输出:可以修改模型的结构,使其能够生成多个输出图像。例如,在SR-GAN中添加多个生成器网络,每个生成器负责生成一个高分辨率图像。这样,我们就可以同时对一个低分辨率输入图像生成多个高分辨率输出图像。 通过上述方法,我们可以将SR-GAN的单图片输出转换为多图片输出。这样就可以更好地满足不同应用场景中的需求,如图像标注、图像编辑等。但需要注意的是,转换为多图片输出可能会带来额外的计算和存储开销,需要根据具体需求进行权衡和选择。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值