解密:“无中生有”的计算机视觉

雷锋网按:原文版权属于CSDN《程序员》杂志原创,作者为魏秀参,发表于2016年7月刊。雷锋网(公众号:雷锋网)已获原作者授权发布,如需转载请联系。

计算机视觉(Computer Vision,CV)是一门研究如何使机器“会看”的科学。1963年来自MIT的Larry Roberts发表了该领域第一篇博士论文《Machine Perception of Three-Dimensional Solids》,标志着CV作为一门新兴人工智能方向研究的开始。在发展了50多年后的今天,我们就来聊聊最近让计算机视觉拥有“无中生有”能力的几个有趣尝试:

  1. 超分辨率重建;
  2. 图像着色;
  3. 看图说话;
  4. 人像复原;
  5. 图像自动生成。

可以看出,这五个尝试层层递进,难度和趣味程度也逐步提升。由于篇幅有限,本文在此只谈视觉问题,不提太过具体的技术细节,若大家对某部分感兴趣,以后再来单独写文章讨论。

超分辨率重建(Image Super-Resolution)

去年夏天,一款名为“waifu 2x”的岛国应用在动画和计算机图形学中着实火了一把。waifu 2x借助深度“卷积神经网络”(Convolutional Neural Network,CNN)技术,可以将图像的分辨率提升2倍,同时还能对图像进行降噪。简单来说,就是让计算机“无中生有”地填充一些原图中并没有的像素,从而让漫画看起来更清晰真切。大家不妨看看图1、图2,真想童年时候看的就是如此高清的龙珠啊!

图1 《龙珠》超分辨率重建效果。右侧为原画,左侧为waifu 2x对同帧动画超分辨率重建结果

图2 waifu 2x超分辨率重建对比,上方为低分辨率且有噪声的动画图像,左下为直接放大的结果,右下为waifu 2x去噪和超分辨率结果

不过需要指出的是,图像超分辨率的研究始于2009年左右,只是得力于“深度学习”的发展,waifu 2x才可以做出更好的效果。在具体训练CNN时,输入图像为原分辨率,而对应的超分辨率图像则作为目标,以此构成训练的“图像对”(Image Pair),经过模型训练便可得到超分辨率重建模型。waifu 2x的深度网络原型基于香港中文大学汤晓欧教授团队的成果(如图3所示)。有趣的是,这一研究指出可以用传统方法给予深度模型以定性的解释。在图3中,低分辨率图像通过CNN的卷积(Convolution)和池化(Pooling)操作后可以得到抽象后的特征图 (Feature Map)。基于低分辨率特征图,同样可以利用卷积和池化实现从低分辨率到高分辨率特征图的非线性映射(Non-Linear Mapping)。最后的步骤则是利用高分辨率特征图重建高分辨率图像。实际上,这三个步骤与传统超分辨率重建方法的三个过程是一致的。

图3 超分辨率重建算法流程。从左至右依次为:低分辨率图像(输入)、经过若干卷积和池化操作得到的低分辨率特征图、低分辨率特征图经过非线性映射得到的高分辨率特征图、高分辨率重建图像(输出)

图像着色(Image Colorization)

顾名思义,图像着色是将原本“没有”颜色的黑白图像进行彩色填充。图像着色同样借助卷积神经网络,输入为黑白和对应彩色图像的“图像对”,但仅仅通过对比黑白像素和RGB像素来确定填充的颜色,效果欠佳。因为颜色填充的结果要符合我们的认知习惯,比如,把一条“汪星人”的毛涂成鲜绿色就会让人觉得很怪异。于是近期,早稻田大学发表在2016年计算机图形学国际顶级会议SIGGRAPH上的一项工作就在原来深度模型的基础上,加入了“分类网络”来预先确定图像中物体的类别,以此为“依据”再做以颜色填充。图4就分别展示了模型结构图和颜色恢复示例,其恢复效果还是颇为逼真的。另外,此类工作还可用于黑白电影的颜色恢复,操作时只需简单将视频中逐帧拿来做着色即可。

图4 图像着色的深度学习网络结构和效果。输入黑白图像后即分为两支,上侧一支用于图像着色,下侧一支用于图像分类。在图中红色部分(Fusion layer),两支的深度特征信息进行融合,由于包含了分类网络特征,因此可以起到“用分类结果为依据辅助图像着色”的效果

看图说话(Image Caption)

人们常说“图文并茂”,文字是除图像之外另一种描述世界的方式。近期,一项名为“Image Caption”的研究逐渐升温起来,其主要目的是通过计算机视觉和机器学习的方法实现对一张图像自动地生成人类自然语言的描述,即“看图说话”。一般来讲,在Image Caption中,CNN用来获取图像的特征,接着将图像特征作为语言模型LSTM(RNN的一种)的输入,整体作为一个End-to-End的结构进行联合训练,最终输出对图像的语言描述(如图5所示)。

图5 Image Caption网络结构。图像作为输入,首先经过微调后的多标记(Multi-Label)分类网络得到预测的类别标签,并以此连同图像的深度特征作为下方语言模型LSTM的输入,最终进行联合训练。下图左一可完成Image Caption任务,左2为单个单词图像问答任务,右1为句子级别的图像问答任务

