在实际生活中机器人需要与环境进行交互以执行多种任务,而每个任务都需要进行合理的定位。一种简单的定位检测方法是标注一个图像功能区域数据集,利用这个数据集训练一个深度分类模型,通过模型检测图像中所有可能的潜在功能区域。然而,标注一个这样的大规模数据集是相当耗时的。
我们发现,功能区域通常与周围物体存在联系,因此本文提出了利用物体的上下文信息作为有效先验的方法,使用已有的目标检测数据集,在不需要额外增加标注数据的同时,提高功能区域检测模型的性能。在具体实现中本文定义了一个双流网络,该网络结合了与物体相关的特征和与功能区域相关的特征来进行知识迁移融合,从而进行功能区域检测。整个网络结构是端到端的系统,并且可以简单的利用现有的目标检测框架实现。本文通过实验证明该网络与现有的方法相比,在精度和召回率上都有接近20%的提升。
课题背景
对于一个认知机器人而言,在实际执行操作之前首先需要找到其所期望操作的区域。例如,当机器人想要去打开一个抽屉时,它需要根据抽屉手柄的形状和位置来判断它究竟是否需要转动手柄抓取以及应该在哪里执行这一动作。给定输入为场景图像,这种操作区域的定位和识别问题可以被定义为功能区检测问题[24]。有了功能区域的认知后,在各类任务中,机器人可以用许多不同的行为与人类和物体进行交互。由于真实世界中的环境外观变化的多样性,这类任务是非常具有挑战性的。例如,机器人要实现“球形物体抓握”的功能,那么目标区域可以是门、抽屉的把手,也可以是其他有着球体形状的物体。
因为深度学习在目标分类和检测领域已经取得了突破性进展[9][10][19],因此解决功能区域检测问题的一个简单方法是从图像中提取一些潜在可能的区域,通过深层卷积网络对这些区域的功能性进行分类[24]。不过这样做有两大缺陷:首先,这种方法只利用了图像中某区域的特征而忽视了这一区域的上下文信息,而上下文信息对于由物体遮挡和视角变化引起的外观变化是十分重要的(如图1)。例如,水龙头的阀门通常位于水龙头的底部附近,而检测更大面积的水龙头可以帮助定位到水龙头的阀门,否则我们很难检测到阀门。第二点则是因为深度学习需要大量的训练数据,而去标注得到一个庞大的功能区域检测的数据集显然是非常费力并且代价高昂的。
通常,更合理地利用上下文或者先验知识将会有助于解决功能区域检测问题。在实际情况中,功能区域检测问题并不是一个独立的问题,它与目标检测问题不同却又高度相关。例如,如果一个机器人检测到一扇门,那么很有可能在门中的某个区域能够让机器人进行推/拉的动作。因此,图像中某一区域或周围区域的物体信息可以用来作为功能区域推断的先验知识。另外,物体分类和功能性推断也共享一些相似的图像特征,例如图像边缘和形状。因此在给定大量的现有物体数据集的条件下,我们可以将从这些数据集学习到的知识迁移到新的系统,这可以减少新系统对于功能区域训练数据的需求。
为了达到这个目的,本文提出了一种双流网络结构给来解决该功能性域检测问题。我们首先使用一个目标检测的数据集[12]训练其中一个分支网络,该网络学习与物体相关的表示方式,而另一个网络分支则用来学习功能性相关的特征表示。在此之后,我们将这两个分支网络学习到的特征融合在一起进行功能性的推断。
本文工作有以下几个贡献:1)在解决功能区域检测问题时利用物体信息作为先验知识,提高检测效果;2)提出了一种新的双流网络,通过将物体相关与功能性相关的特征融合在
图1:利用物体的上下文信息促进功能区域检测
一起,更加有效地解决这类问题。实验结果表明,在功能区域检测任务中使用物体特征是一种有效的方法,同时与现有的方法相比,本文的方法也取得了更优的效果。
相关工作
A.物体属性分类
判断一个区域功能性的问题与物体属性分类的问题类似,后者已经在计算机视觉和机器人学中得到了广泛的研究。例如在面部分析[11]和人类特征分析[14]中,算法对“性别”,“种族”和“发型”等属性进行研究分析。其他的例如为研究时尚衣着搭配进行布料颜色和风格的分析[25]等属性分析任务也是比较热门的研究方向。而在机器人领域中,利用RGB-D图像来进行物体颜色,形状和材质属性的识别也十分的广泛[25]。
而物体的“可供性(affordance)”也是一种关键的属性,这种属性是本文研究的重点。物体的“可供性”是指一个物理对象与人或其他智能体之间通过交互而产生的一种联系[8]。Pieropan等人[17]根据这种联系来研究物体分类,并借助人的示范来学习对象的可供性,例如“可读”和“可饮用”就是一种“可供性”最近,Myers等人[15]使用手工制作的几何特征检测RGB-D图像中工具部件的可供性[20]。本文研究的问题与这些问题有些关联但不完全相同,因为本文研究的问题的首要核心在于区域而非是物体。本文研究的算法需要检测出可能的功能区域,这个区域既有可能是一个物体,也有可能是物体的一小部分。这个问题更具挑战性,因为物体的局部的特征可能不像整个物体那样具有区分性。
B.目标检测
目标检测在图像语义检测领域中受到了广泛的研究。早期的算法通常尝试使用一个滑窗在一整幅图像上进行滑动并对每个区域进行分类。为了处理物体的尺度变化,图像金字塔(imagepyramid)模型常被用来处理原始的输入图像。基于部分区域可变的模型(DPM)[6]也是一种经典的目标检测方法,其中每个物体对象被表示为以图画结构排列而成的成分的集合。每个成分都通过手工制作的特征进行描述,经典的方法有HOG[4]等。目前,深度学习技术通过学习高级的抽象特征,在图像识别问题方面已经取得了实质性进展。有许多基于深度学习的目标检测算法取得了不错的效果,比如fasterR-CNN[19],YOLO[18]和SSD算法[13]。这些方法的主要思想是使用深度卷积神经网络(CNN)从给定的原始图像和相应的标签中学习物体对象的表示,而不是去学习手工设计的特征表示。本文以基于深度学习的目标检测框架为基本结构,预测出场景图像中的功能区域。
图2:功能本体论[24]
C.功能区域检测
文献[24]提出了功能区域检测这一问题,其给出了一个专业的定义,并提供了一批数据集。这批数据集包括室内场景的静态图像以及图像上所有的功能区域。为了检测出图像中的功能区域,作者提出了一个两阶段的方法[24]。在第一阶段,系统使用选择性搜索的视觉注意力方法[21]来找出一组可能成为功能区域的边界框。其中,选择性搜索方法主要在颜色,强度和边缘信息等各种视觉特征上实现边界框的生成。在第二阶段中,第一阶段寻找出的边界框所对应的图像区域则成为了一个深度网络的输入,网络的输出是该区域属于某类特定功能区域的概率。这个深度网络将首先在一个大规模通用图像数据集上进行训练,训练完之后再利用功能区域数据集进行微调。而本文制定了一个新的更容易实现和训练的端到端的双流网络结构,该网络能够分别提取物体相关的特征和功能相关的特征并对特征进行融合,融合后的特征传入预测网络中得到功能区域的边界框以及对应的功能类别。实验表明本文提出的方法在各个性能指标上都有显著的提升。
方法
A.问题定义
对于功能区域检测问题,我们遵循文献[24]的设定:假设机器人采集静态的室内图像作为输入,输出一系列矩形框,每一个矩形框都包括了一个目标区域并对应着一个功能标签。在定义功能本体论(functionalityontolog)上,前人已经有了一些工作:Worgotter等人[22]根据手跟物体的关系将操作的动作划分为一些基本类型。文献[24]的作者进一步研究了一个可以在室内环境中操作的常用动作集合,并且提出了机器人功能本体集合,如图2所示。
其中,机器人的功能本体论一般可以分为3个类型,分别为:“家具、设备、墙壁的一
图3:fasterR-CNN的组成结构。利用不用尺度和方向比率的anchorbox,模型可以在一次前向传播中检测出不同尺度大小的功能区域
小部分”,“物体”和“家具”三种。对于“家具、设备、墙壁的一小部分”这种类型,有两种主要的功能,分别是与设备把手相关的开关的功能(open),以及与墙壁按钮相关的开关功能(turnon/off)。这两个主要功能还可以进行更加细致的划分,比如依据把手的类型可以将开关功能分为球形把手的“旋转开关”和条形把手的“推拉开关”。依此类推,我们最终可以归纳出11种功能。因此,问题的定义可以描述为:给定一张静态场景图像,识别出图像中可能出现的11种功能区域。为了方便可视化,图2对于每种功能都给出了一个特定的符号。
B.端到端的多尺度功能区域检测
根据III-A节的定义,一个功能区域既可能是一个物体也有可能是物体的一部分。这意味着功能区域在图中大小不一。这种区域尺度的不确定性对算法更具有挑战性。早期的方法是在图像金字塔中使用滑窗进行遍历。然而,这在某些应用的场景中效果并不明显。FasterR-CNN目标检测框架[19]对于解决这种问题则更加有效。
图3解释了fasterR-CNN在目标检测中的处理流程。通常,fasterR-CNN分为两个模块。第一个模块将图像作为输入,生成感兴趣区域(regionofinterest)。第二个模块从感兴趣区域(regionofinterest)中提取更深层次的特征,进一步推断目标类别和位置。由于一些小区域可能会在第一阶段丢失,因此需要在不同尺度下对功能区域进行检测。
第一个模块被称为区域提议网络(RPN,RegionProposalNetwork),它可以通过全卷积网络来实现。RPN首先通过特征提取网络生成特征图,特征图的每一个网格点上的特征向量再传入一个小的网络中,得到预测的矩形框和对应的分数。整个流程如图3所示,RPN的目标输出为矩形框的坐标和对应矩形框的分数(更高的分数意味着这个矩形框包含功能区域的可能性越大)。这里的坐标用不同尺度和方向比率的anchorbox来表示。这意味着特征图中的一个网格点的特征向量(特征的大小是固定的)表示着不同大小的区域。输出的候选框可以从自身的特征生成或者根据额外的周围的信息生成。通过设置不同尺度和方向比率的anchorboxes,在不同尺度下网络可以充分利用不同区域的上下文信息来定位区域,最终得到对应的感兴趣区域。
第二个模块由另外一个深度网络组成,这个深度网络由若干卷积层组成,这些卷积层可以进行更深层次的特征提取。这个深度网络首先根据感兴趣的区域,从特征提取网络提取到的特征中抽选出该区域的特征作为网络的输入,然后使用卷积神经网络进行特征提取获得新的特征,最后进行候选框位置的进一步回归微调与该候选框对应区域的功能分类。
这两个模块可以结合起来进行端到端的训练。通过这两个步骤之后,每一类(即功能区域)都可能获得一个或者多个矩形框。每一类中的矩形框相互之间很可能存在高度重合的情形。为了减少这种冗余,本文采用非极大值抑制(NMS)[16]的方法进行后处理。
总之,本文使用RPN来生成不用尺度的候选框并使用fasterR-CNN进行功能区域检测。然而,因为没有对物体进行标注,这种方法不能利用周围物体的信息,特别是在第二个模块中这种情况更加明显。为了发挥物体信息的优势,本文使用已有的目标检测数据集训练一个深度神经网络并使用功能区域数据集进行微调。实验证明这种方法可以作为一个有效的基准实验。但是由于功能区域数据集的数量有限,这种方法很容易造成过拟合的情形,同时网络中的物体信息会在微调的过程中消失。为了解决这个问题,本文提出了一种双流网络,这个网络即使用了与物体相关的特征,也利用了功能区域相关的特征,这一部分将在第III-C节中介绍。
C.融合物体信息的双流网络结构
图4展示了本文提出的双流网络。将输入图像I传入两个网络,这两个网络分别称之为“功能CNN(CNNfunc)”和“物体CNN”(CNNobj),CNNfunc和CNNobj具有相同的结构(但是两个网络的参数是不同的)。这两个网络将分别提取功能相关的特征图和物体相关的特征图。对于功能区域的特征,我们利用第III-B节介绍的RPN生成边界框的集合,接着可以用这些边界框从特征图中选出对应的特征,再将这些特征通过ROI池化操作[19]得到固定大小的特征。在选择物体相关的特征时,首先利用一个固定的缩放系数来扩大边界框的大小,该扩大的边界框从物体相关的特征图中选出与物体相关的特征,再通过ROI池化操作得到同样固定大小的特征。最后,利用下面的公式将功能相关的特征ffunc和fobj物体相关的特征融合在一起:
ffuesd=入ffunc+(1-入)fobj
其中表示两个特征的重要性。在实验中设为0.5。融合的特征ffuesd传入另一个深度网络CNNpred(ffuesd)中。CNNpred(ffuesd)最终回归预测出功能区域的位置以及对应的功能。
D物体知识迁移的训练
为了利用已有的目标检测数据集和迁移物体知识,我们将双流网络的训练分为两个阶段。在第一阶段,我们需要对网络参数进行初始化工作。我们使用已有的目标检测数据集,按照fasterR-CNN的训练方式[19]训练一个目标检测网络,如图3所示。如文献[19]所述,整个训练过程通过反向传导算法和随机梯度下降法[2]进行端到端的训练。训练好的初始化网络的参数即可作为双流网络的初始化参数,参数的具体设置如下:RPN特征提取网络中参数作为双流网络中CNNfunc和CNNobj的参数,而图3中预测网络的参数作为双流网络中CNNpred的参数。其中物体的候选框是对由上半部分的网络预测得到的候选框进行放大得到的。提取到的物体特征和功能特征进行融合,并传入预测网络进行功能区域的推断。
在第二阶段,为了保护第一阶段学习到的物体知识,我们固定的CNNobj参数,在用功能区域数据集训练时只微调双流网络中其余的参数。与训练fasterR-CNN相同,双流网络中有两个损失函数。
第一个损失函数为RPN网络的损失函数,这个损失函数是二分类损失函数(判断候选区域是否为功能区域)和回归损失函数(预测区域和真实区域边界框的欧氏距离)的结合。
图4:双流网络结构。网络的上半部分提取功能相关的特征,下半部分提取物体相关的特征。
第二个损失函数是最终结果的损失函数,除了分类情形为多分类而非二分类外,整个损失函数与RPN网络的损失函数一样。这两个损失函数都是可微的,自然式(1)也是可微的。同时,对于候选坐标的ROI池化操作也是可微的[3]。因此,我们可以使用随机梯度下降法来训练整个模型。
结果
A.实现细节
本次实验使用深度学习框架TensorFlow来实现本文提出的网络结构[1]。基于ResNet-101[7]在图像识别中的高效表现,我们采用了ResNet-101[7]架构作为网络中的基本模块。CNNfunc和CNNobj都包括了[7]中的前四个残差模块,(即conv1,conv2_x,conv3_x和conv4_x,总共91个卷积层),CNNpred包括了ResNet-101中的最后一个残差模块(即conv5_x层)。最后的结果通过两个全连接层得出。实验首先使用COCO数据集训练一个fasterR-CNN模型[19],其次将模型的参数作为CNNfunc、CNNobj和CNNpred的初始化参数。然后我们固定CNNobj的参数,再利用功能区域数据集微调双流网络。实验中训练的学习率设为0.0003,批的大小设为1,anchorbox的大小设为0.125,0.2,0.5,1,2,方向比率(aspectratio)为0.5,1,2。非极大值抑制(NMS)的重叠度(IoU,IntersectionoverUnion)设置为0.7。
图5:coco数据集的样本示例
B.数据集和评价指标
本次实验利用[24]提供的功能区域数据集对模型进行训练和测试。该数据集包括了约600张从SUN数据集[23]中得到的厨房场景图像,图7展示了数据集中的一些样本。整个数据集有近10000个标注的区域样本。这些样本的统计分布如图6所示。为了对我们的模型进行评估,本次实验采用了与[19]相同的评价指标,将训练集90%的数据作为训练数据,剩下的作为测试数据。
图6:数据集中不同功能区域数量的统计直方图
对于物体网络,我们使用COCO数据集[12]学习与物体相关的特征。COCO数据集中包含了91种常见的物体类别,例如人,车,桌子,瓶子,碗等等。这些图像均来源于网络,有着多种多样的场景,如厨房,街道,公园等。每一张图像包括了各种类别物体的矩形框。COCO数据集的图例样式如图5所示。整个训练数据集共包含80000张图像。
本次实验与[24]一样使用精度,召回率和F1值作为算法的评价指标。一个正确的预测结果应符合以下两点要求:(1)正确预测出功能类型;(2)预测的矩形框和真实标签的矩形框的IoU值要大于0.5。精度,召回率和F1值的计算如下所示:
在这里tp、fn分别表示正确的正样本和错误的负样本的数量。
C.基准方法(baselineMethods)
为了证明本文提出方法的有效性,本实验采用下面的方法作为评价基准:
1.选择搜索(selectivesearch)+CNN分类[24]。该方法首先利用选择搜索[21]生成候选框。生成候选框之后,将每个候选框选中的图像块作为输入传入CNN并预测出该候选框的功能类别。该CNN首先使用ImageNet图像分类数据集[5]进行预训练,然后用功能区域数据集进行微调。本实验使用原文章[24]的实验结果作为本文的基准实验结果。因为[24]采用了“困难样本挖掘”(“hardsamplemining”)的方法来调整CNN模型,所以其精度和召回率在每轮调整训练的时候都不同,我们将[24]中的3轮调整训练的结果都作为本次实验的基准结果。
2.FasterR-CNN[19]。在训练fasterR-CNN过程中,首先用COCO数据集进行预训练,然后用功能区域检测数据集进行微调。为了保证实验的公平性,这个基准方法也使用ResNet-101[7]作为特征提取模块,预测网络跟本文提出方法的网络结构一致,训练的超参数跟[7]的设置一致。本文提出的方法跟fasterR-CNN的主要不同点在于:(1)在功能区域预测时保留了物体相关的特征;(2)anchorbox的尺度和方向比率更多。
D.与基准方法的量化比较
表格1展示了本文提出的方法和其他基准方法的精度、召回率和F1值。通过对比可知fasterR-CNN在性能上比[24]使用的选择搜索+CNN分类的方法要更好。这是因为fasterR-CNN是一种结合特征学习和区域检测的端到端的方法,多尺度的anchorboxes能够处理多种尺度的区域。表格中的结果说明本文提出的方法要比已有的方法有更好的性能。本文的方法是在fasterR-CNN的基础上建立的,因此结果表明了融合物体信息并且增加更多类型的anchorbox是行之有效的。
E.控制变量分析(AblativeAnalysis)
为了进一步分析本文提出的方法的各个模块的效果,本部分实验将对模型进行不同的设置并进行比较。表格2展示了该实验的测试结果。在表格2中,模型A移除了双流网络中的其中一支网络,并且将anchorbox的种类设置与[19]一致,所以模型A与原始的fasterR-CNN一致。模型B保持与[19]一致的anchorbox的设置,但增加了能够提取物体相关特征的网络。从表格中可以看出精度从模型A的38.04%提升到模型B的52.29%。这一结果表明了物体知识对预测功能区域的有效性。模型C和模型D增加了anchorbox在尺度和方向比率上的多样性,这个改进同样提高了模型的性能,可以看出模型D在增加了物体知识之后的性能要比没有增加的模型C好。
F.量化分析
为了可视化算法的性能,图7展示了在一些新的场景中算法对功能区域的预测结果。从图中可以看出,算法能够预测出不同大小的功能区域,甚至能够预测出比较小的抽屉把柄区域并正确的标识为“旋转抓取并打开”。然而从图中也能发现许多缺失的区域,比如图7(b)的煤气炉开关。经分析,这种现象出现的可能原因有以下两点:(1)在使用CNN做特征提取的时候图像中的细节可能会因为下采样层导致特征丢失。(2)后期使用的非极大值抑制处理可能会把重叠率较高的矩形框融合在一起。
图7:本文方法在[24]提供的数据集上的实验结果
为了进一步了解本文方法的性能提升的程度,实验还利用预测区域对应的预测功能类别与该区域的真实功能类别求出混淆矩阵,并对该矩阵进行可视化,如图8所示。因为本问题不是一个分类问题,我们只要看要预测的区域与哪一个标注的区域重叠度最高。所以为了获得预测区域的真实标签,我们将预测的区域与真实标注区域重叠度大于0.5的区域对应的标签作为该预测区域的真实标签,如果该区域跟每个标签的重叠都小于0.5,那么就将预测区域标为“背景”这一类。通过对混淆矩阵的观察,可以发现很多属于背景的区域被预测成为功能区域。对实验结果进行分析后发现,错误的结果中存在着错误的正样本的情形,但也找到了一些区域预测是正确的但是却缺失了真实的标签的情况。部分样例如图9所示。从中可以看到有些功能区域分布在不同的视角上,有些分布在一个密集的场景中,这对标注员来说也是一个很大的挑战,因此可能存在漏标的情况。
图8:测试结果的混淆矩阵,垂直轴表示真实标签,水平轴表示预测结果
图9:一些错误的正样本的示例,在这些示例中模型正确预测出功能区域和对应的功能,但是数据中没有标注
因为训练跟测试数据都是在厨房环境中,所以为了真正说明算法的泛化能力,还需要在不同场景下进行算法测试。我们下载了一批非厨房的室内场景图像,然后利用这些图像测试本文提出的算法。结果如图10所示。虽然预测结果存在一些错误,但是仍可以发现模型能够找到一些新的有意义的区域。比如,枕头没有出现在厨房场景的训练集中,但是算法依然能够正确的将它框出并标注为“夹取并移除”。类似的,算法将床标注为“坐”。这些都证明了模型能够扩展到新的未见过的区域中。
图10:非厨房场景的功能区域检测测试。可以发现算法能够检测到厨房场景中没有见过的功能区域
结论
本文研究了如何结合物体知识来提升功能区域的检测问题,我们定义了一个双流网络结构,该网络结构能够提取和融合物体相关特征和功能相关特征。同时本文中也讨论了处理多尺度区域的问题。实验中将本文提出的方法与基于深度学习的目标检测算法[19]和前人做的功能区域检测算法[24]进行对比,证明了本文算法优越的性能,同时也证明了融合物体相关特征的有效性。实验也进一步证明,本文提出的算法能够处理没有在训练集中见过的场景和物体所包含的功能区域。由于目前fasterR-CNN[18]在通用物体检测上有很好的性能表现,因此本文的算法也采用了fasterR-CNN架构,其他的目标检测架构也可以很方便地应用到本文提出的算法上。本文的非常重要的贡献在于将物体相关的知识应用到功能区域检测问题上。