• [12] Object Disappearance for Object Discovery


    引用不算多,看起来是早期的,object discovery方法,rgbd相机在像素和深度上聚类?

    移动机器人的一项有用功能是能够识别其环境中移动和变化的对象(与背景对象不同,后者主要是固定的)。这种能力可以提高定位和地图绘制的准确性和可靠性,增强机器人与其环境交互的能力,并促进诸如库存管理和盗窃检测之类的应用。
    这项工作不是将任务视为计算机视觉中对象识别方法的困难应用,而是与社区中无监督的对象发现和跟踪的最新趋势相一致,该趋势利用了机器人获取的数据的基本时间特性。
    与早期的方法严重依赖于制图和计算机视觉的计算密集型技术不同,我们的方法以一种简单有效的方式结合了视觉特征和RGB-D数据,从而从机器人的感觉数据中分割出对象。然后,我们使用Dirichlet流程来聚类和识别对象。我们的方法的性能在多个测试领域得到了证明。

    对象是机器人技术中的基本原语。 识别,跟踪和映射对象及其位置的能力是各种有用的机器人功能的要求。
    但是,物体的检测和识别是困难的,开放的问题。 理想情况下,可能希望为机器人提供高分辨率的3D对象模型。
    但是,必须使用转盘或其他专门的感应设备精心构建此类模型。 即使这是可行的,对于机器人可能遇到的对象是否可以事先进行彻底分类的基本假设,也充斥着质疑。
    在一般环境中,维护“所有可能的对象”的数据库是很困难的:可以随时引入或删除对象,对象可以改变形状,并且必须分别对新对象进行建模。

    这段话挺好的,,维护所有可能的对象的数据库,,不是一件容易的事情

    我们开发了一种基于对象发现原理的对象感知方法。
    对象发现中的基本问题是将传入的传感器读数分为“对象”和“非对象”部分。
    观察到一般环境从根本上讲是动态的,因此我们假设对象是移动的事物。
    通过检测对象已移动,我们允许环境直接为我们提供细分。
    凭直觉,如果我们能够检测到某些东西已经消失,那么曾经存在的东西一定是一个物体。
    然后,我们将这些片段发送到跟踪系统,该系统会随时间推移以及各个位置的对象外观执行数据关联。 通过在基于Dirichlet过程的概率模型中进行推断来完成数据关联。

    逻辑挺清楚的,,如果发现移动或者消失,,就是对象,,数据关联这边还没懂

    从图像分割到数据关联的我们的系统完全无监督,并在标准的移动机器人平台上运行。 我们在规模和复杂性不断增加的三个数据集上进行了演示,并根据经验评估了结果。

    这项工作的贡献有三方面:用于有效检测对象消失的稀疏特征图,利用稀疏特征图的基于深度的精确对象分割系统,以及基于视觉单词的概率模型(用于在不同位置出现物体 跨时间和空间的准确数据关联)

    怎么感觉和我的想法已经很接近了,稀疏特征图,但是你用深度做对象分割,我用cnn

    2. 相关工作

    一部分工作对obejct的识别,通过两次环境建模之间的变化获取,还有就是实时视频流分析

    3.Background

    基于 Dirichlet processes 的data association。

    4.Problem

    我们的主要前提是物体在机器人不注视时移动(或移动)。我们试图检测运动何时发生;如果以前存在于世界上的特征消失了,那么这些特征所占据的空间中的某物可能就是一个物体。与何时空出空间或新占用空间相比,检测要素是否消失更容易,因为这前者需要存储有关整个世界的3D度量信息,以防万一它与对象发现相关。

    可以使用基于Octree的技术(例如OctoMap [20]),但是这些密集技术对微小的定位误差非常敏感,特别是在检测对象所需的分辨率下。

    尽管我们的方法可以很容易地扩展为使用特征外观,但我们不使用密集技术而是着重于使用特征消失来提示对象发现(请参阅第X节)。为了方便有效地发现消失的特征,我们使用稀疏表示:3D空间中带有时间戳的视觉特征图。有关详细信息,请参见第V节。

    OCTmap似乎是很经典的工作,可以看一下。3D空间中带有时间戳的视觉特征图;所以有一个时间的相关性

    真正稀疏的特征图不能将传感器读数中的每个像素标记为“对象”或“非对象”。 在这里,我们可以利用传感器提供的深度数据。 除了在RGB中进行分割外,我们还可以使用消失的点在深度图像中进行分割分析。 第六节中详细介绍了分段器。

    给定这些片段,我们现在必须执行一个跟踪步骤,以便在时间(“我再次看到这个对象”)和空间(“我现在在另一个位置看到这个对象”)之间关联片段。 使用一袋视觉单词的常见方法(例如,见Sivic等人[10]和Kang等人[16])。
    由于我们的分割器使用的是完整功能,而不是视觉单词,而不仅仅是视觉单词,因此我们只能从出现在对象上的那些功能中学习单词。 将跟踪器调整到场景中特定对象的机会是我们方法的重要好处。 详见第七节。

    最后,我们对这些视觉单词使用DP模型来执行跟踪和数据关联。 我们的输出是一组群集的RGB-D段。 这些可以是例如3D重建系统的输入。 数据关联在第VIII节中详细介绍。

    所以这篇工作也关注了,在时间上再次看到,在空间上再次看到这两种情况,妈呀,,简直厉害

    5.视觉特征

    为了检测到某物已经消失(因此是物体),首先必须知道那儿有东西。 而不是像Herbst等人那样构建密集的3D地图。 [11],[12],我们构建了投影到3D中的视觉特征的稀疏地图。 回想一下,我们的目标是检测物体的消失; 给定一个新的RGB-D帧对,我们希望回答的问题是“应该观察到哪些特征点,但不是?” 然后将这些点视为对象上的候选点。

    RGB-D相机的使用使这个问题的几何部分变得简单。 根据当前的稀疏特征图M1和机器人的当前本地化估算值,我们可以将这些点投影到RGB像素坐标中。 然后可以针对深度图像检查相机的z坐标(在图像平面之外),以查看该点是否在此帧中被遮挡。 该分析为我们提供了应该在此框架中观察到的一组点M2。

    这里rgbd的深度还天然能算一下遮挡,单目感觉差不多,把新的深度和原本的深度对比一下

    接下来,我们必须确定实际观察到的点。我们计算当前RGB帧中的视觉特征,并将其投影到3D中。我们定义一个空间阈值s和一个描述符距离阈值d。
    如果f在s和d阈值内,则认为新特征f与地图特征m匹配。
    将这些阈值应用于M2的每个元素,可以为我们提供一组M3的特征,这些特征应该已经观察到,但是没有被观察到。
    把这些特征添加到地图。有关示例,请参见图1。

    我的妈呀,这和我想的基本一样了,来自2012年的idea,那会儿我还念大一呢。。。

    如果没有过多地使用无用特征,则可以有效地存储和使用特征图。
    对于大多数生成视觉特征的方法,这是一个问题,因为它们可以在每个图像上生成大量特征,但是其中许多特征可能会由于图像噪声,相机运动以及(由于情况而定)由于定位而导致的意外遮挡而遭受不稳定错误。
    因为我们使用否定特征检测作为阳性对象检测的提示,所以我们希望避免出现假阴性,即使存在假阳性的风险。
    我们介绍两种技术来修剪我们的功能。首先,我们加强时间稳定性。我们要求在将特征添加到地图之前,先观察连续k帧的特征(首次看到或匹配)。这有助于过滤对图像噪声高度敏感的那些功能。我们还在匹配方面强制实施时间一致性:要算作候选项,要素必须不匹配(即
    在M3中)连续k次;这有助于解决由于图像噪声引起的瞬态丢失

    前面这段话就是orbslam的地图点提取方法,要连续观察到一定帧数;后面说的是,当连续一定帧数观测不到的时候,再把这些点视作为消失的点

    其次,我们介绍特征集群的概念。
    因为将从几个不同的角度看到要素,所以3D空间中的同一点可能会生成各种不同的要素描述符。
    为了解决这个问题,我们的功能集群存储了多个描述符。 那么,新特征f与聚类c匹配的代价是f与c中任何描述符之间的描述符距离的最小值。 为了更新特征簇,我们引入了第二个空间阈值,即积分阈值i。 如果f在c的i中,我们将f的描述符添加到c的集合中。 重要的是,我们不首先执行描述符距离检查:特征聚类的目标是捕获由于视点引起的描述符值的变化; 需要紧密的描述符匹配将失败。
    将时间稳定性标准应用于M3中的要素,便得到M4,并将其作为输入传递给分段器。

    这里说的,特征的集合,就是为了不同视角下能够让特征点被识别。到还好吧。

    在我们的实验中,我们使用ORB描述符[22]。 我们设置空间阈值s = 5 cm,描述符距离阈值d = 150,时间稳定性阈值k = 5,积分阈值i = 2 cm,并为每个实验使用相同的参数。

    5cm还是个具体数字啊,我的单目没有这种指标啊。。。再说吧

    6. 物体分割

    当识别出一组候选目标点时,这些点将移交给分割器。 分割器的工作是在对应的较早期的帧里面,找出现在缺失的rgbd数据。

    这可以通过在时间上倒退所有包含缺失特征的帧来实现。 对于每个这样的帧,提取深度图像中的segment。

    分段器基于一个简单的假设:object必须被支撑着。
    特别是,我们假设对象必须放在平面上。 这个假设排除了某些类型的对象(例如,悬挂在头顶的灯),但几乎包括了其他所有对象。
    例如,Herbst等人发现的物体。 [11],[12]都在桌面上。 类似地,来自Kang等人的ADL数据集中的175张图像中,除了10张图像外,其余全部都是在大型平面上。  语义映射文献中也使用了这种平面假设,通常可以简化受控近距离环境中的对象识别。 参见,例如Rusu等。 [23]和Trevor等。 [24]。

    平面假设,,这个第一次听说。。而且ransac就能提取平面了

    作为输入,我们的分割器获取图像和时间稳定集合M4(第V节,图2a)。

    使用相应的深度图(图2b),使用PCS [25]中实现的RANSAC提取平面。

    使用发现在平面上的像素形成mask。 此mask将通过减去平面来将平面与对象分离。

    接下来,找到深度不连续性较大(深度边缘)的像素,并将其添加到mask中,作为物体的边缘。所得的掩模如图2c所示。

    最后,我们将M4中的点投影到mask深度图像中并向外泛洪(图2c中从黑色到白色)。 产生的连接区域对应于段,可用于提取对象的深度或颜色数据,如图2d所示。
    滤除非常大的连接组件(在我们的实验中,任一侧大于0.7 m),以及包含少于三个特征簇的组件。

    此步骤的输出是一组分段,以像素坐标表示。 我们依靠我们的DP对象模型来确定段是否对应于同一物理对象。 性能在第IX节中讨论。

    7.Visual words

    在跟踪过程中,我们使用一袋单词方法,而不是直接在我们的对象模型中使用特征描述符,在该方法中,描述符被量化为可视单词[10]。 与使用原始功能相比,这在不同的观点上提供了更快的性能,更好的鲁棒性和泛化能力。 我们使用词汇量为W的词汇表(在我们的实验中,W = 250)。 这些词是在细分后生成的,这意味着它们已调整到我们数据中的特定细分。

    对于每个片段,我们首先单独重新计算该片段的ORB特征(先前为帧计算的ORB特征覆盖了整个图像,因此该片段上可能没有很多特征)。
    接下来,给定数据集中所有片段上所有特征的ORB描述符,我们在描述符空间中应用K-means聚类得到一组质心d1; :::; dW(也在描述符空间中)。
    然后,将每个分段上的每个特征描述符替换为最接近的质心。 如果dw是最接近描述符d的质心,则在推理算法中将其简单地表示为整数w,因为将对可视单词执行的唯一操作是相等性检查。
    该阶段的输出包括上一阶段的片段以及每个片段的可视单词。

    8.数据关联

    迄今为止,所描述的感知管线为一组特征已消失的每个帧产生一定数量的片段,每个片段由一组视觉词和相关位置(在传感器框架中)组成。
    剩下的任务是确定这些段中的哪些对应于同一对象。
    即使从两个连续的帧中产生片段,由于彩色和深度图像中的噪声,它们可能也不相同。
    当机器人和物体在场景中移动时,由于图像中物体尺寸的变化以及相对于机器人的姿态的变化,对应于同一物体的片段肯定会有所不同。

    给定观察到的段的历史,我们的目标是产生聚类,或更普遍地讲,在聚类对应于对象的聚类上产生概率分布。
    因此,一组段的聚类由一组假设的对象ID组成,对于每个段,它属于该对象的对象的ID。

    聚类和数据关联是经过充分研究的问题。
    在我们的环境中,一个挑战是要聚类的片段是复杂的,具有不同的维数。 此外,由于遮挡(并非观察到所有视觉单词)以及由于对象移动时特征点的绝对坐标会改变这一事实,定义聚类之间的距离的概念具有挑战性。

    我们使用基于DP的模型来解决该问题。
    DP的基本度量是在视觉单词f(1 ... W)g上的Dirichlet分布。
    因此,DP的每个混合成分对应于从该基本度量得出的多项式分布。
    通过基于DP选择组件,然后从组件的多项式分布中采样独立的视觉单词,即可生成观察到的细分。

    该DP模型的混合组件对应于世界中的基础对象。每个对象在视觉单词上都有一个关联的多项式分布,对应于对象上的特征。
    观察到的元素是单个视觉单词。我们的目标只是将观察到的片段聚类。我们假设将在以后的阶段对对象进行更详细的建模。
    请注意,该设置与标准Dirichlet处理混合物略有不同,因为假定出现在给定段上的视觉单词来自同一对象(即我们在此阶段假定分段是正确的)。

    我们的算法将输出一组样本,每个样本都是一个聚类,为每个观察到的片段分配一个对象ID。
    为了确定给定样本的单个最佳聚类,我们可以简单地采用最可能的聚类,但是样本的维数很高,任何给定的样本仅发生几次。 因此,使用最可能的聚类会忽略样本中的许多信息。
    相反,我们将每个细分分别分配给样本中最常与之关联的对象ID。
    该估计器不适用于任意采样方案,因为它取决于对象ID的特定值,并且排列不变。
    但这对于下面描述的Gibbs采样器效果很好,在该采样器中,与对象相对应的所有段的ID不可能同时更改为新值。

    这边还没翻译完,,但是有很多算法上我没弄懂的东西,,所以先转到evaluation

    9. Performance

    我们在规模和复杂性不断增加的三个数据集上验证系统的性能。
    如前所述,我们只需要一个本地化的RGB-D相机; 在我们的移动数据集中,这是安装在Willow顶部的Microsoft Kinect
    车库PR2,以5 Hz的频率捕获1280×960的RGB帧和640×480的深度帧。
    深度图像限制在2 m的范围内,以最小化Kinect的范围误差。
    机器人过快移动的帧会被滤除,以最大程度地减少由于运动模糊导致的视觉特征错误。 但是,它们包含在发布的数据中[1]。 这些数据集称为:

    小型:固定相机示例,以进行完整性检查。 数据集由101个静态,空场景的帧组成,之后是135帧(其中添加了两个对象),然后是114帧(其中已删除了对象)。 示例图像可以在图3中看到。手分割的结果为270个片段和两个唯一的对象

    中型:从在办公室环境中导航的移动机器人获取的数据集。 机器人观察桌子(带有物体),然后在移开物体时将视线移开,然后再次观察桌子。 然后,机器人行进约18 m,并使用包含相同对象的计数器重复此过程。 在两个地方都使用了相同的对象来测试跨位置的数据关联(在照明方面有相应的变化等)。共有四个唯一的对象,即手工发现394个段,总共484个帧。 示例图像可以在图4中看到

    大型:一个数据集,分布在40 m×40 m办公环境的多个房间中,总距离为181.5 m。
    在此环境中有两次通过。 在第一遍中,机器人会观察每个房间中的多个物体。 在第二遍中,将删除所有对象。 共有七个独特的对象,手工发现419个段,以及397个帧。 帧数低于中等数据集,因为不允许机器人在任何位置徘徊很长时间。 示例图像如图5所示。

  • 相关阅读:
    VS中Debug和Release两个版本的区别
    Activex、OLE、COM、OCX、DLL之间的区别
    解决 C/C++ 程序执行一闪而过的方法
    调用规范stdcall、cdecl、fastcall、thiscall 、naked call的汇编理解
    Windows的MAX_PATH
    Servlet学习笔记(1)
    Eclipse使用JDBC小案例
    Oracle DB 总结(SQL)
    利用JS写一个计算平方的网页
    CSS部分语法1
  • 原文地址:https://www.cnblogs.com/zherlock/p/12750937.html
Copyright © 2020-2023  润新知