人像复原(Sketch Inversion)

就在六月初,荷兰科学家在arXiv上发布了他们的最新研究成果——通过深度网络对人脸轮廓图进行“复原”。如图6所示,在模型训练阶段,首先对真实的人脸图像利用传统的线下边缘化方法获得对应人脸的轮廓图,并以原图和轮廓图组成的“图像对”作为深度网络的输入,进行类似超分辨率重建的模型训练。在预测阶段,输入为人脸轮廓(左二Sketch),经过卷积神经网络的层层抽象和后续的“还原”操作,可以逐步把相片般的人脸图像复原出来(右一),与最左边的人脸真实图像对比,足够以假乱真。在模型流程图下还另外展示了一些人像复原的结果,左侧一列为真实人像,中间列为画家手工描绘的人脸轮廓图,并以此作为网络输入进行人像复原,最终得到右侧一列的复原结果——目测以后刑侦警察再也不用苦练美术了。

图6 人像复原算法流程及效果

图像自动生成

回顾刚才的四个工作,其实它们的共同点是仍然需要依靠一些“素材”方可“无中生有”,例如“人像复原”还是需要一个轮廓画才可以恢复人像。接下来的这个工作则可以做到由任意一条随机向量生成一张逼近真实场景的图像。

“无监督学习”可谓是计算机视觉领域的圣杯。最近该方向的一项开创性工作是由Ian Goodfellow和Yoshua Bengio等提出的“生成对抗网络”(Generative Adversarial Nets, GAN)。该工作的灵感来自博弈论中的零和博弈。在二元零和博弈中,两位博弈方的利益之和为零或一个常数,即一方有所得,另一方必有所失。而GAN中的两位博弈方分别由一个“判别式网络”和一个“生成式网络”充当,如图7所示。

图7 生成式网络和判别式网络

其中,“判别式网络”的输入为图像,其作用为判断一张图像是真实的,还是由计算机生成的像;“生成式网络”的输入为一条随机向量,可以通过网络“生成”一张合成图像。这张合成图像亦可作为“判别式网络”的输入,只是此时,在理想情况下应能判断出它是由计算机生成的。

接下来,GAN中的零和博弈就发生在“判别式网络”和“生成式网络”上:“生成式网络”想方设法的让自己生成的图像逼近真实图像,从而可以“骗过”“判别式网络”;而“判别式网络”也时刻提高警惕,防止“生成式网络”蒙混过关……你来我往,如此迭代下去,颇有点“左右互搏”的意味。GAN整个过程的最终目标是习得一个可以逼近真实数据分布的“生成式网络”,从而掌握整体真实数据的分布情况,因此取名“生成对抗网络”。需要强调的是,GAN不再像传统的监督式深度学习那样需要海量带有类别标记的图像,它不需任何图像标记即可训练,也就是进行无监督条件下的深度学习。2016年初,在GAN的基础上,Indico Research和Facebook AI实验室将GAN用深度卷积神经网络进行实现(称作DCGAN,Deep Convolutional GAN),工作发表在国际表示学习重要会议ICLR 2016上,并在无监督深度学习模型中取得了当时最好的效果。图8展示了一些由DCGAN生成的卧室图像。

图8 DCGAN生成的卧室图像

更为有趣的是,DCGAN还可以像word2vec一样支持图像“语义”层面的加减(如图9所示)。

图9 DCGAN“语义加减”示意

另外,前些天“生成式计算机视觉”研究领域大牛UCLA的Song-Chun Zhu教授团队发布了他们基于生成式卷积网络的最新工作STGConvNet:它不仅可以自动合成动态纹理,同时还可以合成声音,可以说将无监督计算机视觉又向前推进了一大步。

结束语

如今借着“深度学习”的东风,计算机视觉中绝大多数任务的性能表现都被“刷”上了新高,甚至连“人像复原”,“图像生成”类似“无中生有”的奇谈都可以较高质量地实现,着实让人激动不已。不过尽管如此,事实上距离所谓的颠覆人类的AI“奇点”还相当遥远,并且可以预见,现阶段甚至相当长的一段时间内,计算机视觉或人工智能还不可能做到真正意义上的“无中生有”——即拥有“自我意识”。

但是,也非常庆幸我们可以目睹并且经历这次计算机视觉乃至是整个人工智能的革命浪潮,相信今后还会有很多“无中生有”的奇迹发生。站在浪潮之巅,我兴奋不已、彻夜难眠。

本文作者:魏秀参

本文转自雷锋网禁止二次转载,原文链接

时间: 2024-08-04 13:04:14

解密:“无中生有”的计算机视觉的相关文章

“无中生有”计算机视觉探奇

