在复杂场景中实现抓取检测,Graspness是一种端到端的方法;
输入点云数据,输出抓取角度、抓取深度、夹具宽度等信息。
开源地址:GitHub - rhett-chen/graspness_implementation: My implementation of Graspnet Graspness.
论文地址:Graspness Discovery in Clutters for Fast and Accurate Grasp Detection
看看检测效果,输出彩色+三维点云的抓取效果:
然后输出纯三维点云的抓取效果:
论文复现参考我这篇博客:【机器人】Graspness 端到端抓取点估计 | 环境搭建 | 模型推理测试-CSDN博客
简单总结一下GraspNess
将通用的抓取位姿检测,分解为两个阶段(two-stage)问题:
- where阶段:从单视角点云中找到高可抓取性(high graspability)的区域,即识别出场景中值得关注的局部空间点。
- how阶段:在确定了待抓取区域的基础上,为这些点确定具体的抓取参数,包括抓取器相对于物体的入射角度、绕物体表面的平面内旋转角度、抓取深度、抓取分数(置信度)以及抓取器张开的宽度等。
该两阶段划分将复杂的抓取检测过程拆分:首先关注 “抓哪儿”(区域选择),然后再精确计算 “怎么抓”。
目录
1、研究背景与动机
2、改进思路
3、模型框架
第一阶段:可抓取性模型
第二阶段:抓取操作模型
特征图维度变化总结
4、细节设计
4.1 抓取性度量的引入
4.2 单物体抓取性得分的计算公式
4.3 复杂抓取性得分的计算公式
4.4 t-SNE数据降维可视化
4.5 最远点采样(FPS)
4.6 圆柱分组(Cylinder-Grouping)
4.7 抓取参数估计
4.8 多任务损失
五、实验测试
1、研究背景与动机
对于机器人操作而言,抓取是一个关键但具有挑战性的任务。
在传统的6DoF抓取检测方法中,一般会对场景中的所有点进行均等处理(如在点云中均匀采样抓取位姿候选),试图寻找最优的抓取姿势。
然而,这种“不加区分”的处理方式会带来两个明显的问题:
- 速度问题:在一个复杂或拥挤(cluttered)的场景中,不区分优先级地处理大量候选抓取点位,将导致计算成本过高,降低推理速度。
- 精度问题:忽视场景中不同区域的质量差异会使得搜索过程变得无谓冗余,影响整体的抓取检测准确性。
现有6-DoF抓取姿态检测方法主要着力于“how阶段”,即专注于提高最终抓取参数预测的质量,而对“where阶段”(初步过滤场景中那些明显不可能抓取的区域)关注不足。
已有方法可分为两类:
- 采样-评估范式(sampling-evaluation):这类方法在场景中均匀地随机采样大量抓取候选点,然后用模型对这些点逐一评估抓取质量。
- 端到端方法(end-to-end):这类方法采用端到端神经网络,从输入的点云直接预测整个场景的抓取参数。有的在网络输入前对点云进行下采样,有的在网络前向传播过程中进行采样。但本质上仍然没有显式区分出“值得关注的点”(可抓取点)和“不值得关注的点”。
然而,无论是上述哪一类方法,它们并没有显式地在第一阶段对场景进行有效过滤,都采用了均匀分布的候选点。
这意味着不管场景中是否存在大量不可抓取区域,这些方法都会耗费大量资源在不必要的点上,从而导致计算冗余。
2、改进思路
作者指出,均匀采样策略在实际中存在很大缺点。3D空间中无数点存在,能够真正被稳定抓取(可抓取区域)的点只是很小一部分。
关键点1:在通过场景的局部几何特征,来区分哪些区域更具有可抓性。
- 在尝试实际抓取参数计算之前,先通过对局部空间点的几何结构分析,为其分配一个“可抓取程度”的分数。
- 这种先行的度量可以让算法在早期对整个场景进行过滤。
关键点2:从认知科学视角审视,人类在实际抓取任务中,会将视觉注意力偏向于那些最易于抓取的区域
- 在实际行动(抓取参数预测)之前,先通过感知偏向将注意力分配到高可抓取区域
- 在机器人抓取任务中类比这种注意力分配机制
整体模型框架,是一个两阶段-端到端网络,其流程如下:
- 输入完整的场景点云。
- 第一阶段利用可抓取评分筛选出高抓取性点(where阶段),舍弃低分点,从而减少后续计算量。
- 第二阶段对所选择的高分点进一步预测完整的抓取参数(how阶段)。
3、模型框架
整体模型框架,是一个两阶段-端到端网络,如下图所示
- 第一阶段:可抓取性模型(上图部分)
- 第二阶段:抓取操作模型(下图部分)
第一阶段:可抓取性模型
-
输入点云:接收一个点云作为输入,维度Nx3,其中包含场景的3D坐标信息。
-
点编码器-解码器:点云通过一个点编码器-解码器结构,维度Nx(3+C),该结构输出每个点的C维特征向量。
-
点级抓取性景观:通过一个多层感知机MLP,生成点级抓取性得分,这些得分表示每个点的抓取可能性。
-
抓取可能性高的点:使用最远点采样FPS策略从点级抓取性景观中选择M个种子点,维度Mx(3+C),这些点具有较高的抓取性得分。
-
种子点:选出的种子点用于生成视图级抓取性景观。
-
视图级抓取性景观:通过MLP为每个种子点生成视图级抓取性得分,维度Mx(V+C),这些得分表示在不同视图方向上的抓取可能性.
第二阶段:抓取操作模型
-
选择最佳的抓取视图:结合了“抓取位置可能性高的点”和“抓取方向信息”,选择最佳的抓取视图。输入维度是维度Mx(3+C)和Mx(V+C);其中V是其是也是3;形成的维度Mx(3+3+C)
-
圆柱分组:种子点被分组到圆柱形区域中,这些区域由种子点的位置和选定的视图方向确定。每个圆柱组包含 K个点,特征维度为 K×(3+C)
-
圆柱组:每个圆柱形区域中的点被采样并用于抓取参数的估计。
-
MLP处理:每个圆柱组的点通过MLP处理,生成抓取候选点的特征向量,维度为 M×C′,其中 C′是MLP输出的特征维度。
-
角度-深度搜索:在每个圆柱组中,通过搜索不同的角度和深度来优化抓取姿态,输出抓取姿态的得分和夹持器宽度,维度为 M×(A×D×2),其中 A是角度的数量,D 是深度的数量,2代表得分和宽度。
-
输出抓取姿态:对于每个圆柱组,网络输出M个抓取姿态,包括抓取得分和夹持器宽度。
特征图维度变化总结
- 输入到编码器-解码器:N×3到 N×(3+C)
- 点级抓取性得分:N×(3+C) 到 M×(3+C)
- 视图级抓取性得分:M×(3+C) 到 M×(V+C)
- 视图选择:Mx(3+C)和Mx(V+C),到Mx(3+3+C)
- 圆柱分组:M×(3+3+C) 到 K×(3+C)
- 抓取候选点特征:K×(3+C) 到 M×C′
- 输出抓取姿态:M×C′到 M×(A×D×2)
4、细节设计
4.1 抓取性度量的引入
引入了点级抓取性和视图级抓取性,两种抓取性度量:
- 点级抓取性(Point-wise Graspness):表示为Sp={∣⊂[0,1],i=1,...,N},其中[0,1][0,1]表示每个点的抓取性得分范围。
- 视图级抓取性(View-wise Graspness):表示为Sv={∣⊂,i=1,...,N},其中表示在V维空间中的抓取性得分。
抓取性度量的基本符号
- 点集P={∣i=1,...,N},表示场景中的所有点。
- 视图方向集V={∣j=1,...,V},表示在球面空间中均匀分布的视图方向。
4.2 单物体抓取性得分的计算公式
点级抓取性得分(Point-wise Graspness Score)
- 其中,1(g)是一个指示函数,如果抓取 g成功则为1,否则为0。
- 是以点为中心,视图下所有可行抓取姿态的集合。
- 一个点在所有可能的抓取方向上成功抓取的平均概率。
- 得分越高,表示该点在更多方向上具有成功的抓取潜力,因此更适合作为抓取点。
视图级抓取性得分(View-wise Graspness Score)
- 是用于评估在特定视图方向上抓取成功可能性的量化指标
- 帮助于机器人在复杂环境中快速识别出哪些方向更有可能成为成功的抓取方向
4.3 复杂抓取性得分的计算公式
在复杂场景中,抓取性不仅取决于点的几何特性,还受到场景中其他物体的影响。
碰撞检测用于评估在特定抓取姿态下,夹持器是否会与场景中的其他物体发生碰撞。
- 作者提出了一种方法,通过重建场景并进行碰撞检测来处理碰撞问题。
- 每个抓取候选点都会经过碰撞检测,并根据结果更新抓取性得分。
- 使用物体的3D模型和相应的6D姿态重建场景,对每个抓取候选点进行碰撞检测,并分配碰撞标签
其中,是抓取质量得分,c是一个阈值,用于过滤不成功的抓取。
- 重建场景:使用物体的3D模型和相应的6D姿态(位置和方向)来重建场景。
- 评估抓取候选点:对每个抓取候选点进行碰撞检测,确定它是否与场景中的其他物体发生碰撞。
- 更新抓取性得分:根据碰撞检测的结果更新抓取性得分。如果抓取候选点与场景中的其他物体发生碰撞,其抓取性得分将被降低。
- 正负样本的选择:作者将抓取性得分高于0.3的点视为正样本,而抓取性得分低于0.1的点则作为同样数量的负样本。
4.4 t-SNE数据降维可视化
利用t-SNE(t-distributed Stochastic Neighbor Embedding)方法对GraspNet-1Billion数据集中所有场景的训练集和测试集进行了局部几何特征的可视化。
- t-SNE是一种用于高维数据降维的技术,它能够将高维空间中相似的点映射到低维空间中相近的位置,从而便于观察数据的分布情况。
- 作者观察到不同抓取性得分的区域在几何上是相当可区分的。
- 这意味着高抓取性得分的区域与低抓取性得分的区域在局部几何特征上存在明显差异。这些观察结果证明了抓取性度量是合理的
4.5 最远点采样(FPS)
为了最大化种子点之间的距离,从而确保采样点在空间上尽可能分散,采用最远点采样策略。
这个过程开始于随机选择一个种子点,然后迭代选择距离已选种子点集合最远的点作为新的种子点。
这个过程重复进行,直到选择了足够数量的种子点。
4.6 圆柱分组(Cylinder-Grouping)
- 种子点-视图对:首先,根据种子点和视图向量确定圆柱空间的位置和方向。
- 分组和采样:对于每对种子点和视图,使用固定高度和半径的圆柱体从种子点中分组并采样点。这些点将用于抓取参数的估计。
4.7 抓取参数估计
- 坐标归一化:将圆柱体内的点坐标按圆柱半径归一化,并与通过抓取性FPS和抓取性PVS输出的特征向量拼接。
- 特征向量:分组后的点集被称为抓取候选点,其大小为 M×K×(3+C),其中 M是种子点的数量,K是每个分组中采样的点数,C是特征向量的维度。
4.8 多任务损失
- 级联抓取性模型和抓取操作模型同时训练,
- 使用多任务损失函数,包括物体分类损失、点级抓取性、视图级抓取性、抓取得分和夹持器宽度的回归损失。
五、实验测试
- 基准数据集 GraspNet-1Billion:这是一个大规模的数据集,用于抓取姿态检测,包含190个场景,每个场景有256个不同视角的视图,由两个相机(RealSense/Kinect)捕获。
- 点云下采样:在输入网络之前,点云通过体素网格下采样,体素大小为0.005米,仅包含相机坐标系中的XYZ信息。
- 数据增强:在训练过程中,通过随机翻转YZ平面,和围绕Z轴随机旋转±30°来增强输入云。
- 抓取性模型:对于GraspNet-1Billion中的场景,为每个点密集标记300个不同视图和每个视图48个抓取的质量得分。
Graspness的方法,比GraspNet方法高出接近40个点,巨大的涨幅。
看看不同采用点的方法
分析使用可抓取最远点采样(Graspable FPS)与其他采样方法(如随机采样、普通FPS)对模型性能的影响
看一下模型效果
论文复现参考我这篇博客:【机器人】Graspness 端到端抓取点估计 | 环境搭建 | 模型推理测试-CSDN博客
分享完成~