欧阳万里作者

让机器“解疑释惑”:视觉世界中的结构化理解|VALSE2018之八

编者按:据传宋徽宗赵佶曾以“深山藏古寺”为题命人作画,夺魁的画作,画崇山峻岭之中,一股清泉飞流直下,跳珠溅玉,泉边有位老态龙钟的和尚,正舀着泉水倒进桶里。

这幅画的妙处在于,从“打水的老和尚”这一已知语义信息提取出“古寺”这一隐含信息,从而使得该画切题应景。而在计算机视觉领域,这一典故正展示了结构化分析中的隐含信息传递,对于画面内容理解的重要性。

近年来,深度学习取得了斐然的成绩,然而自其提出之日起,“黑盒智能”、“可解释性差”等质疑之声即不绝于耳,“黑盒智能”,意味着无法对结果作出保证,并极易陷入“自信的错误”这一致命问题。因此,世界上顶级实验室都在思考“why"这一问题,并尝试增强算法的可解释性,以打开深度学习这一黑盒子。

今天,来自悉尼大学的欧阳万里教授,将从物体之间的相关性出发,利用结构化建模,尝试在图像理解领域,窥一窥深度学习这一黑盒子。

文末,大讲堂特别提供文中提到参考文献的下载链接。

本次报告中,我介绍一下我在香港中文大学以及在悉尼大学和很多老师、学生一起合作的工作。

首先我们来了解一下检测和人体姿态识别相关的工作。给定一张图像,确定感兴趣的物体在图片中的位置,比如说这位女士的牙刷,这就是物体检测工作。目标检测进一步往上分析,就是关系检测。得到关系之后,可以进一步做更多语义的理解,比如用句子来描述图片中某个区域它的语义,如说这位妈妈和可爱的小孩在刷牙。物体检测后可以逐步把语义信息往上走,也可以对感兴趣物体进行深入分析,比如说可以对人体关键点进行定位,也就是人体姿态识别。有了这些物体检测、姿态检测以后可以分析行人,分析人的动作。

关键点定位识别任务具有许多难点,例如说人可能穿不同颜色衣服,会被遮挡,人身体变动灵活,会由于形变产生剧烈视觉信息变化。

为了处理好视觉信息,我们引入结构化学习,学习输出结构化的信息在我们打开深度学习黑盒子的过程中是很重要的一环。我们期望利用对问题的理解,帮助我们在深度学习能达到的结果之上得到更多的改善。

对于结构化输出的建模,我们有一些工作。比如在人体姿态识别任务中,对人体关键点之间的空间结构关系可以进行建模。对于人与人之间的交互,可能会有很多交互因素,比如说有交互动作,具体到拥抱、手拉手。其它交互因素,比如说人与人之间的距离,倾斜度、朝向等这些因素,他们之间也会有位置关系,所以可以将它们进行结构化建模。基于单目摄像头得到深度信息预测任务,可以利用卷积网络帮我们在不同分辨率特征中得到不同对于深度信息的预测,它们之间也有很多相关性,可以对它们进行结构化建模。最新工作考虑不同的模态,在跨摄像头寻人信息中对比两个图片是不是同一个人,对于人分割多值信息可以有结构化信息帮助我们进行建模。

在进一步打开深度学习黑盒子的情况下,我们可以引入标签或者输出所不具备的因素,把对于因素中特性的建模和深度特征的学习继续联合学习。具体例子就是物体检测,我们会遇到遮挡以及人的形变产生的变化,这些因素都是隐含的,标签中只有一个矩形框,没有这些信息。如果能够设计需要非常少参数的方法能够把隐含因素推理到,其实就能够帮助到模型学到更好的特征,并实现更好的结果。

