1.开发环境
Linux 16.04.7 LTS : 代码开发平台
Visual Studio Code 1.78.2: IDE代码撰写调试工具
Meshlab v2022.02: 工件模型编辑工具,用于模型的重建和后处理
Blender 3.3.1 物理仿真和渲染引擎
BlenderProc 2.5.0 基于blender的python接口开发的仿真渲染工具箱,用于与blender实现指令交互
OpenCV-Python 4.7.0 用于渲染图像的后处理,生成用于训练的图像和图像标签
Pytorch1.9.0/Cuda10.2 神经网络训练框架
2.方法实现
工件抓取场景的主要挑战在于:
(1)堆叠情况复杂,需要根据工件的遮挡情况对抓取目标进行判定。
(2)金属工件存在反光问题,可能导致深度图像信息的缺失,使得十分依赖于深度信息的目标检测和配准方法面临挑战。
(3)传统算法的步骤繁琐,无法快速对目标位姿进行判定。但基于深度学习的方法依赖于大量标注的训练数据,工件场景的工件数目过大,标注成本十分昂贵。
本课题针对以上三个问题设计了有效的解决方案,总体流程如图1所示:

图1 项目总体实现方法和技术流程
首先我们使用工件的模型或者基于工件场景点云制作的网格模型,结合blender虚拟仿真引擎生成训练数据。接着我们根据工件的抓取规则对训练标签进行了过滤,生成适用于抓取目标检测和分割的神经网络。最后我们采用BlenderMask实例分割网络训练模型,并在RobotPilot平台进行了现实场景的工件抓取实验测试。
2.1 虚拟仿真数据生成与处理
我们通过 悉灵杯”课题研究进展(二)-基于三维模型/场景点云的虚拟仿真数据生成(审核中,暂时无法添加链接)中的虚拟数据生成管道,生成了三套不同场景的模型训练数据及数据标签,详情如表1所示:
表1 工件场景虚拟仿真数据详情
场景名称
|
模型类型
|
场景类型
|
图像数目
|
连杆场景
|
完整模型
|
杂乱堆叠
|
10955
|
薄片场景
|
手工重建单面点云
|
杂乱堆叠
|
10471
|
转子场景
|
手工重建单面点云
|
阵列
|
20121
|
在杂乱堆叠场景中,工件的无序摆放导致部分工件被严重遮挡,在实际抓取过程中,我们并不会对这类工件进行抓取,因此,需要在后处理过程中剔除这类工件的标签,仅保留未遮挡目标的标签。
被遮挡率计算模块:剔除遮挡目标的直接方法就是计算目标的被遮挡率,其可以定义为:1-(目标的实际掩膜面积/目标未遮挡情况下的掩膜面积),因此在虚拟场景中已知模型位姿和相机参数的情况下,可以采用点云投影的方法计算每个实例在未遮挡情况下的掩膜面积,与实际的渲染掩膜计算得到。同时由于离散点云投影会导致掩膜存在间隙,我们在投影后还对掩膜进行了孔隙填充,但会导致边界存在略微差异,即当物体遮挡率为0时,实际遮挡率约为0.02-0.1。在后续实验中,我们将遮挡率小于0.3的目标定义为我们的可抓取对象。处理过程示例如图2所示。

图2 遮挡率计算示例
截断工件去除:在场景中有部分虽然遮挡率满足条件,但是被其他工件截断为了两部分。这类工件在抓取过程中也是不进行抓取的,因此我们采用OpenCV计算每个工件掩膜的封闭区域数目,当数目大于等于2,且两部分面积比大于1:4我们认为工件被截断并进行了剔除。
歧义位姿去除:在实际抓取中,一些工件即使未被遮挡和截断,受限于机械臂的抓取自由度(例如只能采用平面抓取),其特殊的位姿导致无法进行抓取,对于这类工件,我们基于其位姿计算抓取平面轴向,当理想抓取平面轴向与实际工件抓取平面轴向大于某个角度时(根据实际确认,本课题中选用60°)认为其不满足抓取条件,进行剔除。
结合前面的过滤步骤后,我们最终的训练数据标签如图3:

图3 过滤后训练数据示例
2.2 实例分割网络模型训练
在完成训练数据生成和过滤之后,我们使用 悉灵杯”课题研究进展(二)-基于三维模型/场景点云的虚拟仿真数据生成(审核中,暂时无法添加链接)中介绍的BlendMask进行实例分割模型的训练。其网络模型结构如图4:

图4 BlednMask网络模型框架
其训练过程主要包含以下步骤:
(1)将渲染得到的图像resize为固定分辨率(本课题中为1024*1024*3)的图像作为模型的输入
(2)通过backbone网络提取图像的高维特征并使用FPN(Feature Pyramid Network)网络对底部特征图进行上采样,同时拼接融合对应尺度的浅层特征。本课题中我们使用八倍下采样后的特征P3(128*128)作为后续目标检测网络的输入。
(3) 使用FCOS预测目标的中心点位置,中心度,包围盒尺寸,同步输出每个实例的注意力特征。
(4)使用blender module整合从Bottom module从FPN输出特征提取的图像Base(全局特征)以及FCOS的输出信息对每个实例掩膜进行预测,输出最终的实例分割结果。
损失函数设计:模型的训练依赖于损失函数的设计,在实例分割任务中,我们使用了多种损失函数组合用于拟合不同的任务:
(1)分类损失:FCOS会在输入特征的每个像素点预测目标的类别置信度,本课题中将目标在特征图的正样本点定义为边界盒中心点以及附近的四个点,导致与负样本点的数量差距较大,因此我们使用Sigmoid Focal Loss(SFL) 作为分类损失函数:

