Auto Byte

专注未来出行及智能汽车科技

微信扫一扫获取更多资讯

Science AI

关注人工智能与其他前沿技术、基础学科的交叉研究与融合发展

微信扫一扫获取更多资讯

机器之心编辑部

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

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

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

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

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

应用页面

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

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

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

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

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

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

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

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

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

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

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

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

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

如何给黑白旧照上色

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

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

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

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

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

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

  • 给黑白照片上色

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

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

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

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

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

用于上色的简化 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 服务,进行实际的上色操作。

Colourise.sg 架构图

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

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

结果

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

较好的生成结果

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

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

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

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

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

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

趣事

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

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

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

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

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

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

更多照片

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

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

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

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

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

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

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

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

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

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

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

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

入门GAN图像着色计算机视觉
51
相关数据
深度学习技术

深度学习(deep learning)是机器学习的分支,是一种试图使用包含复杂结构或由多重非线性变换构成的多个处理层对数据进行高层抽象的算法。 深度学习是机器学习中一种基于对数据进行表征学习的算法,至今已有数种深度学习框架,如卷积神经网络和深度置信网络和递归神经网络等已被应用在计算机视觉、语音识别、自然语言处理、音频识别与生物信息学等领域并获取了极好的效果。

人工智能技术

在学术研究领域,人工智能通常指能够感知周围环境并采取行动以实现最优的可能结果的智能体(intelligent agent)

参数技术

在数学和统计学裡,参数(英语:parameter)是使用通用变量来建立函数和变量之间关系(当这种关系很难用方程来阐述时)的一个数量。

数据科学技术

数据科学,又称资料科学,是一门利用数据学习知识的学科,其目标是通过从数据中提取出有价值的部分来生产数据产品。它结合了诸多领域中的理论和技术,包括应用数学、统计、模式识别、机器学习、数据可视化、数据仓库以及高性能计算。数据科学通过运用各种相关的数据来帮助非专业人士理解问题。

学习率技术

在使用不同优化器(例如随机梯度下降,Adam)神经网络相关训练中,学习速率作为一个超参数控制了权重更新的幅度,以及训练的速度和精度。学习速率太大容易导致目标(代价)函数波动较大从而难以找到最优,而弱学习速率设置太小,则会导致收敛过慢耗时太长

计算机视觉技术

计算机视觉(CV)是指机器感知环境的能力。这一技术类别中的经典任务有图像形成、图像处理、图像提取和图像的三维推理。目标识别和面部识别也是很重要的研究领域。

生成对抗网络技术

生成对抗网络是一种无监督学习方法,是一种通过用对抗网络来训练生成模型的架构。它由两个网络组成:用来拟合数据分布的生成网络G,和用来判断输入是否“真实”的判别网络D。在训练过程中,生成网络-G通过接受一个随机的噪声来尽量模仿训练集中的真实图片去“欺骗”D,而D则尽可能的分辨真实数据和生成网络的输出,从而形成两个网络的博弈过程。理想的情况下,博弈的结果会得到一个可以“以假乱真”的生成模型。

Amazing!!!脑袋大开啊。