例如说有一幅图像,我们可以利用深度学习模型或者已有手工设计的特征对它进行处理。这个任务中,一个隐含的因素是形变,我们可以引入处理形变和学习形变的模型,一个著名模型是deformable part model。另一个隐含因素是遮挡,比如说在这幅图中这个人腿就被椅子挡住了。如果能够对人体的遮挡进行推理,能够把一些被遮挡的部分找出来,不要用被挡住的椅子学习人腿的视觉形状。如果能够得到这样的隐含因素可以进一步提高检测效果。最后是进行分类。这些模块之间的学习都是固定住前面一部分的参数,学习最后的参数,每个模块之间缺乏通信。我们可以设计联合深度学习模型,将这些模块联合起来,在每次参数学习中,都能够进行非常好的通信,从而使各模块通过互相沟通学习到更好的模型以提高准确率

这是我们设计基本模型,首先利用卷积网络帮我们学习到特征,有了特征以后就可以利用形变层((deformation layer))学习身体各个部分的形变。

假设有一个检测器可以检测人的肩膀在图片中的位置,其中一个检测器的例子就是这样一个肩膀,如果把这个肩膀检测器在图片中进行滑动的匹配将会得到这样的响应图谱。在没有肩膀的地方会有我们不想要的高的响应,如果使用这些区域学习人的肩膀长什么样,特征学不好,肩膀的检测器也学不好。为了处理好这个问题,我们可以利用形变的特性。我们可以考虑到人的肩膀不会从对应的位置跑到人的右下角,所以我们设计形变的图谱,自动学习人的形变特性。将这种概率化的描述转化成图谱,进行叠加就会得到修正以后的图谱。如果利用修正以后的图谱进行检测,可以准确定位形变物体到底在哪里,相对于特征和检测学习就会得到更好的结果。

另一方面,人的身体各个部位会被遮挡,会涉及不同大小身体部位的检测器。比如说关于人的左腿和右腿的检测器,如果两个检测器都被遮挡,两条腿会一起被遮挡,所以不同检测器它们之间关系可以用deep belief net来学习。

我们进行了一些实验,在2013年时最大的行人检测数据库上,使用手工设计的特征再加上已有的分类器错误率为68%。如果处理好形变隐含的因素可以降到63%,如果将特征学习以及形变和遮挡进行联合学习可以将错误率降到39%。如果进一步使用更好深度学习的方式,最近的工作错误率可以降低到9%。

论文相关代码在如下地址:

http://www.ee.cuhk.edu.hk/~wlouyang/projects/ouyangWiccv13Joint/index.html.

上面所说的我们对于形变和遮挡这两个隐含因素的学习主要用在单个行人检测工作中,我们将它进行拓展。第一个拓展是把形变的学习拓展到普适的物体检测中,我们开发了一个新的形变学习模型,这个工作2017发表在PAMI,连续几个月都是TPAMI最受欢迎的文章之一。

另外一个扩展是将对于单个行人的可见性与不可见性的推理运用到两个行人之中,互相遮挡的情况下,他们之间可见性有相融和不相融的关系,从而提高互相遮挡情况下的效果。

上面介绍的是我们利用隐含因素具体研究形变以及遮挡两个隐含因素,对这两个隐含因素参数的学习和深度学习中特征学习进行联合学习,从而提高最终我们具体任务的效果。

为了进一步的打开深度学习的黑盒子,我们考虑特征之间的结构化建模。它的动机是来自于另外一个观察。全连接网络或者卷积网络它们有一个共同特性,在同一层中神经元是没有连接的,但人脑并不是这样,在人脑中同一层神经元之间是有连接的。

关于深度学习,研究者得到最多的信息就是要设计很好的学习方法以及很好模型设计方式,使得模型变得越来越深。是不是把模型变得更深就是我们唯一的出路呢?另外一个问题是做视觉研究者对于问题的观察以及理解是不是也会有帮助?为了回答这个问题,我们设计了GBD-Net。GBD-NET利用上下文信息,帮助我们识别所感兴趣的物体是什么。

