【重磅】Facebook开源机器视觉工具,从像素点中发现规律

简介:

0?wx_fmt=png

 导读


电脑是否能够像人眼一样轻松分辨出一张照片里的不同物体呢?


当我们人类看一张图片时,为了分辨不同的物体,我们能细致到一个个像素的水平。在脸书的人工智能研究中心(Facebook AI Research, FAIR),我们正在将计算机视觉技术推向一个全新的阶段——我们的目标是让计算机能像人类一样,从像素的水平去分析图像和物体。


在过去的几年当里,深度卷积神经网络的发展和前所未有的强大计算架构的到来,已经让计算机视觉系统在精确度和计算能力方面得到了迅速提升。我们已经见证了在图像归类(这张图像中有什么?)以及物体检测(这些物体在哪儿?)领域的巨大进步。请参阅下图(a)和图(b)。但这些还只是计算机理解任意图像或视频中相关视觉内容的起步阶段。近期,我们正在设计一种能够在图像中识别和区分每一个物体的技术,如下面最右边的图(c)所示,这是一种将会带来全新应用前景的关键性技术革新。


0?wx_fmt=png
 

驱动这项进步的主要的新算法是DeepMask1分割框架加上我们的新SharpMask2分割提纯模块。同时,它们使得FAIR的计算机视觉系统变得能够检测和精确地勾画出图像中每一个物体的轮廓。我们这项识别过程的最后一个阶段使用了一种特殊的卷积网络,我们称之为MultiPathNet3,目的是用其中包含的物体类别(例如:人、狗、羊)来标注每一个目标掩码图像。之后我们会回来简单介绍这里面的细节。


我们正在编写DeepMask+SharpMask以及MultiPathNet的代码,同时还有我们的研究论文和相关的演示小样—这些资源将对所有人开放,我们希望它们能够有助于计算机视觉领域的快速进步。在我们继续改进这些核心技术的同时,我们也将继续发表我们最新的成果,并且不断更新我们面向大众开放的一系列开源工具。


 ◆ 

从像素点中发现规律


 让我们一起来看看这些算法的建立基础。


请看下面的第一张图(左图)。你看到了什么?一个摄影师正在操作他的老式相机。一块大草坪。背景当中的建筑物。同时你也可能注意到了无数其他的细节。但计算机看不到这些:一张图像被编码成一个数列,而里面每个数都代表着像素点的颜色参数,就如第二张图片(右图)所表示的那样。那么,我们该怎样让机器视觉从像素点走向对一张图像的深层次理解呢?


0?wx_fmt=png

这不是一个简单的任务,因为物体和场景在现实世界中千变万化。物体的形状、外表,它们的大小、位置,它们的质地和颜色等等,都在变化。再加上真实场景、变化的背景以及光线条件固有的复杂性,以及我们这个世界本身的丰富多彩,你看,这下你可以窥见这个问题对于计算机来说是多大的难题了吧!


让我们走进深度卷积神经网络的世界。


比起试图用编程方式来定义一个基于规则的物体检测系统,深度网络是相对更简单的架构,这个构架中成千上万的参数是训练得到的而不是被设定的。这些网络自动从成百上千已被标注的样例中学习内在的模式,并且我们已经看到,当这样的样例数量足够多的时候,神经网络已经可以开始集成一些新奇的图像了。深度网络特别适应于回答关于图像的是/否的问题(分类)——例如,图像中是否包含了一只绵羊?


 ◆ 

分割物体


那么,我们如何在将深度网络应用到检测和分割当中去呢?我们在DeepMask当中采用的技术是把分割过程看做是一系列的二元分类问题。首先,对一副图像中的每一个(有重叠的)小块区域,我们提出问题:这个区块是否包含物体?接着,如果第一个问题的答案是肯定的,那么,对这个区块中的每一个像素点,我们提出问题:这部分像素是否是这个中心物体的一部分呢?我们采用深度网络来回答每一个是/否问题,并且通过聪明地设计我们所使用的网络,每一个区块和像素的计算结果将是共享的,这样,我们就可以快速地发现并且分割图像中的每一个物体。


DeepMask使用的是一种相当传统的正反馈深度网络设计。在这样的网络中,随着网络阶段的逐渐深入,信息变得越来越抽象,并且在语义上意义丰富。例如,深度网络在浅层的分析可能可以抓住一些边缘或者大概的信息,而更深层次的分析则倾向于抓住一些例如动物面貌或肢体这类更加语义丰富的信息。设计上讲,这些深层分析所具有的的特征是在一个相当低的空间分辨率下计算的(既是出于计算上的原因,也是为了在像素位置小幅变化的情况下能保持结果稳定)。这为掩码图像的预测带来了一个问题:深层次的特征虽然能够抓住物体的整体形状,但却不能精确地分割物体的明确界限。


