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

全世界只有3.14 % 的人关注了

数据与算法之美


如何把女神的黑白照片变成彩照?今日,数据汪发现新加坡 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 技术给旧风景照上色,效果惊人。直呼:盘它!


转载请在公众号中,回复“转载”

版权归原作者所有,转载仅供学习使用,不用于任何商业用途

如有侵权请留言联系删除,感谢合作。

640?wx_fmt=png

超模君准备了几份 数学思维好物

《超模定制笔记本》《数学原来会说谎》

《数学的故事》《简单微积分》......

免费 送给大家,参与就有机会获得

640?wx_fmt=gif


640?wx_fmt=png

640?wx_fmt=jpeg

640?wx_fmt=jpeg

640?wx_fmt=jpeg

640?wx_fmt=png


640?wx_fmt=gif

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/301365.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

cacti+nagios 整合遇到的问题

cacti安装成功了,下载一个npc插件来套用nagios,nagios要用ndoutils和cacti连接。主要安装ndoutils出现的问题。启动ndoutils时出错:/usr/local/nagios/bin/ndo2db-3x -c /usr/local/nagios/etc/ndo2db.cfg错误提示:Support for th…

谈谈MySQL面试的45个常见问题

前两天,我跟一个面试官聊天,发现一个普遍想象,不少候选人,对数据库的认知,还处在比较基础的阶段,以为会写“增删改查”、做表关联就足够了,那些工作中经常出现的问题,却支支吾吾答不…

TensorFlow的这些骚操作你都知道吗?

TensorFlow Lite 2019 年发展蓝图分为四个关键部分:易用性、性能、优化和可移植性。自 2015 年 11 月 9 号发布之后,TensorFlow 逐渐成为人工智能领域最广泛运用的深度学习框架。那么TensorFlow框架到底是什么?TensorFlow 是一个大规模机器学…

实现图片打乱_疫情过后,是否打乱了你前进的脚步?面对现状,你将如何开展新的征程?...

2020年的这个春节,一场疫情打乱了所有的计划。就在整个城市都躲起来的时候,有一群人却站了出来。他们背对着我们,却直面着生死,他们每一刻都在与时间赛跑,与死神抢人。他们是值得我们尊敬的人,是最敬爱的人…

SystemCenter2012SP1实践(23)私有云的权限设计

SCVMM和SCAC作为微软私有云的两个重要入口,由于私有云的资源是多部门公用的,为了防止权限扩大导致资源浪费和误操作的可能性,我们在企业中部署的时候,需要认真的规划好用户和相应级别管理员的权限设置。我是分隔线本文主要介绍身份…

面向.NET开发人员的Dapr——参考应用程序

目录:面向.NET开发人员的Dapr——前言面向.NET开发人员的Dapr——分布式世界面向.NET开发人员的Dapr——俯瞰Dapr面向.NET开发人员的Dapr——入门Dapr reference applicationDapr 参考应用Earlier in the book, youve learned about the foundational benefits of D…

数据集转换_为什么LSTM看起来那么复杂,以及如何避免时序数据的处理差异和混乱...

LSTM(long short term memory,长短期记忆网络)是预测时间序列最常用的神经网络模型之一。但是这种神经网络模型相当复杂,需要特定的结构、数据前期处理等操作。当在网上搜寻要学习的代码时,很难将另一个程序员的代码合…

一直被模仿,从未被超越的经典订阅号!

不管你昨天有多优秀,代表不了今天的辉煌,昨天的太阳永远晒不干今天的衣裳,以阳光心态迎接每一天。今天小编就给大家推荐几个越来越优秀的微信公众号希望把快乐和成长带给您长按二维码,选择【识别图中二维码】关注日读好书ID&#…

面向.NET开发人员的Dapr——总结和前景

目录:面向.NET开发人员的Dapr——前言面向.NET开发人员的Dapr——分布式世界面向.NET开发人员的Dapr——俯瞰Dapr面向.NET开发人员的Dapr——入门面向.NET开发人员的Dapr——参考应用程序面向.NET开发人员的Dapr——状态管理面向.NET开发人员的Dapr——发布和订阅面…