计算机视觉研究者很早就知道上下文信息对于识别物体有帮助。有了深度学习模型以后怎样考虑上下文信息呢?我们考虑的是可以学习不同上下文信息的特征之间的关系。比如说,现在有一个特征对应的是兔子的耳朵,它是比较少的上下文的信息,可以推测到下面应该有兔子的头。因此兔子耳朵这样比较少上下文的特征和兔子头这个比较多的上下文特征,反之亦然。由此可见,不同上下文信息的特征之间可以互相验证。

而另外一方面如果看见一个兔子耳朵并不一定下面就有兔子的头,如上图中的反例。在这种情况下,如果我们看见下面不是兔子的头,而是一个人的脸,我们希望的是让这个兔子的耳朵不要传递信息给兔子的头。因此信息是需要传递的,但是信息的传递是需要受到控制的。



基于已有的检测网络基础上我们设计了GBD-Net。它利用已有网络结构得到不同上下文特征。有了不同上下文信息特征以后,开始进行信息传递。



可以把信息从上往下传,也就是让上下文信息比较少的特征传递给上下文信息比较多的特征。也可以进行反向的传递,就是把上下文信息比较多的特征传递给上下文信息比较少的特征。我们将两组通过不同方向传递的特征会进行结合,也引入一个函数来帮助我们控制信息的传递。



经过信息传递以后,这些特征将会被得到修正,我们利用修正特征帮助我们做最终检测的任务。



实验发现在不同的数据库和不同网络结构中,使用我们这样的特征之间传递信息的方法,效果都可以得到很好的改善。我们利用这个方法参加了2016年的竞赛,在静态物体检测和动态视频物体检测跟踪中我们都取得第一名。



对GBD-Net进行总结。第一点,特征仍然是重要的。第二点,视觉工作者基于专业知识对于问题的观察和分析同样重要。第三点,我们使用深度学习,把它当做一个工具来帮助将特征之间的关系进行建模。具体而言,我们设计的GBD-Net是在不同上下文特征之间进行信息传递。论文相关代码可以扫描二维码。



刚才所做的只是在物体检测中,是不是这个特征之间的结构建模只是适用于物体检测呢?其实不是这样的,它在其他很多工作中也是有效的。比如说在人体姿态识别中,我们考虑每一个人体的关键点都是一个特征,在这些特征中可以进行信息传递。可以考虑每个关键点分别对应的一组特征,有了对应特征以后可以把对应特征认为是结点,有了结点以后可以考虑人体关键点树型结构,在树形结构上的各个结点之间进行信息传递。论文相关代码在:

https://github.com/chuxiaoselena/StructuredFeature.



刚才我们所介绍的仍然是具有类似语义信息的这样一些特征,其实这样的特征并不一定要具有相同语义。在具体工作中,可以考虑这些特征可以具有不同的语义信息。比如说物体检测中可能有专门对应每一个物体的特征,比如说这位女士自己的特征,对于牙刷也有它自己的特征,小孩和他的牙刷都有自己的特征,往上走不同物体之间关系也有一组专门识别物体关系的特征。继续上走,每个语句也有自己的特征。如果考虑每一个特征都是一个结点的话,仍然可以利用它们之间的关系,通用边进行信息传递,最终提高这三个不同任务的效果。



上面介绍利用结构化信息传递在不同任务进行结构化信息建模。它面临的问题是信息传递没有任何理论指导,我们只是通过观察来设计并通过实验发现这样做有效。为了解决这个问题,我们引入统计模型。具体而言,我们引入条件随机场,帮助我们进行网络结构设计。网络结构符合这样的统计模型。在具体工作中,我们对特征之间的信息传递利用条件随机场进行建模,也对加入门限控制的特征信息传递利用条件随机场进行建模。



在统计模型指导下,另外一个优势可以利用统计模型中一个很好的信息传递方法,帮助指导我们怎样在各个节点之间传递信息才是最有效的。



所以,对于结构化信息传递,在已有基础上考虑结构化的输出,可以引入结构化特征,将结构化特征和结构化输出进行联合学习。