p_t:模型预测的概率,对于正样本为p_t,对于负样本则为1-p_t
α_t:平衡系数,用于调节处理类别不平衡问题
γ:调焦参数,用于调整调制因子的权重,当γ增加时,模型会更加关注难以分类的样本。
(2)中心度损失:中心度用于表示预测框的中心点与真实框的中心点之间的接近程度,本课题中使用二元交叉熵(BCE)损失来学习中心度分数,有助于减少接近目标边界的低质量预测。
(3) 边界框回归损失:FCOS中使用了中心度加权的IOU损失来计算预测框与真实框之间的定位差异,其中IOU为预测包围框和实际包围框相交区域面积与合并面积的比值:


其中pre为模型预测的包围盒,gt为标签包围盒。
模型训练配置:
训练平台:
CPU: Intel(R)
Xeon(R) CPU E5-2660 v4 @ 2.00GHz,
GPU: NVIDIA GeForce
2080ti-12G
训练参数配置:
base learning
rate(初始学习率):0.005
Learning Rate
Scheduler(学习率衰减):10倍/45epoch
Optimizer(优化器):SGD
Batch Size(批次大小):8
我们设置最大训练轮次为600,并采用早停的方法避免模型过拟合。
3. 项目成果
3.1 实例分割模型性能测试
为了直观展示我们的模型性能,我们使用离线采集的数据对模型进行了性能测试,评价指标主要包含:
目标检测评价指标:
(1)Precision(查准率): 实际正样本占模型预测正样本比例,越高说明模型预测越准确。
(2)Recall(召回率):模型预测的正样本占所有正样本的比例,越高说明模型漏检的目标越少。
(3)F1Score: 结合Precison和Recall综合评价模型性能。
(4)Average Precision,AP(平均精度):根据不同的置信度阈值,模型会得到不一样的召回率和查准率,定义两者对应关系绘制PR曲线, AP越高说明模型预测结果越稳定。
分割质量评价指标:
(1)IOU(交并比): 真值掩膜与模型预测掩膜的交集面积占并集面积的比例,预测时根据IOU的阈值确认目标是否被正确检测到。
(2)COVER(覆盖率):真值掩膜与模型预测掩膜重叠面积占真值掩膜的比例。
(2)EXTRA (超出率): 预测的掩膜不属于真值掩膜的比例。越低说明边界分割效果越好
需要注意的是,测试数据为真实数据,而训练模型使用的完全是虚拟仿真数据,并且未使用现实数据进行模型的微调,最终的测试结果如表2中所示:
表2 现实场景下模型实例分割性能测试

由表中数据可以看出,采用虚拟数据训练的工件实例分割模型能够泛化到现实场景的目标检测和实例分割任务当中,并且召回率均能保持在95%以上,查准率较低的原因在于对于工件遮挡率的定义使得模型会检出部分被遮挡的工件,在抓取过程中我们可以通过 点云配准和轮廓匹配等方法将其剔除。其中薄片场景的性能与其他两个场景的性能差距较大,考虑是由于薄片为杂乱堆叠的复杂场景,并且其工件模型由三维重建得到,与实际的工件特征存在更大的差异性。
现实场景下的测试结果与标签对比(图5):



图5 现实场景下模型分割效果示例
3.2 RobotPilot工件位姿估计测试
Robotpilot是海康机器人自主研发的机器人视觉引导软件,集视觉处理、轨迹规划、机器人托管、渲染仿真四大功能于一体,其中也包含了AI模块,结合深度学习模型对工件位姿进行估计。我们将训练的模型导入到Robotpilot中,使用离线采集的RGBD数据进行位姿估计实验,并与Robotpilot内置的位姿估计算法进行实验对比。
测试结果示例(图6):



图6 Robotpilot有无AI模型目标检测与位姿估计效果对比
位姿估计结果示例可参考附件(连杆.mp4,薄片.mp4,转子.mp4)
4 项目总结
本项目采用基于深度学习的方法,使用结合三维模型和物理仿真引擎生成的虚拟数据进行模型训练,并对现实场景下的工件进行检测和实例分割,解决了现实场景下数据采集不便与标注困难的问题,并且通过实验验证在杂乱堆叠场景以及阵列场景下有着良好的性能表现。目前存在的主要问题是杂乱堆叠场景下,模型训练数据与实际场景不匹配,为了保证较高的召回率需要提高遮挡率阈值,导致查准率较低,需要过多的后处理来剔除不合理目标。但是总体而言,在现实场景下具有很好的应用前景。
课题阶段性成果:
悉灵杯”课题研究进展(一)-实例分割网络模型搭建与实验场景介绍
悉灵杯”课题研究进展(二)-基于三维模型/场景点云的虚拟仿真数据生成
团队信息
团队名称:东华老乡
团队成员:章高华、张诗迪、陈泓傑