MoreFusion笔记

https://blog.csdn.net/congxing9333/article/details/109908336
https://blog.csdn.net/u013019296/article/details/106321873
https://blog.csdn.net/wolfcsharp/article/details/108874318

简介

对于需要在杂乱环境中进行精确操作的机器人或其他智能设备,需要能够利用他们的相机推理出物体的接触、遮挡等物理关系。目前表面一些短期任务可以利用端到端的学习完成图像到动作的映射。我们认为扩展和多阶段任务可以从连续的3D场景中收益。
即使是已知模型的物体,最先进的模型也很难估计有遮挡和接触的物体的位姿。这篇文章提出了一个视觉系统,从单个移动的RGBD相机得到的多视角图片实时生成一个连续的3D多物体表示。系统 包含4个主要部分:
1、物体的2D检测送到物体级的融合,得到物体的体素占用图。
2、一个位姿估计网络,利用RGBD数据和周围的占有网格,进行3D物体位姿估计
3、基于碰撞的位姿细化 和 可微的碰撞检测 联合优化多物体的位姿
4、用信息丰富的CAD模型替代物体对象的体素表示。
MoreFusion笔记_第1张图片
系统利用深度信息和多视图来联合估计物体的位姿。当模型能够被基本对齐并不与其他物体相交时,初始的粗糙的体术创建模型提升为精确的CAD模型拟合。这种能够推测多物体位姿和正当接触关系的能力,能使得机器人在复杂场景中规划这种挑选地点,比如让机器人去除障碍物并拾取红框的目标。
主要贡献:
1、周边空间感知的位姿估计。估计网络接收体素网格作为物体的不可穿透空间。
2、联合优化多对象的位姿。利用可微碰撞检测对多物体的场景配置进行评估和升级
3、融合和6D位姿估计作为一个实时系统。在这个系统中利用对象的体素图来提高和精确位姿估计。

相关工作

基于模板的该方法是最早的位姿估计方法之一,这种方法包括,通过收集物体不同视角的图片或3D模型进行离线训练,生成一个模板,然后使用距离度量在图片上扫描模板得到最佳匹配。这种方法对混乱、遮挡和光线敏感,导致错误估计,需要一些后处理。
基于稀疏特征的方法成为流行替代基于模板的方法。这种方法提取尺度不变的兴趣点,用局部特征描述他们,比如SIFT和SURF。然后将他们存储在数据库中,在后续的使用类似RANSAC的位置估计时做匹配。在操作任务(如MOPED)中可以看到这个管线
随着RGBD相机的普及,密集的方法在位姿估计中流行。这种方法包括构建目标的3D点云,然后使用ICP方法将其与储存的模型进行匹配。

现在普遍使用深度网络进行6D位姿估计。PoseCNN是第一批利用RGB图片进行端到端位姿初始估计的方法,然后利用ICP进行完善。目前基于RGBD的方法有PointFusion和DenseFusion,他们分别处理两种传感器信息(RGB用CNN,深度点云用PointNet)。然后融合来提取像素级的特征。
我们的方法也用基于RGBD和深度学习的方法,跟以前基于点云的方法和集中目标物体的方法相比,我们使用结构化的体素来处理几何信息,用到了目标物体周围的集合信息

MoreFusion

我们的系统估计给定杂乱场景的RGB-D图像的一组已知物体的6D位姿。我们将6D位姿表示为一个均匀的变换矩阵在这里插入图片描述
SE(3)形式为4×4矩阵,形式如下:
MoreFusion笔记_第2张图片

位姿表示为
在这里插入图片描述
其中(SO(3)是special orthogonal group表示所有可逆且行列式等于1的矩阵组成的集合。)
MoreFusion笔记_第3张图片
整个系统可以分为4个关健步骤
1、物体级体素融合阶段。包括物体检测的实例掩码和深度测量、相机跟踪结合起来,生成已知和未知物体的体素图
2、空间位姿预测阶段。利用空间图的周围信息和RGBD掩码为每个物体生成一个初始位姿。
3、基于碰撞的位姿细化阶段。梯度下降算法联合优化多个物体的未知,利用可微碰撞检测处理 对象CAD模型和体素地图占用空间
4、CAD对齐阶段。将每个物体用CAD模型代替,来包含紧凑和丰富的信息。

3.1 目标级的体素融合

建立体素地图是位姿估计系统的第一步。他允许系统逐渐增加场景知识,直到对场景中位姿估计有足够的信息为止。在目标级体素融合阶段,构建了类似【19】【27】【30】的管道,结合了RGBD相机跟踪、对象检测、被检测物体的体素映射。

RGBD相机追踪

