Facebook 的图像识别功能一直为人所赞叹,也是一些专业人士介绍相关技术的范例。今日,Facebook 官方发布博客称开源 DeepMask 分割构架、SharpMask 分割精炼模块、MultiPathNet 的代码。
计算机能够像人眼一样轻松分辨图片中的许多物体吗?
当人看一张图片的时候,他们能将物体识别到最后一个像素。在 Facebook 人工智能研究实验室(FAIR),我们正在努力将机器视觉推进到下一阶段——我们的目标是在像素的层面上理解图像和物体。
在过去短短几年内,深度卷积神经网络的发展和更多强大的计算构架的出现使得机器视觉系统在精确度和能力上快速提升。
我们目睹了图像分类(图片中有什么?)和物体探测(物体在哪里?)的巨大进步。请看下面的图(a)和图(b)。这只是理解任何图像或视频中最相关的视觉内容的开始。最近我们正在设计能够识别和分割图像中每个物体的技术,就像下面最右边的图(c),这项关键能力将会带来很多全新的应用。
推动着我们的进步的最主要的新算法是 DeepMask 分割构架以及我们的 SharpMask 分割精炼模块。它们一起使得 FAIR 的机器视觉系统能够探测并精确勾画出一张图片中所有物体的轮廓。我们识别过程的最后阶段使用了一个特定的卷积网络 MultiPathNet 来标记出每个物体掩码(mask)所含有的物体类型(例如人、狗、羊)。下面我们会谈论这个过程的细节。
我们现在决定将 DeepMask+SharpMask 以及 MultiPathNet 的代码——以及我们的研究论文和相关演示——向所有人开放,我们希望它们能帮助机器视觉领域快速发展。随着我们不断改进这些核心技术,我们会继续公开我们的最新结果,并更新我们提供给社区的开源工具。
开源地址:
DeepMask+SharpMask:https://github.com/facebookresearch/deepmask
MultiPathNet:https://github.com/facebookresearch/multipathnet
演示:https://www.facebook.com/aidemos/
寻找像素模式
让我们看一看这些算法的构造模块。
看一下下面第一张图,左边那张。你看到了什么?一个摄影师正在操作他老式的照相机、一片草地、作为背景的建筑物。你可能还会注意到其他无数的细节。机器看不见这些;一张图片被编码成数字数组,每个像素点都有一个值来表征颜色,就如第二张图片那样——右边那张。所以我们如何使机器视觉从像素点中挖掘对一张图片更加深刻的理解呢?
由于现实世界的物体和场景的近乎无限的可变性,这不是一项简单的任务。物体的形状、外表、大小、位置、纹理以及颜色都会变化,加上现实场景的内在复杂性、变化的背景和灯光条件、以及我们的世界的一般丰富性,你会发现对于机器来说这个任务可以有多困难。
现在看看深度卷积神经网络。比起编程式地定义基于规则的物体检测系统,深度网络是相对简单的构架,数千万个参数是训练而来的,而不是设计出来的。这些网络自动从上百万个注释过的样本中学习模式,并且在看过足够多的样例后,能推广至新图像。深度网络特别擅长回答关于一张图像的是或否问题(分类)——例如,这张图中含有羊吗?
分割物体
所以我们如何利用深度网络进行检测和分割呢?我们在 DeepMask 中使用的技术是将分割看成大量的二元分类问题。首先,对于一张图像中的每个(部分重叠的)片(patch),我们思考:这一片中含有物体吗?然后,如果第一个问题的回答是「yes」,那么对于该片中的每一个像素点,我们思考:那个像素是该片中的中心物体的一部分吗?我们使用深度网络来回答每个是或否问题,并通过精心设计我们的网络,使计算是共享于每个片和每个像素,这样我们就能够快速发现并分割图像中的所有物体。
DeepMask 使用了一种相当传统的前馈深度网络设计。在该网络中,随着网络深度的增加,信息变得更加抽象且更具有语义意义。例如,深度网络中早期的层可能能捕获到边和斑点,然而更上的层往往会捕获到更多语义概念,如动物的脸或四肢的存在。这些更上一些的层的特征被特意设计在一个相对低的空间分辨率中计算(为了降低计算量和减少像素点位置小幅位移的影响)。这产生了一个掩码预测(mask prediction)的问题:更上面的层的特征能被用于预测捕获物体大概形状的掩码,但是不能精确捕获物体的边界。
因此我们设计了 SharpMask。SharpMask 将 DeepMask 的输出提炼,能生成高保真的、更精确地勾画物体边界的掩码。当 DeepMask 能在穿过网络的前向通过过程中预测粗糙的掩码时, SharpMask 颠倒深度网络中的信息流方向,并通过使用网络中信息流逐渐经过的更早期层的特征,提炼 DeepMask 做出的预测。这样设想一下:为了捕获物体大概的形状,你必须对你正在看的东西有一个高水平的理解(DeepMask),但是为了精确地定位边界,你需要回去检查那些低级的特征,直到像素的层面(SharpMask)。本质上,我们的目标是以最小的成本利用所有网络层中的信息。
下面是一些由 DeepMask 生成、SharpMask 提炼的输出样例。为了保持样例的可视性,我们仅展示与图片中与物体真实位置完美对齐的预测掩码(人为注释)。注意该系统还不完美,红色轮廓的物体是被人工注释,但被 DeepMask 错过的。
分类物体
DeepMask 不知道任何特定类型的物体,所以尽管它可以同时描绘狗和杨,它却不能分辨它们。另外,DeepMask 并不是非常有选择性的,而且可能生成并不是特别相关的图像区域的掩码。所以我们该如何收缩相关掩码的选择范围,从而识别出真正存在的物体呢?
正如你所可能预料的,我们再一次求助于深度神经网络。给定一个 DeepMask 生成的掩码,我们训练一个单独的深度网络用来分类每个掩码的物体类型(而且「none」也是一个有效的答案)。这里我们遵从了一个名叫 Region-CNN(或 RCNN)的基本范式,该范式是由 Ross Girshick 首创的(他现在也是 FAIR 的一位成员)。RCNN 是一种两阶段的程序,其第一阶段用于将注意力吸引到特定的图像区域,而在第二阶段则使用一个深度网络来识别存在的物体。在开发 RCNN 的时候,第一阶段可用的处理是相当初级的。通过使用 DeepMask 作为 RCNN 的第一阶段并利用深度网络的力量,我们在检测精度上得到了相当显著的提升,同时也获得了分割物体的能力。
为了进一步提升性能,我们也专注使用专用网络架构来分类每个掩码(RCNN 的第二阶段)。正如我们讨论的那样,真实世界照片包含了多种尺度的物体,背景常常很杂乱,而且往往有遮挡。标准的深度网络在这样的情况中存在困难。为了解决这个问题,我们提出了一种名叫 MultiPathNet 的修改过的网络。正如其名,MultiPathNet 允许信息沿多条路径穿过网络,从而使其可以利用多个图像尺度上的信息和图像中周围背景的信息。
总而言之,我们的物体检测系统按以下三个步骤执行:
DeepMask 生成初始的物体掩码;
SharpMask 提炼这些掩码中的信息;
MultiPathNet 识别由每个掩码所描绘出的物体。
下面是我们完整系统的一些输出例子:
结果并不完美,但鉴于能做到这一点的技术几年前甚至还不存在,所以也不算太差啦!
广泛的应用
视觉识别技术有着非常广泛的潜在应用。例如构建这一已有的计算机视觉技术,使得计算机能够识别图像中的物体,这就使得我们可以更容易地在没有每张图都被标记的情况下搜索特定的图像。失去视觉能力的人也能够可以理解朋友们分享给他们的图片内的内容,因为系统可以告诉他们是什么,不论图片旁边有没文字描述。
不久之前,我们展示过为盲人用户开发的技术,也就是评估图片并向用户描述图片内容。如今,视觉障碍用户在收到 News Feed 中的图片时,他们只能听到向他们分享图片的人的名字,后面缀着「Photo」一词。而我们想要提供更丰富的描述,就像「图片中包含沙滩、树、和 3 个在笑的人。」
此外,借用我们开发出的分割技术,我们的目标是提供更沉浸式的体验,在用户手指滑过图片时能够「看到」图片,希望有一个系统能够描述他们触摸到的内容。
在前进的过程中,我们将继续改进我们的检测和分割算法。你可以想象有一天,这些图片检测、分割、识别能力在商务、健康这些领域应用于增强现实。
此外,我们的下一个挑战是将这些技术应用于视频,视频中的物体是移动的、交互的、随时间变化的。在计算机视觉技术观看视频以及理解并分类视频中的实时内容上,我们已经取得了一些进步。实时分类能够在 Facebook 上帮助将相关的、重要的直播视频推荐到封面,同时应用更精致的技术在时间和空间上检测场景、物体和行为能够在有一天实现实时的描述。我们非常兴奋能够推进这一前沿技术并在 Facebook 上为每个人提供更好的体验。
参考论文(点击阅读原文下载):
[1] DeepMask: Learning to Segment Object Candidates. Pedro O. Pinheiro, Ronan Collobert, Piotr Dollár (NIPS 2015)
[2] SharpMask: Learning to Refine Object Segments. Pedro O. Pinheiro, Tsung-Yi Lin, Ronan Collobert, Piotr Dollàr (ECCV 2016)
[3] MultiPathNet: A Multipath Network for Object Detection. Sergey Zagoruyko, Adam Lerer, Tsung-Yi Lin, Pedro O. Pinheiro, Sam Gross, Soumith Chintala, Piotr Dollár (BMVC 2016)