除了结构化学习,我们实验室在基础网络设计上我们也做了很多工作。林达华老师设计非常好的网络-PoLyNet,它是一种非常深的网络结构。这个网络结构的基本想法是同一个模块中,引入多个inception module,可以并行或串行。利用这个方法达华老师所带的学生参加2016年的竞赛,竞赛中单个模型结果是当时最好的。



另外一个工作动机是,如果有同样大小的人脸,但是局部特征是不一样的。比如说在这个例子中有三张同样大小人脸,但是人的眼睛和嘴巴视觉信息大小是不一样的。这就要求我们的神经元具有多样性能够捕捉到这些不同大小的特征。



为了捕捉到不同大小的特征,有一种设计,就是设计不同大小的滤波器或者将不同大小的滤波器进行叠加,比如说有3×3再往上叠,可以得到5x5,这会增大参数量和计算复杂度。


我们考虑另外一种方式就是下采样。第一个分支中不采用任何下采样,这样情况下3×3的卷积对应的视觉信息就是3×3的大小,如果另外一个分支使用2的下采样,特征会变得原来1/2,3×3卷积看到大小就是6×6。通过这种方法,只需要改变下采样的参数,就能帮助我们实现捕捉不同大小特征的目的。最终,我们利用上采操作,使下采样造成的不同大小分辨率的特征变成同样大小,便于把它们连接起来。下采样和上采样不需要参数,运算快。这种做法取得了良好的实验效果。

论文相关代码在: 

https://github.com/bearpaw/PyraNet.



另外一个问题,最近大家提出多种网络结构化,如ResNet,DenseNet,ResNext,甚至像GoogleNet和我们设计的PolyNet,这些网络具有一个共性:它有多个分支。有一个问题是,对应于有多个分支的网络结构情况下,常用的参数初始化方法的基本假设是不成立的。如果用这样的参数初始化会带来一些问题。为了解决这个问题,我们进行严格的理论推导,并给出最终答案。推导发现与输入、输出分支数和参数初始化是相关的。在图像分类以及人体姿态识别上都发现使用我们的方法以后会得到更好的效果。



另外就是人的行为识别。行为识别和很多做视频任务里很重要的信息是运动。



如果要得到关于运动的信息,我们发现有一种很简单的操作,就是先得到两帧图像特征,把两个特征点对点(element-wise)相减。这个相减是时间上的梯度,空间上的梯度可以用很简单的操作得到。这样简单的操作它背后来源于我们数学的推导,数学的推导告诉我们这样特征的表示和光流(optical flow)是正交的,正交意味着它们是互补的,这种特征会拥有原来optical flow没有的信息。实验发现使用我们这种特征而不使用optical flow,能达到的相似的准确率,但在速度上可以快很多。另外,由于特征是由它互补的,特征结合以后可以进一步改善准确率。论文相关代码会在近期提供。



总结一下,结构化深度学习在很多视觉任务中都是有效的。结构化信息通常是来源于观察,来源于对问题的理解。视觉领域的研究者对特定问题的观察和理解可以联合深度学习一起推进整个视觉的进步。另外,我们可以对输出和特征进行结构化的建模。而深度学习这样一个工具提供的能力是将结构的建模和特征的学习进行联合学习,增大最终解决任务的能力

最后,广而告之: 将在ECCV2018举办首届WIDER Face and Pedestrian 竞赛和workshop。该竞赛包含以下三个子任务:

WIDER Face:探索人脸检测的新方法,

WIDER Pedestrian:探索监控和自动驾驶环境下行人检测的新方法,

WIDER Person Search:一个全新的从192部电影中人物检索的挑战。

每个任务的获胜团队将获得现金奖励和亚马逊服务器机时奖励。 竞赛中获胜并具有创新方法的团队将获邀参加ECCV workshop并共同撰写竞赛报告文章。

关于挑战赛的更多信息请见网站:

http://www.wider-challenge.org/ 或联系 wider-challenge@ie.cuhk.edu.hk。

文中提到的参考文献百度网盘链接:

https://pan.baidu.com/s/1hmclXnibvm_kUIgJTi_Zyw 密码: n9bi

高质量原创内容平台,邀请学术界、工业界一线专家撰稿,致力于推送人工智能与深度学习最新技术、产品和活动信息。

入门结构化建模图像理解
1
相关数据
计算机视觉技术
Computer Vision

计算机视觉(CV)是指机器感知环境的能力。这一技术类别中的经典任务有图像形成、图像处理、图像提取和图像的三维推理。目标识别和面部识别也是很重要的研究领域。

条件随机场技术
Conditional random field

条件随机场(conditional random field,简称 CRF),是一种鉴别式机率模型,是随机场的一种,常用于标注或分析序列资料,如自然语言文字或是生物序列。 如同马尔可夫随机场,条件随机场为无向性之图模型,图中的顶点代表随机变量,顶点间的连线代表随机变量间的相依关系,在条件随机场当中,随机变量 Y 的分布为条件机率,给定的观察值则为随机变量 X。原则上,条件随机场的图模型布局是可以任意给定的,一般常用的布局是链接式的架构,链接式架构不论在训练(training)、推论(inference)、或是解码(decoding)上,都存在有效率的算法可供演算。 条件随机场跟隐马尔可夫模型常被一起提及,条件随机场对于输入和输出的机率分布,没有如隐马尔可夫模型那般强烈的假设存在。 线性链条件随机场应用于标注问题是由Lafferty等人与2001年提出的。

神经元技术
neurons

(人工)神经元是一个类比于生物神经元的数学计算模型,是神经网络的基本组成单元。 对于生物神经网络,每个神经元与其他神经元相连,当它“兴奋”时会向相连的神经元发送化学物质,从而改变这些神经元的电位;神经元的“兴奋”由其电位决定,当它的电位超过一个“阈值”(threshold)便会被激活,亦即“兴奋”。 目前最常见的神经元模型是基于1943年 Warren McCulloch 和 Walter Pitts提出的“M-P 神经元模型”。 在这个模型中,神经元通过带权重的连接接处理来自n个其他神经元的输入信号,其总输入值将与神经元的阈值进行比较,最后通过“激活函数”(activation function)产生神经元的输出。

参数技术
parameter

在数学和统计学裡,参数(英语:parameter)是使用通用变量来建立函数和变量之间关系(当这种关系很难用方程来阐述时)的一个数量。

自动驾驶技术
self-driving

从 20 世纪 80 年代首次成功演示以来(Dickmanns & Mysliwetz (1992); Dickmanns & Graefe (1988); Thorpe et al. (1988)),自动驾驶汽车领域已经取得了巨大进展。尽管有了这些进展,但在任意复杂环境中实现完全自动驾驶导航仍被认为还需要数十年的发展。原因有两个:首先,在复杂的动态环境中运行的自动驾驶系统需要人工智能归纳不可预测的情境,从而进行实时推论。第二,信息性决策需要准确的感知,目前大部分已有的计算机视觉系统有一定的错误率,这是自动驾驶导航所无法接受的。

深度学习技术
Deep learning

深度学习(deep learning)是机器学习的分支,是一种试图使用包含复杂结构或由多重非线性变换构成的多个处理层对数据进行高层抽象的算法。 深度学习是机器学习中一种基于对数据进行表征学习的算法,至今已有数种深度学习框架,如卷积神经网络和深度置信网络和递归神经网络等已被应用在计算机视觉、语音识别、自然语言处理、音频识别与生物信息学等领域并获取了极好的效果。

准确率技术
Accuracy

分类模型的正确预测所占的比例。在多类别分类中,准确率的定义为:正确的预测数/样本总数。 在二元分类中,准确率的定义为:(真正例数+真负例数)/样本总数