相机安装在机械臂末端,则我们可以使用正向运动学和经过良好校准的相机来检索相机的准确位姿。为了能兼容手持相机,采用稀疏的slam框架的ORB—SLAM2进行相机追踪。跟踪相机的空间位姿对体素映射至关重要

物体检测

利用Maskrcnn获得2D实例掩码

检测物体的体素映射

基于八叉树的占用率映射,OctoMap进行体素映射。通过使用八叉树结构,OctoMap可以快速检索体素,这对于从深度测量值更新占有率和在后续(位姿估计和细化)的过程检测占有率至关重要。
我们为每个被检测物体(包括未知和背景物体)构建体素图。为了跟踪这些已经初始化的对象,我们在当前帧使用检测到的掩码的交集,并且按照前面的工作【18】【30】渲染重建。对于已经初始化的对象,我们将新的深度值融合到该对象的体素上,并移动相机找到新的对象时候初始化新的体素图。对象级的重建能够通过使用体素表示物体作为中间表示,在位姿对齐之前。

3.2 体素位姿估计

我们的系统利用体素地图中检索周围信息,将目标物体周围信息纳入位姿估计。这节将描述在位姿估计时候,周边信息如何去描述和使用。

3.2.1 占用栅格作为周围信息

位姿估计的每个对象都有自己的体素占有网格。这个网格中主要包括一下四种状态属性:1、目标对象本身占有的空间;2、其他物体占有的空间;3、深度图能探测到的自由空间(除去目标本身和其他物体占有的位置);4、遮挡等导致的无法探测到的空间。
MoreFusion笔记_第4张图片

理想情况下,周围信息的包围框应该覆盖整个目标对象的整个区域,及时被遮挡。这就意味着包围框的尺寸应该根据目标物体的尺寸进行改变。由于我们需要使用固定大小的体素来进行网络估计(比如:32x32x32)。所以我们根据对象模型的大小来计算每个对象的体素大小(包围框的对角线除以体素维度)

3.2.2 位姿估计网络结构

每个物体的初始6D位姿是通过一个神经网络估计的。该网络同时接收了上节描述的占有网格信息和RGBD图像的蒙版。这个构架分为4个核心组件:1、利用ResNet提取RGB的2D特征。2、RGB特征和点云特征的逐点编码。3、 在3Dcnn后的逐点特征的体素化。4、从2D和3D特征的逐点位姿估计。
MoreFusion笔记_第5张图片

RGB的2D特征提取

即使深度信息是可测量的,RGB图片仍然携带了重要的传感信息,用于精确的位姿估计。由于RGB图像中的颜色和纹理信息,对于高度纹理化和非对称物体的位姿估计,仍然是一个非常强的信号。
在【28】【31】之后,我们将ResNet18和后续的上采样层一起使用,从蒙版中提取rgb特征。即使两种前期的工作【28】【31】,使用代有边框的对象的裁剪图片,我们使用模板图像,使网络不改变背景外观,并鼓励其专注使用占用网格来检索周围的信息。

RGB特征和点云的逐点编码

采用DenseFusion的编码方法,RGB特征和提取的点云通过几个全连接层进行编码,生成逐点特征,然后将其进行级联。

体素化和3D-CNN处理

从这些点状的特征,我们建立一个特征栅格(与占用栅格的尺寸相同),该栅格将与从体素融合中提取的占用栅格合并。用3D-CNN网络处理这些连续的体素网格,提取分层的3D特征,减少体素尺寸并增加通道数量。使用两部卷积处理原始网格(323232)来具有分层特征(体素尺寸为16和8)。
其中一个重要的选择是在体素化前用2D特征提取,而不是在体素化后用3D特征提取RGB的颜色特征。即使在处理RGBD输入时,3DCNN和2DCNN行为相似,但是与2DCNN在图片中使用不同,很难用3DCNN在高分辨率网格上使用。并且由于深度图上传感器噪声,体素格上相比RGB图像有更多的缺失点。

从2D-3D特征进行逐点位姿估计

为了融合2D和3D特征进行位姿估计,我们从3D特征网格提取与使用Triliner插值的逐点2D特征对应的点。这些3D和2D特征被连接为位姿估计的逐点特征向量,从中可以估计位姿和置信度。

3.2.3 训练位姿估计网络

训练损失函数

对于逐点的位姿估计,我们采用DenseFusion进行训练损失函数,他是来自PoseCNN的模型对齐的扩展版本。对于每个点状的估计,损失是计算计算的是模型在真值位姿转换后的点和预测位姿转换后对应点的平均距离差。
位姿损失函数为:
在这里插入图片描述
其中【R|T】为真实的位姿,【Ri|Ti】为第i次位姿估计,Pq属于X为模型的采样点。