因此我们转向SharpMask。SharkMask细化了DeepMask的输出结果,它能输出具有更高保真度的图层,以便更准确地勾画出物体界限。如果说DeepMask在网络中通过正反馈的方法预测了一个粗略的物体轮廓,SharpMask则在深度网络中利用逆向信息,通过逐渐使用更浅层次的信息来提炼DeepMask的预测结果。这么想吧,为了抓住物体的整体形状,我们必须对我们正在观察的物体(DeepMask)具备一个高度的理解,但为了更准确地描述物体的边界,你需要回头去从低至像素的角度观察它的特征(SharpMask)。其实,我们的目标就是在运营成本最小化的前提下充分利用网络中各层次的信息。


下面是一些由DeepMask绘制,并由SharpMask提炼的一些例子。为了使这些可视化结果简单易懂,我们只展示了其中极好地匹配了实际物体的一些预测掩码图像(人工注解)。请注意,这个系统还不是完美的,图中具有红色边界的物体正是那些由人工标注,但被DeepMask忽视掉了的物体。


0?wx_fmt=png


 ◆ 

物体分类


DeepMask对某个特定的物体类别一无所知,因此它虽然能勾画出一只狗和一只羊,但无法区分它们。而且,DeepMask也不会精挑细选,对无关紧要的局部也会生成掩码图像。因此,我们怎么缩小相关掩码图像范围,识别实际呈现之物?


正如你所期待的,我们再一次求助于深度神经网络(deep neural network)。给定一个由DeepMask产生的掩码图像,我们训练了另外一个深度神经网络来对物体的掩码图像进行分类(“无法分类”也是一个有效答案。)。


这里,我们遵循了一个基本的模式叫做 Rigion-CNN,或者缩写为RCNN,(这个领域的开路先锋Ross Girshick现在也是FAIR的一员了。)RCNN分两个阶段:第一个阶段是将注意力吸引到某些特定的图像区,第二个阶段使用一个深度网络来确认呈现的物体。


 开发RCNN时,第一阶段的处理还非常原始,通过使用DeepMask来作为RCNN的第一阶段,同时开发深度神经网络的能力,我们在检测的准确性上获得了显著的提升,也获得了对物体进行分割的能力。


为了进一步提高性能,我们把精力集中在一个特别的神经网络构架上来对掩码图像进行分类(RCNN的第二个阶段)。如我们所讨论的,真实世界的图片里包含了物体的各种尺度,各种背景,各种杂乱,各种隐藏。标准的深度网络在这种情况下就有困难了。为了解决这个问题,我们搭建了一个改良的神经网络,叫做MultiPathNet(多路径网络)。


就像它的名字,MultiPathNet允许信息从网络的多个路径流通,使得它可以在不同的尺度和不同的环境背景下找到信息。


总而言之,我们的物体检测系统遵循三步走程序:

  1. DeepMask产生最初的物体掩码图像

  2. SharpMask 细化这些掩码图像, 最终

  3. MultiPathNet 确认由各个掩码图像勾画的物体。


以下是几个我们整套系统产生的输出例子:


0?wx_fmt=png


不完美也不寒碜。要知道,几年前实现这些功能的技术根本不存在!


 ◆ 

大范围的应用


视觉识别技术应用范围很广。在此基础上,计算机可以识别图片中的物体,比如,无须为每张照片加上标签,即可更容易地搜索某些图片。失去视觉的人们也可以理解他们的朋友所分享的图片中的内容,因为无论图片是否配有说明文字,系统都可以告诉他们。


最近,我们演示了为盲人用户开发的技术:评估照片,描述其内容。目前,视觉障碍的用户在脸书新信息推送中遇到图片时,只能听到照片发送者的名字,以及“图片”这个词。而我们的目的是提供更加丰富的描述,比如“图片包含海滩,树,和三个微笑的人”。


更进一步,放大我们正在开发的技术,我们的目标是更加沉浸式的虚拟体验:当用户用手指扫过图片时,系统为他们描述所触摸的内容,这样用户好像真的“看”到了照片一样。


继续前行,我们会继续改善检测和分割算法。你可以设想这种图像检测、分割、确认能力应用在商业、健康等其他增强现实领域的那一天。


0?wx_fmt=png