计算机视觉(Computer Vision,CV)是一门研究如何使机器"会看"的科学.1963年来自MIT的Larry Roberts发表了该领域第一篇博士论文<Machine Perception of Three-Dimensional Solids>,标志着CV作为一门新兴人工智能方向研究的开始.在发展了50多年后的今天,我们就来聊聊最近让计算机视觉拥有"无中生有"能力的几个有趣尝试: 超分辨率重建: 图像着色: 看图说话: 人像复原: 图像自动生

【独家解密】你知道 Google AlphaGo是怎么赢李世石的吗?

2016年1月28日,Google Deepmind在Nature上发文宣布其人工智能围棋系统AlphaGo历史性的战胜人类的职业围棋选手!这条重磅新闻无疑引起了围棋界和人工智能界的广泛关注!3月份AlphaGo对阵李世石的比赛更将引起全人类的目光!   是什么使围棋算法产生了质的飞跃?要知道,在之前最好的围棋程序也只能达到业余人类棋手的水平.是真的人工智能产生了吗?   对于大多数人来说,大家都知道1997年的"深蓝"计算机战胜了人类的国际象棋冠军卡斯帕罗夫,但是大家都不会认为&qu

php接口数据加密、解密、验证签名

 代码很简单,这里就不多废话了,直接奉上代码   代码如下: <?php //header('Content-Type: text/xml; charset=utf-8'); include_once(dirname(dirname(__FILE__)).DIRECTORY_SEPARATOR.'phpsec'.DIRECTORY_SEPARATOR.'Math'.DIRECTORY_SEPARATOR.'BigInteger.php'); include_once(dirname(dirnam

代号“ GProfile ” ——独家解密阿里标签利器

你可能已经知道达摩盘,也可能接触过虾米音乐给你推荐的好歌,当然你肯定经常在购物时,收到系统给你推荐的产品--但你肯定不知道,在营销推荐.产品推荐的背后,是一个庞大的算法工程,其中的一款标签体系,从未对外公布.     今天阿里数据将会独家解密这一标签利器,它的内部代号是-GProfile ,全称为全局档案.概括来说,GProfile 全局档案要做的事情是这样的:    目前,GProfile 全局档案是以消费者档案为核心构建内容,通过分析消费者的基础信息.购物行为以描绘其特征画像.    今后 

采用Cipher DES针对文件加密、解密

由于经常用一些加密或者解密文件的,所以写了一个简单的采用Cipher DES针对文件加密.解密的工具类,记录一下,防止以后忘记了! import java.io.BufferedReader; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.InputStream; import java.io.InputStreamReader; import java.io.OutputStrea

网址解密-别人接口里面的音频地址如何解密啊?

问题描述 别人接口里面的音频地址如何解密啊? playUrl32 : "http://fdfs.xmcdn.com/group6/M03/F7/D7/wKgDg1UiL8iSUj4fAKxNofuLtok575.mp3" 这是我在别人接口里面随便抓的一个音频地址,他后面的wKgDg1UiL8iSUj4fAKxNofuLtok575怎么解密啊?我拿base64在线解密也不好使啊,跪求,现在他们流行什么编码加密啊,像我这种怎么解密啊,等大神解决,我是没法了. 解决方案 不是能直接访问下载m

eb ervice-C# WebService在接收到带参数的接口调用时自动将加密的参数解密

问题描述 C# WebService在接收到带参数的接口调用时自动将加密的参数解密 我的WebService的所有接口调用的参数都是加密过的,而且有接口函数.我在想有没有什么办法,在WebService接收到接口调用请求时,自动将参数解密,而不需要我每个函数内写解密?????? 我暂时没有C币了,有一定奉上 解决方案 我在Spring里面是使用filter过滤器机制来做的!所有的请求都先通过filter,在filter里面做统一的处理,然后再分发到各个具体的controller去.我觉得这种思路

“钓鱼网站”出没网购请注意 民警解密诈骗过程

"网络购物大意不得,千万要留心钓鱼网站,否则你账户里的钱可能会被它吞光!"网购时遭遇钓鱼网站而上当受骗的刘先生至今心有余悸. 刘先生向记者回忆说,当时他想买一款羽绒服,实体店卖的价格要将近700多元,他就在淘宝网上搜了几个价格比较低的店铺,选了一家售价为400多元的店铺."在跟客服人员聊天时,我接收了对方给我发的衣服图片,后来付款的时候老是被跳转至一个第三方支付平台,跟支付宝付款界面挺像的,当时我也没在意.付款后,我感觉有些不对劲,之后就赶紧打电话问淘宝客服,才知道碰到钓鱼网

gpg加解密软件学习

想要获得更多的文章,可以关注我的微信ilanniweb. 为什么要学习gpg呢?因为要在Linux下把一个邮箱的密码加密,不让其他人看到该邮箱真正的密码. 为了不让其他人看到真正的邮箱密码,我们需要对其进行加密. 加密的方式是先把密码先写到一个文件A中,然后使用相关的加密软件对该文件A进行加密生成新的文件B.此时再删除文件A. 其他程序调用邮箱密码时,只调用加密后的文件B,同时对文件B进行解密. 加密我们使用的是gpg这个工具,下面我们来介绍下gpgp. 一.gpg是什么 GPG是GNU Pri