对于对称对象,采用最近邻点作为对应关系点
MoreFusion笔记_第6张图片
姿态预测的置信度是无监督方式训练的,N是像素预测的数目,ci为是第i个点的估计置信度,最终损失函数为
MoreFusion笔记_第7张图片
其中,λ 是正则化比例因子(本文λ=0.015)

对称位姿损失的局部最小值

尽管在处理对称物体时采用最近邻搜索设计对称位姿损失。我们发现这种损失与标准位姿损失相比,很容易陷入局部最优解。标准损失是在模型上采用一对一的真值对应。图5b显示了对称位姿损失在非凸对象的局部最小值问题。
MoreFusion笔记_第8张图片

对于这个问题,我们在训练过程中先采用标准损失的warm-up阶段进行训练(比如一个epoch),然后转换到对称损失训练。首先忽略物体的对称性去优化位姿,从而解决局部最优解的问题,然后考虑物体的对称性进行最近邻优化。这样对复杂形状的物体的位姿规矩提供了更好的结果(图5c)

3.3 基于碰撞的位姿

上节中展示了如何结合 基于图像的物体检测、RGBD数据和附近物体形状的体素估计,根据网络前向进行每个物体的位姿估计。这样可以得到一个较好的初始位姿,但是不一定能得到一个互相紧密接触的对象 的一组互相一致的估计。本节介绍测试时位姿优化模块,他能够联合优化多个对象的位姿。
对于联合优化,我们引入了库区分的碰撞检测,包括对象CAD模型的占有体素化和占有网格之间的相交损失。两者是可拆分的,所以运行我们在GPU上使用梯度下降进行优化位姿。

可微分占有体素

3.2.2中提到的特征向量平均体素化是基于点的特征向量。并且相对特征向量是可微分的。相反,占有体素化需要相对点是可微分的。这意味着专用网格中每个体素的值必须是点的函数,该点已通过估计的对象姿态进行转换。
Pq是一点,s是体素的大小,l是体素的原点(体素网格的左下角),因此可以将点转换为体素坐标
在这里插入图片描述
对于每个体素计算距离集合对点:
在这里插入图片描述
我们根据与离最近点的距离成比例来确定占用值,从而计算出第k个体素的占用值Ok
在这里插入图片描述
其中
为
为距离阈值。

目标对象的占有体素化

可微分的占有体素化从对象模型和虚拟对象位姿得到占有网格。对于目标对象Om,从CAD模型Pq中采样的点按照假设位姿进行变换在这里插入图片描述
均匀的从CAD模型中采样(包括内部部分),给出目标对象Qm_targot的占有网格

类似的,对周围对象进行体素化,与目标对象的体素化不同,周围对象在目标的体素化坐标中被体素化
在这里插入图片描述
其中Lo是目标对象的占有网格原点,So为体素大小。这就给出了目标对象周围对象的假设占有网格
在这里插入图片描述

碰撞检测的交叉损失

占有体素化给了目标 g m t a r g e t g_m^{target} gmtarget(场景中第m个对象)和周围物体的假设占有空间对象 g n n o n t a r g e t g_n^{nontarget} gnnontarget.周围对象的占有网格是建立在目标对象的体素坐标系下的(中心点和体素大小),并与元素方式的Max进行融合
在这里插入图片描述
这给了一个单一的不可穿透的占用网格,其中目标对象的位姿是惩罚交叉。除了来自周围物体的位姿假设的不可穿透的占用网格,我们还使用了来自体素融合的占用信息:包括背景物体在内的占用空间 g m o t h e r g_m^{other} gmother,空闲空间 g m f r e e g_m^{free} gmfree,作为附加不可穿透空间在这里插入图片描述
碰撞惩罚损失计算为目标的假设占有空间与周围不可穿透网格的交点
在这里插入图片描述
虽然这个损失正确地惩罚了目标和周围物体之间的碰撞,但仅对此进行优化是不够的,因为它没有考虑到目标物体的可见表面约束
MoreFusion笔记_第9张图片

3.4 CAD对齐

在完成位姿估计和细化后,一旦在不同视图中对所估计的位姿有足够的一致性,我们就会在地图中生成目标CAD模型。为了比较在不同相机坐标下估计的物体位姿,我们首先使用相机跟踪模块中跟踪的相机位姿将这些位姿转换为世界坐标(§3.1)。利用位姿损失来比较变换后的目标位姿,我们也用它来训练位姿估计网络(§3.2.3)。对于最近的N个位姿假设,我们计算每一对的位姿损失,得到N(N−1)位姿损失:
在这里插入图片描述
MoreFusion笔记_第10张图片

我没看懂。。。以后再看吧。。。

你可能感兴趣的:(位姿估计,机器学习,深度学习)