三维抓取点检测

节列表 ↓

本章说明如何使用三维抓取点检测功能。

三维抓取点检测用于在三维场景中任意物对象面寻找合适的抓取点。检测结果可用于引导机械臂定位抓取点,并通过带吸盘的真空夹具拾取对象。

image/svg+xml
三维抓取点检测应用的示例:分析三维场景(例如 RGB 图像和 XYZ 图像),并提出可能的抓取点。

HALCON 提供了一个预训练模型,无需额外训练步骤即可直接进行推理。若需针对特定任务对模型进行微调,可将其重新训练于自定义应用领域。三维抓取点检测功能同样适用于训练过程中未见过的对象。因此无需提供目标对象的三维模型。该检测功能还能同时处理包含多种对象的场景、部分对象被遮挡的场景,以及存在杂乱三维数据的场景。

以下各节将描述通用推理工作流程以及重新训练过程。

通用推理工作流程

本段落描述了如何使用三维抓取点检测模型,在任意对象表面确定合适的抓取点。应用场景可参考 HDevelop 示例文件 3d_gripping_point_detection_workflow.hdev

  1. 读取预训练的三维抓取点检测模型,通过算子

  2. 设置模型参数,例如涉及使用的设备或图像尺寸等,使用算子

  3. 为每个三维场景生成一个数据字典 DLSample。可通过以下函数实现

    • gen_dl_samples_3d_gripping_point_detection

    其能够处理不同类型的三维数据。有关数据要求的更多信息,请参阅下文“数据”部分。

  4. 在推理前对数据进行预处理。为此,您可以使用以下函数

    • preprocess_dl_samples

    所需的预处理参数可以从模型生成,通过以下算子

    • create_dl_preprocess_param_from_model

    或手动设置,使用以下函数

    • create_dl_preprocess_param

    请注意,数据预处理对推理结果具有显著影响。更多细节请参见下文“三维场景”部分。

  5. 应用模型,使用算子

  6. 对生成的 DLResult 执行后处理步骤,获取场景中的抓取点,使用函数

    • gen_dl_3d_gripping_points_and_poses

  7. 可视化二维和三维结果,分别使用函数

    • dev_display_dl_data

    • dev_display_dl_3d_data

模型训练与评估

本段落描述了如何使用自定义数据对三维抓取点检测模型进行重新训练和评估。 一个应用场景可以在 HDevelop 示例文件 3d_gripping_point_detection_training_workflow.hdev 中看到。

预处理数据

这一部分是关于如何对数据进行预处理。

  1. 您的数据集信息内容需要进行转换。 该操作通过以下函数实现:

    • read_dl_dataset_3d_gripping_point_detection.

    由此创建了一个名为 DLDataset 的字典,它作为数据库存储了关于数据的所有必要信息。有关数据及其传输方式的更多信息,请参阅下文的“数据”部分以及 深度学习 / 模型 一章。

  2. 将字典 DLDataset 表示的数据集进行拆分。可通过以下函数实现:

    • split_dl_dataset.

  3. 网络对图像提出了若干要求。这些要求(例如图像尺寸和灰度值范围)可以获取,通过算子

    为此,您需要先使用

  4. 现在您可以对数据集进行预处理。为此,您可以使用以下函数:

    • preprocess_dl_dataset.

    要使用此过程,请指定预处理参数(例如图像尺寸)。将所有参数及其值存储在字典 DLPreprocessParam 中,可使用以下函数实现

    • create_dl_preprocess_param_from_model

    我们建议保存此字典 DLPreprocessParam,以便在后续推理阶段能够访问预处理参数值。

模型训练

本部分阐述了通过重新训练对三维抓取点检测模型进行微调的过程。

  1. 设置训练参数并将其存储在字典 TrainParam 中。可通过以下函数实现

    • create_dl_train_param

  2. 训练模型。这可以通过以下函数实现

    • train_dl_model

    该函数要求:

    • 模型句柄 DLModelHandleDLModelHandleDLModelHandleDLModelHandleDLModelHandledlmodel_handle

    • 包含数据信息的字典 DLDataset

    • 包含训练参数的字典 TrainParam

重新训练模型的评估

在本部分中,我们将评估三维抓取点检测模型。

  1. 设置可能影响评估的模型参数。

  2. 评估可以便捷的完成,使用函数

    • evaluate_dl_model

    该函数需要一个包含评估参数的字典 GenParam

  3. 字典 EvaluationResult 存储评估指标。要了解重新训练的模型相对于预训练模型的表现,可比较它们的评估值。若需理解不同的评估指标,请参阅“三维抓取点检测结果的评估指标”一节。

数据

本节提供有关三维抓取点检测模型进行模型推理或训练与评估时所需提供的数据信息。

作为基础概念,该模型通过字典处理数据,即它从字典 DLSample 接收输入数据,并返回字典 DLResult。有关数据处理的更多信息,请参阅 深度学习 / 模型 一章。

三维场景

三维抓取点检测处理三维场景,这些场景由常规的二维图像和深度信息组成。

为使这些三维数据符合网络输入要求,推理前需进行预处理步骤。具体预处理参数请参阅下文“特定预处理参数”章节。建议使用高分辨率三维传感器以确保数据质量达标。所需数据如下:

二维图像

  • RGB 图像或

  • 强度(灰度值)图像