另外,我们的下一个挑战是将这些技术应用在视频中。在视频中,物体是移动的,交互的,随时间变化的。对于观看视频,对其中的物体进行实时理解和分类,我们已经在计算机视觉方面取得了一些进展。实时分类能帮助发现相关和重要的直播视频,而应用更好的技术来检测场景、物体、时间和空间上的动作会使得实时解说在某一天成为现实。


原文发布时间为:2016-08-30

本文来自云栖社区合作伙伴“大数据文摘”,了解相关信息可以关注“BigDataDigest”微信公众号

相关文章
|
6月前
|
机器学习/深度学习 算法 决策智能
【重磅开源】Facebook开源 Nevergrad:一种用于无梯度优化的开源工具
【重磅开源】Facebook开源 Nevergrad:一种用于无梯度优化的开源工具
|
10月前
|
缓存 数据可视化 测试技术
开源多年后,Facebook这个调试工具,再登Github热门榜
让许多工程师合作开发大型应用大多会面临一个挑战,通常没有一个人知道每个模块是如何工作的,这种技能会让开发新功能、调查Bug或优化性能变得困难,为了解决这个问题,Facebook创建并开源了Flipper,一个可扩展的跨平台的调试工具,用来调试 iOS 和 Android 应用。近日又双叒登上了Github热榜。
|
前端开发 JavaScript 测试技术
Facebook 开源可扩展文本编辑器 Lexical
Meta(原 Facebook)近日开源可扩展文本编辑器 Lexical,源代码托管在 GitHub 上采用 MIT 许可证。
372 0
Facebook 开源可扩展文本编辑器 Lexical
|
XML jenkins Java
Facebook开源静态代码分析工具Infer介绍
Infer是Facebook公司的一个开源的静态分析工具。Infer 可以分析 Objective-C, Java 或者 C 代码,用于发现潜在的问题。其作用类似于sonar和fortify。Infer更倾向于发现代码中的空指针异常、资源泄露以及内存泄漏的问题。
Facebook开源静态代码分析工具Infer介绍
|
机器学习/深度学习 人工智能 文字识别
图神经网络版本的PyTorch来了,Facebook开源GTN框架,还可对图自动微分
近日,Facebook的AI研究院发表了一篇论文「DIFFERENTIABLE WEIGHTED FINITE-STATE TRANSDUCERS」,开源了用于图网络建模的GTN框架,操作类似于PyTorch这种传统的框架,也可以进行自动微分等操作,大大提高了对图模型建模的效率。
255 0
图神经网络版本的PyTorch来了,Facebook开源GTN框架,还可对图自动微分
|
移动开发 Java 程序员
Facebook 将神奇动画引擎 Pop 开源了!
Facebook 2月发布的新闻类应用Paper,因为其灵动的用户界面和交互,成为近来最令人眼前一亮的移动产品之一。 而这个产品的背后是2011年Facebook收购的Push Pop Press,创始人是分别在Apple任设计师和工程师的Mike Matas与Kimon Tsinteris。他们的合作者还有传奇人物Bret Victor。他们为美国前副总统Al Gore开发的电子书Our Choice当时就曾技惊四座。
295 0
Facebook 将神奇动画引擎 Pop 开源了!
|
PHP C语言 开发者
Facebook 发布开源编程语言 Hack
Facebook周四发布一款名为“Hack”的全新编程语言,并声称该语言将能使代码的编写和测试更加高效快速。Facebook已在公司内部使用该语言超过一年时间,现在将以开源的形式将其正式发布。
331 0
Facebook 发布开源编程语言 Hack
|
存储 安全 算法
Conceal —— Facebook推出的android数据加密的开源APIandroid数据加密的开源API
现如今很多的智能手机,都支持把应用安装到SD卡中,这会帮用户节省很多空间,但是许多黑客也会利用这一点窃取用户的隐私。一般情况下,应用都有SD卡的读写权限,当然他也可以读取到其他应用,存储在SD卡上的数据。这意味着如果你安装了恶意的应用,他就可以轻易的获取SD卡上的所有数据。
330 0
Conceal —— Facebook推出的android数据加密的开源APIandroid数据加密的开源API
|
安全 前端开发 API
KVOController:facebook 开源的 KVO(Key-value Observing)工具
KVOController 是一个简单安全的 KVO(Key-value Observing,键-值 观察)工具,用于 iOS 和 OS X 应用开发中,开源自 facebook。
227 0
|
SQL 存储 前端开发
Facebook 在 2013 年的开源贡献
自从 Facebook 的第一行PHP代码,第一句 MySQL 的 INSERT 语句以来,开源就已经是我们工程哲学中的一个重要的部分。
166 0
Facebook 在 2013 年的开源贡献