每日一笑 | 周一,如何才能保持清醒?

全世界只有3.14 % 的人关注了数据与算法之美(图片来源于网络,侵权删)难怪数据汪每次喝咖啡都没啥用原来是没用对杯子...

查询两个日期间隔天数怎么算_大厂都是怎么用Java8代替SimpleDateFormat?

1 SimpleDateFormat 之坑1.1 格式化1.1.1 案例初始化一个Calendar,设置日期2020年12月29日​日志​这是由于混淆SimpleDateFormat的各种格式化模式:小写y是年大写Y是week year,即所在的周属于哪一年一年第一周的判断方式从getFirstDayOfWeek(…

Vertex Texture Fetch(VTF) Fragment Texture Fetch ( FTF )

在vertex shader里也可以检索纹理。我本来觉得这没什么好奇怪的,因为我一直也觉得这很当然可以啊~当初橙书(OpenGL Shading Language Edtion2)也说过texture2D这类函数不是fragment shader专用的,倒还有texture2DLod这种在vertex shader里专用的&#xf…

面向.NET开发人员的Dapr——机密

目录:面向.NET开发人员的Dapr——前言面向.NET开发人员的Dapr——分布式世界面向.NET开发人员的Dapr——俯瞰Dapr面向.NET开发人员的Dapr——入门面向.NET开发人员的Dapr——参考应用程序面向.NET开发人员的Dapr——状态管理面向.NET开发人员的Dapr——发布和订阅面…

没找到rpm命令_Mysql的命令总结和PyMysql

Author:RunsenDate:2019/2/27作者介绍:Runsen目前大三下学期,专业化学工程与工艺,大学沉迷日语,Python, Java和一系列数据分析软件。导致翘课严重,专业排名中下。.在大学60%的时间&a…

银联再发道歉声明;印度发布吃鸡禁令;甘肃全省校园禁售辣条;波音面临50亿罚款;女子撕扯民警头发罚两百;这就是今天的大新闻。...

今天是3月18日农历二月十二今天星期一最近天气多变大家出门注意穿衣带伞下面是今天的大新闻银联再发道歉声明(央视财经)315晚会就“闪付”功能存在“隔空盗刷”的风险对广大消费者进行消费预警。3月16日下午,银联回应此事,表示隔空…

面向.NET开发人员的Dapr——可观察性

目录:面向.NET开发人员的Dapr——前言面向.NET开发人员的Dapr——分布式世界面向.NET开发人员的Dapr——俯瞰Dapr面向.NET开发人员的Dapr——入门面向.NET开发人员的Dapr——参考应用程序面向.NET开发人员的Dapr——状态管理面向.NET开发人员的Dapr——发布和订阅面…

antd request 通过jsessionid传参数_Umi-request源码阅读

最近参照antd-pro脚手架进行开发,因此接触到了umi-request。umijs/umi-request​github.comumi-request对fetch进行了封装,简化了api的使用,结合了fetch和axios的特点,具体可参照umi-request的readme介绍。文件结构核心文件夹为sr…

随手能做194个实验,不呆板,轻松撬动大智慧

▲数据汪特别推荐点击上图进入玩酷屋玩具和学习看似是两个对立的东西,孩子天性爱玩,家长却希望孩子能多学习。不一定非要啃课本才能汲取知识,有时候,在轻松有趣的游戏中也能学到课堂上学不到的知识。让学习变得有趣、高效——给孩…

面向.NET开发人员的Dapr——绑定

目录:面向.NET开发人员的Dapr——前言面向.NET开发人员的Dapr——分布式世界面向.NET开发人员的Dapr——俯瞰Dapr面向.NET开发人员的Dapr——入门面向.NET开发人员的Dapr——参考应用程序面向.NET开发人员的Dapr——状态管理面向.NET开发人员的Dapr——发布和订阅Th…

每日一笑 | 为什么Python比Java更受欢迎?

全世界只有3.14 % 的人关注了数据与算法之美(图片来源于网络,侵权删)