2015
摘要:
我们提出了一个基于对象的实时SLAM系统,该系统利用了迄今为止最大的对象数据库。我们的方法包括两个主要部分:1)利用对象刚性约束改进地图并找到其真实比例的单目SLAM算法,以及2)基于二进制词包的新型对象识别算法,该算法为500个3D对象的数据库提供实时检测。这两个部分共同工作并相互受益:SLAM算法从对象的观察中积累信息,将对象特征锚定到特定地图地标,并对优化设置约束。同时,将部分或完全位于地图内的对象用作先验来指导识别算法,实现更高的召回率。我们在五个真实环境中评估了我们的建议,显示了相对于其他最先进技术,地图精度和效率的提高。
关键词:物体撞击,物体识别
1.介绍
在环境中移动和操作的机器人需要实时获取关于它的实时信息。这些信息可以从视觉SLAM(同步定位和地图绘制)中获得,视觉SLAM是许多系统的关键组成部分,允许移动机器人在探索周围环境时创建地图,并跟踪自己的位置。计算出的地图提供了丰富的几何信息,可用于可靠的摄像机定位,但对于描述观察到的场景却很差。最近,这些地图增加了对象,允许机器人与场景交互[1、2、3]。
要在SLAM地图中包含对象,必须通过计算刚体3D变换在机器人获取的图像中识别这些对象。一条庞大的研究路线为这个问题提供了解决方案[4、5、6、7],但它已被排除在视觉大满贯之外。
我们在本文中的目标是将目标识别和单目目标SLAM结合在一起,并基于随时间累积信息的新解决方案,以计算更鲁棒的目标姿态,并保持它们始终位于场景中。为了实现这一点,我们提出了一种新的对象识别算法,该算法在基于关键帧的视觉SLAM算法构建地图时提供对象检测。一旦从不同的摄像机位置多次观察到一个对象,这些具有多次观察的对象特征将在地图中作为锚点进行三角化。
锚点提供对象在地图内的位置,并在束调整(BA)优化中设置附加几何约束。由于对象模型是真实比例的,因此锚点提供地图比例的观察。标准BA优化了相机姿态和地图点位置,众所周知,它只能恢复到比例的地图。相比之下,我们的算法优化了摄像机姿态、点以及锚点、对象和比例,因此我们得到了由对象组成的真实比例的地图。
我们的系统依赖于对象识别算法,该算法在单个图像的基础上工作,但利用了视频序列。它利用SLAM收集的信息将先前的观察视为当前图像中对象位置的线索。这允许获得更快和更可重复的检测,从而为SLAM提供更多的几何约束。
我们提出的基于二进制词包的新型对象识别算法[8],使用与对象数量无关的静态视觉词汇表,并使用ORB(面向快速和旋转简短)特征对对象的整体外观进行建模[9]。在类似RANSAC的步骤[10]中,通过引导匹配,从2D到3D对应中找到对象的姿态。我们的系统使用包含多达500个对象的数据库快速可靠地识别3D对象,同时保持SLAM系统的实时约束
我们的工作做出了以下贡献:
1.我们提出了一个完整的视觉SLAM系统,该系统能够在地图中插入真实对象,并通过使用单目相机进行重新观察来改进其三维姿态。
2.我们展示了在单个对象数据库中存储数百个综合3D模型的可行性,该数据库由具有直接和反向索引的二进制字包组成。我们还提出了一种在验证阶段对假设对应进行采样的新技术。
3.我们提出了一种新的SLAM后端,该后端将对象提供的几何信息包括到地图优化中,以提高地图、对象及其每个步骤的相对比例的准确性。
4.我们在真实和独立的数据集中给出结果,并与其他系统进行比较。我们的结果证明,通过包含对象,我们的单目系统可以检索场景的真实比例,并获得比PTAM[11]和RGB-D SLAM[12]更准确的结果,同时保持实时性能(跟踪需要7.6毫秒,识别大约每幅图像200毫秒)。我们的结果还表明,该系统对于偶尔的错误检测非常鲁棒,避免了地图损坏。
论文的主要内容如下:第2节介绍了目标SLAM和目标识别的相关工作。第3节概述了我们的完整系统。第4节详细介绍了视觉SLAM方法和对象插入,第5节详细介绍对象识别算法。第6节展示了我们系统的实验评估,第7节总结了本文。
2.相关的工作
对象增强映射之前已经通过基于扩展卡尔曼滤波器的SLAM方法进行了处理[2,13]。然而,目前最先进的单目SLAM方法是基于关键帧的,这些关键帧仅使用一些选定的视频帧创建贴图。正如Strasdat等人[14]所证明的,这些系统能够产生比基于滤波器的方法更好的结果,因为它们处理大量点,并以帧速率实时生成更大的精确稀疏点图。
Castle等人[3]的工作是第一批将对象识别与基于单目关键帧的SLAM相结合的工作之一。在两帧中检测到一个对象后,他们计算其在地图中的姿态。这些对象显示为增强现实,但与我们的方法不同,它们不会将对象添加到优化中。他们建立了一个由SIFT特征描述的37幅平面图片的数据库。与此系统相反,仅限于平面对象,我们可以处理具有任意3D形状的对象。
Bao等人[15,16]首先提出了Montion的语义结构(SSfM),这是一个联合优化摄像机、点和对象的框架。SLAM方法处理信息来自视频流的事实,因此点和关键帧的图形是增量的,而SSfM一次处理所有帧。此外,在[15]中,识别和重建步骤是分离和独立的。然而,在我们的算法中,识别和重建同时发生,因为SLAM和目标检测是完全集成的。[15]中的识别方法检索对象的边界框,而我们的对象检测器检索6自由度姿态。
同样,Fioraio等人[17]提出了一种SLAM系统,该系统在识别出具有足够可信度的3D对象时,将其添加到地图中,并通过束调整与地图一起优化其姿态。他们建立了一个由7个对象组成的数据库,这些对象由使用RGB-D相机在多个尺度上采集的3D特征描述,为每个尺度创建独立索引。识别是通过找到由基于RANSAC的算法过滤的3D到3D假定对应来执行的。尽管他们能够用几个对象构建房间大小的地图,但他们的系统不能实时运行。相比之下,我们的系统通过使用二进制2D特性和可以同时处理所有关键点尺度的单一索引结构,提高了可伸缩性和执行时间。
Salas Moreno等人[1]提出了一种结合RGB-D地图构建和对象识别的最新视觉SLAM系统。它们用一个图来表示地图,其中节点存储摄像机或对象的位置,并在优化整个图时增强所有这些对象的姿态。使用KinectFusion[18]预先建立对象数据库,用点对特征描述其几何结构[19]。这些由哈希表索引,并通过计算大量候选刚体变换来执行识别,这些候选刚体变换在霍夫空间中发出投票。Hough投票是一种使用RGB-D数据进行对象检测的流行技术[20、21、22],但其可扩展性不清楚。事实上,Salas Moreno等人[1]通过利用GPU计算实现了实时执行,但他们只显示了4个对象的结果。在我们的工作中,我们展示了在单目相机的CPU上计算的多达500个对象的高频结果。
关于对象识别,我们的建议遵循的研究路线是在图像和对象模型之间寻找局部特征的匹配。Sivic和Zisserman[23]提出了一个视觉词汇表,用于匹配大型集合中的2D图像。他们提出用k均值聚类图像特征的描述符空间,以量化特征,并用数字向量表示图像,表示为文字包,从而实现快速比较。另一方面,Lowe[24]推广了一种基于查询和模型2D图像之间直接匹配SIFT特征的方法。匹配特征需要计算大型特征集之间的描述符距离,这可能非常耗时。为了加快这一过程,他提出了最佳箱优先技术,用k-d树寻找近似邻居。视觉词汇和k-d树后来被推广用于实时匹配大型图像集。Nister&Stewenius[25]提出了一种基于MSER(最大稳定极值区域)[26]和SIFT特征的分层视觉词汇树,利用该特征可以对40000张图像数据集进行快速检测。Muja&Lowe[27]提出了一种自动配置一组k-d树的方法,以最佳拟合要匹配的特征数据。
为了从单个图像中完全恢复对象的姿态,需要将3D信息合并到模型中。Gordon&Lowe[28]开始创建3D点云模型,通过应用运动技术恢复对象结构。然后,可以通过从2D到3D对应中解决透视-n问题[10]来检索姿势。这是最近许多物体识别方法的基础[5,29,7,6,30]。例如,Collet等人[5]为79个对象构建3D模型,并使用对象的训练图像构建一组k-d树,以索引其SIFT特征进行直接匹配。
,图1:系统概述:每个视频帧都由SLAM跟踪线程处理,以定位摄像机,并确定是否向地图添加了新的关键帧。对象识别应用于尽可能多的帧,利用先前看到的对象的位置信息。如果识别成功,则存储对对象的观察,直到有足够的几何信息。此时,对象实例被三角化并插入到地图中,与锚定到对象点的新地图点以及观察它们的帧子集一起,生成语义关键帧。此操作允许查找地图比例并将对象几何约束包括到地图优化中。
树的不同离散化级别允许以几种方式计算特征对应。例如,Xiao等人[30]以分层方式离散化SIFT描述符空间,以创建3级树。它们显示了在所有级别上计算特征匹配的好处,而不仅仅是最精细的匹配,从而获得更多的假定对应,从而提高了对象识别率。然而,过多的对应可能会使姿态恢复阶段负担过重,导致执行时间过长。相反,Sattler等人[29]的方法仅从位于同一视觉单词中的特征中检索对应关系,但由于离散化错误,这可能会丢失不共享视觉单词的正确点对。在我们的工作中,我们使用直接索引[8]在粗离散化级别计算位于同一树节点的特征之间的对应关系。这在对应点的数量和执行时间之间提供了平衡的权衡。所有这些工作都使用SIFT或SURF特征,这些特征用64或128个浮点值的向量描述,并使用与对象建模相同的图像训练匹配树,这迫使它们在将新对象添加到数据库时重新创建树。Rublee等人[9]提出了二进制和紧凑的ORB特征(256位长度描述符),并提供了与SIFT和SURF[31]相似的区别。此外,从独立数据创建的不需要重建的二进制词的视觉词汇表适合索引大量图像集合[8]。在这项工作中,我们展示了单一独立的ORB特征词汇表的可行性,以实时(约200 ms\/图像)识别具有大型数据库(最多500个对象)的3D对象
3.系统概述
我们的系统构建了一个由摄像机姿态、点和对象组成的3D地图,如图1所示。我们利用并行跟踪和映射(PTAM)算法[11]的前端来跟踪摄像机运动,并添加了两个新的并行过程,以在地图中执行对象识别和对象插入。我们的系统还包括一个基于g2o[32]的完全重新设计的后端,该后端对关键帧姿态、贴图点、对象和贴图比例执行关节SLAM优化。
SLAM跟踪处理所有视频帧,以在未知地图比例的每个时间步长计算摄像机的姿态。当帧提供独特的几何信息时,它将与新的贴图点一起作为关键帧插入到贴图中。
同时,在尽可能多的帧上执行对象识别,以搜索存储在对象模型数据库中的已知对象。如果存在由SLAM地图和先前识别给出的对象位置的可用信息,则利用该信息来指导当前图像中的检测。成功的检测提供了对对象实例的观察。无论使用何种识别算法,从单个图像获得的检测可能是虚假的或不准确的。为了避免这些问题,我们不是在第一次识别后将对象放置在地图中,而是在累积了随时间变化的一致观察后将其插入SLAM地图中。所有观测给出的信息用于三角测量目标点,从而确定SLAM地图内目标的姿态。生成的点作为锚点插入三维地图中,观察它们的相机作为语义关键帧。选择这些关键帧不是因为几何标准,而是因为它们包含相关的语义信息。不提供视差或区别几何信息的观察帧被丢弃。每个三角测量都为我们提供了地图比例的估计,我们使用它来全局优化它。
4.对象感知的SLAM
4.1.地图中的对象
插入我们的算法产生的单个图像中的对象识别用于将这些对象插入SLAM地图中。为了稳妥地放置它们,而不是依赖于单个检测,我们累积了几个,直到我们有足够的几何信息来计算稳妥的3D姿态。该过程如图2所示,并在下面进行说明。
第5节中描述的对象检测器在尽可能多的帧中搜索对象,而SLAM使用它们跟踪摄像机,因此姿势TWCi=?RWCi |s tWCi?每个摄像机i的位置是已知的,具有初始未知的地图比例尺s。对象模型O的成功识别返回从相机到对象帧的变换TCiO。由于同一对象模型的多个物理实例可能存在,我们检查此检测属于哪个实例。我们通过计算全局姿态T的假设来实现∗WO=世界中检测到的对象的TWCi TCiO,并检查与先前观察到的或已经在地图中的同一模型的其他对象的重叠。请注意,仅当我们已经对地图比例s进行了估计时,此操作才有效。否则,我们假设同一模型的连续检测来自同一真实对象。之后,我们确定对象O的检测是模型O的第k个实例Ok的观察。如果与之前观察到的任何对象没有重叠,我们只创建一个新实例。
观察BiOk=hTWCi、TCiOk、XO、Uii产生模型O、XO的一些3D点与相机Ci、Ui拍摄的图像的2D点之间的一组对应关系。对于每个通信hxO,uii∈ hXO,Uii,如果相对于同一对象实例的xO的其余观察的视差不够显著,则丢弃对应的对语义关键帧(红色摄影机)、对象及其点插入到地图中,更新其比例。对象观察不提供视差或新点,完全忽略。
累积对象实例的观察,直到以下条件成立:1)从两个不同位置观察到至少5个不同的对象点xO,2)摄像机之间的视差至少为3度,以及3)未显示对齐和良好的几何条件。在世界帧(xW)中对点进行三角剖分,并将对hxO、xWi作为锚定点插入地图中。提供视差的帧也作为语义关键帧插入。
锚点在对象SLAM中起决定性作用,因为它们提供了对象在地图中的位置,并在BA中设置了额外的几何约束,从而实现地图比例估计。因此,锚点与地图点的处理方式不同:它们不会被PTAM的维护算法丢弃,仅使用新的对象观察更新,并通过在目标关键帧中投影锚点周围定义的3×3像素区域中使用匹配互相关在地图的关键帧之间传播。从语义关键帧中提取用于相关性的面片并进行扭曲,以便通过单应性补偿缩放、旋转和缩短。
4.2.目标SLAM优化
在基于标准关键帧的SLAM中,通过关节束调整(BA)估计点XW的稀疏映射和选定关键帧TWCi的相机位置。图4(a)显示了表示估计问题结构的贝叶斯网络
5.具有大型数据库的3D对象识别
对象识别需要从一组独立的图像和离线创建的模型数据库中构建视觉词汇表。然后,在线实时执行识别过程,对在位置TWCi处拍摄的查询图像执行两个主要步骤:检测适合图像特征的多个模型候选,以及通过计算相机和对象之间的刚体变换来验证候选。通过基于单词包查询数据库中的所有模型或利用对象的先前已知位置来获得候选。验证步骤利用图像和对象模型点之间的2D到3D对应来找到图像TCiO中的对象姿态。结果是观察BiO=hTWCi、TCiO、XO、Uii所识别的对象模型中。然后,SLAM算法将这些结果与其对应的对象实例Ok相关联,同时考虑当前摄像机的姿态(第4.1节)。
5.1.对象模型我们的对象模型由一组与ORB描述符相关联的3D点和完整对象的外观文字包表示组成。ORB特征具有计算效率,因为它们用256位的字符串描述图像块。
从从对象的不同视角拍摄的一组训练图像离线创建每个对象模型O。我们使用Bundler和PMVS2软件[35,36]对这些图像进行束调整,并获得物体PO的密集3D点云,如图5所示。我们仅保留至少3幅图像中一致出现的点。由于在识别过程中,对象可以以任何比例和视角出现,因此我们将每个3D点与从不同比例级别(高达2个八度)和多个训练图像中提取的多个ORB描述符相关联。
如果训练图像的视点几乎没有不同,我们可以获得具有非常相似的描述符的3D点,这些描述符增加了很少的区别。为了避免过度表达,我们将特征转换为视觉文字,并保持每个3D点和视觉文字的平均描述符[29]。最后,通过将其所有视图的残存二元特征转换为具有视觉词汇表的单词包向量,获得基于外观的对象表示。该模型提供了所有对象表面的信息,因此单个比较产生了与查询图像中对象的视点和比例无关的相似性度量。
5.2.对象模型数据库
对象模型在由可视化词汇表、反向索引和直接索引组成的数据库中进行索引[8]。视觉词汇表由具有二元节点的树组成,该树由训练ORB描述符的分层聚类创建。树的叶子构成了视觉词汇的词汇。我们使用了从加州理工学院256[37]的30607张独立图像中获得的12M个描述符,构建了一个具有k=32个分支和L=3个深度级别的词汇表6,产生了33K个单词。当给定ORB特征时,其描述符向量从根到叶遍历树,在每个级别选择最小化汉明距离的节点,并获得最终叶作为字。通过串联一组ORB特征的等价词,我们获得了一个词包向量,其条目用术语频率-逆文档频率(tf idf)值加权,并用L1范数归一化。对于在训练图像中出现较少的词,该权重较高,因为期望它们更具辨别力。反向索引为词汇表中的每个单词存储其所在的对象,以及其在该对象中的权重。当给定查询图像时,该结构提供了对查询词包向量和模型向量之间的公共词的快速访问。直接索引为每个对象模型存储它包含的树节点和相关的ORB特征。这用于区分在验证阶段需要2D到3D对应时可能匹配的特征。如果我们使用直接索引在其他树级别(更粗的离散化级别)存储节点,我们可以增加对应的数量,对执行时间几乎没有影响[8]。在这项工作中,我们将节点存储在词汇树的第一个离散化级别。
5.3.获得对象候选的先验知识
获得检测候选的第一种方法来自于先前观察到或插入地图中的那些对象。检测地图中已经存在的对象非常有用,因为我们可以找到尚未定位到地标的新点。插入它们有助于优化对象的姿势。该过程在算法1中描述。
7.结论
我们提出了一种对象感知单目SLAM系统,该系统包括一种新的高效3D对象识别算法,用于多达500个3D对象模型的数据库。一方面,我们展示了在SLAM流水线中嵌入单帧单词包识别方法如何提高具有数十个不同对象、重复实例、遮挡和杂波的数据集的识别性能。我们相信,这种优势不仅可以通过这种技术实现,还可以通过嵌入在SLAM管道中的任何其他识别方法实现,该方法可以利用物体的累积观测。
另一方面,对象的包含为SLAM地图添加了一组锚点,这些锚点在后端优化中提供了几何约束,并启用了真实地图比例估计。我们已经证明,与使用RGB-D数据的其他最先进算法相比,我们的系统可以生成更精确的地图。
有一种情况我们在这项工作中没有提到:当地图中插入的第一个对象是由错误的观察结果引起的。这将导致第一次不正确的比例尺估计,并导致地图丢失。这可以通过检查每个物体三角测量所给出的尺度估计的方差来解决,以便消除具有不一致尺度的任何观测。或者,如果初始粗略规模估计可用,也可以避免该问题;例如从机器人和移动设备通常配备的里程表或IMU传感器。然而,由于我们方法的安全步骤,这种情况很少发生,在我们的实验中也没有发生。
在地图中包含对象为使用语义数据增强它们铺平了道路,为用户提供丰富的信息,或为操作机器人提供关于环境的额外知识[49]。我们可以在未来的工作中使用这些知识来推理对象的移动性,从而使对象帧在3D空间中移动成为可能,从而创建动态地图。