强度图像。
深度信息

  • X-图像(数值需从左至右递增)

  • Y-图像(数值需自上而下递增)

  • Z-图像(值需从传感器附近的点向远点递增;例如当数据以相机坐标系给出时即属此类情况)

(1) (2) (3)
(1)X-图像,(2)Y-图像,(3)Z-图像。
法线(可选)

  • 二维映射(三通道图像)

法线图像。
提供法线图像可提升运行时性能,因为这避免了对其进行计算的必要性。

为缩小搜索范围,可缩减 RGB / 强度图像的域。具体操作详见下文“特定预处理参数”部分。需注意 XYZ 图像与(可选)法线图像的域必须完全一致。此外,所有输入数据中仅有效像素可纳入使用域。

训练和评估数据

训练数据用于针对您的应用场景专门训练和评估网络。

为此所需的数据集包含三维场景及其对应的抓取表面信息(以分割图像形式呈现)。这些数据必须以模型可处理的形式提供。关于三维场景的要求,请参阅上文“三维场景”部分获取更多信息。

关于数据在 HALCON 中如何格式化以供深度学习模型使用,请参阅 深度学习 / 模型 一章。简而言之,字典 DLDatasetDLDatasetDLDatasetDLDatasetDLDatasetdldataset 作为训练和评估流程所需信息的数据库。

DLDatasetDLDatasetDLDatasetDLDatasetDLDatasetdldataset 的数据可通过 read_dl_dataset_3d_gripping_point_detection 进行读取,有关三维抓取点检测 DLDatasetDLDatasetDLDatasetDLDatasetDLDatasetdldataset 所需内容的详细信息,请参阅 read_dl_dataset_3d_gripping_point_detection 的参考文档。

除三维场景外,还需提供分割图像作为真值。分割图像包含两种灰度值,用于标注场景中每个像素点是否为有效的抓取点。您可通过 MVTec 官网获取的 MVTec 深度学习工具(DLT)对数据进行标注。

(1) (2)
(1) 强度图像的标注。(2) 分割图像,标示抓取点(灰色)。

确保整个标注区域为机器人提供稳固的抓取点。标注数据时请考虑以下方面:

  • 抓取点需位于机器人手臂可无障碍接触的表面。

  • 抓取点需位于机器人手臂吸盘可抓取的表面。因此需考虑对象的材质、形状及其相对于地面平面的表面倾斜度。

  • 需考虑机器人吸盘尺寸。

  • 需考虑吸盘吸附强度。

  • 建议将抓取点标注于对象质心附近(尤其针对较重物品)。

  • 抓取点不应设置在对象边缘。

  • 抓取点不应设置在可见对象区域的边界处。

模型输出

作为推理输出,模型将为每个样本返回一个名为 DLResult 的字典。该字典包含以下条目:

  • 'gripping_map':二值图像,用于标注场景中每个像素点是否被模型预测为抓取点(像素值= 1.0)或非抓取点(0.0)。

  • 'gripping_confidence':图像,包含场景中每个点原始未校准的置信度值。

三维抓取点检测结果评估指标

对于三维抓取点检测,HALCON 支持以下评估指标:

mean_pro

所有被标记为抓取类别的真实区域与预测结果的平均重叠度(Per-Region Overlap,每区域重叠度)。该评估指标的详细说明请参见下方参考文献。

mean_precision

抓取类预测的平均像素级精确率。精确率指真正类占所有正类(真正类(TP)与假正类(FP))的比例。

mean_iou

交并比(IoU)是真实像素与抓取类预测像素之间的交并比值。有关此评估指标的详细说明,请参阅 深度学习 / 语义分割与边缘提取

gripping_point_precision

精确率是指真正类占所有正类(真正类与假正类)的比例。

在此指标中,真正类指正确预测的抓取点,即预测点位于真实区域内。但每个区域仅有一个抓取点被视为真正类,同一区域内的额外预测均视为假正类。

gripping_point_recall

召回率是指正确预测的抓取点数量与该抓取类别所有真实区域数量之比。

gripping_point_f_score

为了用单一数值表示精确率和召回率,我们提供 F 分数——即精确率与召回率的调和平均值。

后处理

模型结果 DLResult 可通过 gen_dl_3d_gripping_points_and_poses 进行后处理以生成抓取点。此外,该函数可通过参数化实现:利用 min_area_size 参数剔除小尺寸抓取区域,或作为模板定义自定义选择标准。

该函数向字典 DLResult 中添加以下条目:

特定预处理参数

在预处理步骤中,除了数据外,还需要将预处理参数传递给 preprocess_dl_samples 函数。其中两组预处理参数具有特别显著的影响:

通过缩小输入图像的域范围(使用 reduce_domainreduce_domainReduceDomainReduceDomainReduceDomainreduce_domain),可以限制搜索区域。preprocess_dl_samples 处理域的方式由预处理参数 'domain_handling' 设定。'domain_handling' 应确保仅将关键信息传递至网络进行推理。下图展示了预处理步骤后,不同 'domain_handling' 设置下缩减域的输入图像传递方式。

(1) (2) (3) (4)
(1)缩减域输入图像(红色),(2)'full_domain'图像,(3)'keep_domain'图像,(4)'crop_domain' 图像。

参考文献

Bergmann, P., Batzner, K., Fauser, M., Sattlegger, D. and Steger, C., 2021. The MVTec anomaly detection dataset: a comprehensive real-world dataset for unsupervised anomaly detection. International Journal of Computer Vision, 129(4), pp.1038-1059.


节列表