基于深度学习的自动上色程序,以及其实际应用
来自伯克利大学和麻省理工学院的三名研究者Richard Zhang、Phillip Isola、Alexei A. Efros日前给出了深度学习在另一个特定领域的研究进展,开发了一套可以通过深度学习自动学会帮黑白图片上色的技术。从给出的示例来看,这项技术的准确性还是比较高的。说到这些技术的应用,让许多承载着回忆的老照片焕发新生是它能做的极好的贡献之一。
值得注意的是,这个算法是在算法应用平台Algorithmia上的,雷锋网(公众号:雷锋网)之前报道过这个平台,它的主要作用就是让算法的开发者将他们开发出来的算法托管在平台上,而APP的开发者等需要算法的人就可以很方便的通过几条简单的指令就调用上面存储着的算法,这样就能达到一个研究成果最大化利用的目的。
算法的原理研究小组表示,他们给算法制定的目标——为随意给出的黑白照片上色,很明显条件过于宽泛,因此之前的类似算法要么需要用户很多的干涉,要么生成的照片的颜色饱和度往往相当低。而他们通过将算法设定为一个分类任务并且在训练时使用重分类方法来增加了图像颜色的多样性。他们为算法设计了一个类似于图灵测试的“颜色图灵测试”,用来评估算法的效果。让受试者区分摄制了同样物体的照片,哪张是真的哪张是程序生成颜色的结果。结果他们的方法成功骗过了20%的人,这个结果要显著高于之前的方法。
上图是这个算法的网络结构,每个卷积层(conv layer)都代表着由2到3个重复的卷积和整流线性单元(ReLU)层组成的区块,最后是一个BatchNorm层。整个网络没有池化层。分辨率的变化是由卷积块之间的空间缩减取样或不取样实现的。
研究团队在他们的论文中介绍,在图像本身的信息之外,该方法的灵感倒主要来源于它的语义学特征和其中物体的表面提供的线索,在实例中通常意味着图像标签(label)所含有的信息:如草一般都是绿的,天一般都是蓝的等。虽然这个规律并不一定是通用的,但是事实上,要让一幅图变成漂亮的彩色,并不意味着它的着色一定要跟现实中的颜色一模一样,很多时候只要颜色的相对关系看起来合理,就足够骗过人类的眼睛了。
与传统的实现方法不同,他们并不是利用着色问题的损失定制来实现算法的,之前提到过,其实颜色的预测结果有时并不需要同现实结果一模一样,比如一件衬衫,表现出很多种颜色看起来其实都是合理的。他们的方法是在算法中对每一个像素点都预测了颜色可能的分布情况。并且在训练中给不常出现的颜色更多的权重,以增加最终颜色的多样性。最终以一种分布退火的方式得到最后的颜色分布函数。得到的结果同以前的结果相比看起来会更加真实。
研究团队展示了他们的算法在1000组来自ImageNet的图像上的实验效果,其中大部分都得到了比较好的效果。
研究团队在Github上提供了他们算法的源代码(目前还是Demo版):https://github.com/richzhang/colorization
由于其算法发在了Algorithmia上,因此想要使用他们的研究结论,只需用简单的几句指令就可以调用算法实现图片的转换。
或者用这样的格式
小组展示了许多算法成功的案例。如下图
不过还需要注意的一点是,该团队自己也表示,这个算法仍处在试验阶段,它在运算有些图片的时候表现得会很好,但有的时候又会表现得很差,(不过在这一点上其他的类似算法也一样)。因为目前这个算法主要使用ImageNet的图像做训练数据,因此在处理与其训练数据类似的图像的时候会表现得比较好。但该团队也给出了一些失败的例子,不过他们在示例中同时加入了其他算法的表现,可以看出,在这些图片上,其他算法几乎也无法给出比他们算法更好的结果:
最右侧是现实情况,中间的三个是不同算法的横向比较,其中标记为“Ours”的就是该团队的算法。
雷锋网原创文章,未经授权禁止转载。详情见转载须知。
原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/60438.html
aliyuniPhoneLGPhone相关文章
- 【selenium应用实践】怎样实现自动监测百度收录站点链接数量
- 自动重启应用脚本
- 【每周CV论文推荐】GAN在自动驾驶视觉任务中的典型应用
- NLP涉及技术原理和应用简单讲解【二】:paddle(分布式训练、AMP自动混合精度训练、模型量化、模型性能分析)
- 一个用基于Java语言编写的词法分析器代码的自动生成程序,模仿lex程序的需求应用设计 DokymeLex
- 创想焊缝跟踪传感器实现工字钢自动焊接的应用方案
- SQL Server数据库bcp导出备份文件应用示例
- Spring MVC验证器应用实例(超详细)
- 构建你的第一个MongoDB应用:使用C语言的MongoDB驱动程序(cmongodb驱动)
- Redis主从实现自动切换及应用(redis主从自动切换)
- MySQL中简单应用自增序号(mysql自动序号)
- MySQL集群:满足大型应用系统的高可用性需求(mysql集群场景)
- MySQL自动触发器的实现及应用(mysql自动触发器)
- MySQL中时间字段类型及其应用(mysql时间的类型)
- Oracle标准:实现高效可靠的数据库管理与应用开发(oracle标准)
- MSSQL表中的分区类型及其应用(mssql表的分区类型)
- MSSQL序号自动增长技术应用(mssql 自增序列)
- 基于Redis维护应用长连接实现保活(应用与redis链接保活)
- 前端应用如何解决Redis的连接问题(前端应用连不上redis)
- Oracle中TM锁的应用研究(oracle中的tm锁)
- Oracle JNDI整合Java应用的能力(oracle jndi)
- 利用Redis广泛应用的多种场景(redis 能应用的场景)
- 两年磨一“链”,度小满金融的未来应用畅想曲
- AJAX应用之草稿自动保存
- SQL高级应用之使用SQL查询Excel表格数据的方法
- 解析Android应用启动后自动创建桌面快捷方式的实现方法
- 一个JAVA小项目--Web应用自动生成Word
- node.js开发中使用NodeSupervisor实现监测文件修改并自动重启应用