多种类工业零件堆叠场景的仿真数据集生成方法及装置
技术领域
本发明涉及深度学习技术领域,尤其设计多种类工业零件堆叠场景的仿真数据集生成方法及装置。
背景技术
近年来,面向工业零件理解的深度学习神经网络技术获得了较快的研究和应用,如语义识别、个体分割、位姿估计和机械臂抓取等。训练神经网络需要大量的训练数据,而目前通过手动标注训练数据集的方法过于繁琐和困难,且容易产生误差,难以有效生成大批量数据。因此,具有自动标注能力的仿真数据生成方法显得必要且急迫,能大大促进学习类技术在工业领域的进一步发展。
多种类零件的堆叠场景是指来自多个种类的零件杂乱地堆叠在一起形成的场景,其中的零件可能会来自相同的参数化零件模板,但参数值不同,或者属于不同种类的参数化模板。产品零件的拆解回收场景就是典型的多种类零件堆叠场景。拆解下来的工业零件一般属于不同种类,并散乱堆叠于物料框内等待分拣回收,机器人需要识别各个零件的种类并实现个体级别的分割和位姿估计,从而引导机械臂将全部零件进行分拣并放置到相应种类的回收框内。
现有面向工业场景的仿真数据集需要预先为场景中待识别的每一个种类构建一个模板模型。然而目前的物体建模方法是将完全相同的物体作为一个种类,单独为其生成一个三维模型。若将拆解回收场景中的每一种零件都视为一个种类,便会导致建模工作量过大、模型生成过程繁琐复杂等问题。此外,现有仿真数据集生成方法大多只包含单一种类的物体,或只生成图像或点云的单模态数据,丰富度较低。比如,CN109583474A公开了一种工业大数据处理的训练样本生成方法,该方法通过图像生成对抗网络构建出各类工业缺陷的图像单模态数据集。CN112562067A公开了一种生成大批量点云数据的方法,该方法通过建立物体的三维模型并在模型上采样出表面点云,然后将场景中各个组成部分的表面点云进行组合处理生成组合表面点云,多次重复以生成大批量点云单模态数据集。多种类零件堆叠场景中零件相互遮挡严重、种类复杂多样等问题会给机器人视觉系统带来巨大的挑战。
以上背景技术内容的公开仅用于辅助理解本发明的构思及技术方案,其并不必然属于本专利申请的现有技术,在没有明确的证据表明上述内容在本专利申请的申请日已经公开的情况下,上述背景技术不应当用于评价本申请的新颖性和创造性。
发明内容
为解决上述技术问题,本发明提出一种多种类工业零件堆叠场景的仿真数据集生成方法及装置,能够快速便捷地生成属于同一参数化模板的不同参数的零件物体模型。
为了达到上述目的,本发明采用以下技术方案:
本发明公开了一种多种类工业零件堆叠场景的仿真数据集生成方法,包括以下步骤:
S1:建立预定尺寸的物料框的三维模型和不同种类的工业零件的三维模型,并生成多种类多实例参数化零件模型库;
S2:从模型库中采样出预定数量的零件模型;通过动力学仿真引擎,对采样出的零件模型进行自由落体运动仿真和碰撞仿真,以生成多种类多实例零件的堆叠场景,并自动标注和保存堆叠场景中每个物体的类别标签和位姿标签;
S3:根据实际相机的相关参数和光照环境,设置渲染引擎中的仿真相机和仿真光源的参数,为每个堆叠场景分别生成并记录透视投影视角和正交投影视角下的深度图、RGB图、分割图以及单个物体的完整掩码图;
S4:重复上述S2-S3步骤,生成多种类工业零件堆叠场景的仿真数据集。
优选地,步骤S1中生成多种类多实例参数化零件模型库具体包括:
S11:通过三维建模软件建立一个带有a个驱动参数的参数化模板模型;
S12:对每个驱动参数设置采样范围,使得每个驱动参数均获得b个取值;
S13:对每个驱动参数的取值进行自由组合,以得到由ba个参数组合构成的参数表;
S14:将参数表以脚本形式导入三维建模软件;
S15:三维建模软件读取第k个参数组合,并将组合中的参数值作为该参数化模板的a个驱动参数,生成第k个参数化实例模型,直至生成ba个属于该参数化模板的实例,其中k=1,2,…,ba。
优选地,步骤S2具体包括:
S21:设置动力学仿真引擎中的重力加速度g、生成仿真堆叠场景的个数N和每个堆叠场景包含物体的个数范围[m,n];
S22:随机生成物料框的位姿并导入物料框三维模型,并将物料框内的区域正上方设置为零件做自由落体运动前的初始位置区域;
S23:随机生成该堆叠场景所包含的物体个数p,其中m≤p≤n;
S24:在建立好的模型库中有放回地重复随机抽取1个模型,直到抽取出p个零件模型;
S25:将p个零件放置于自由落体运动前的初始位置区域,利用动力学仿真引擎对零件进行自由落体运动仿真和碰撞仿真;
S26:待场景中p个零件达到稳定状态后得到最终的仿真堆叠场景;
S27:自动获取并保存物料框及各零件的位姿标注信息和种类标注信息;
S28:清空场景;
S29:重复步骤S22至S28,直至生成并记录N个仿真堆叠场景。
优选地,步骤S3还包括:计算每个堆叠场景内每个物体的可见度。
优选地,步骤S3中为每个堆叠场景分别生成并记录透视投影视角和正交投影视角下的深度图、RGB图、分割图的步骤分别包括:
S301:根据物料框和p个零件的类别标签和位姿标签导入相应的物料框和零件的三维模型;
S302:构造包含p个零件的堆叠场景。
优选地,步骤S3中为每个堆叠场景分别生成透视投影视角和正交投影视角下的深度图还具体包括:
S311:设置仿真相机z通道的最大深度值以及深度图的最大存储值;
S312:计算并存储每个像素的深度信息;
S313:生成堆叠场景在透视投影视角和正交投影视角下的深度图。
优选地,步骤S3中为每个堆叠场景分别生成透视投影视角和正交投影视角下的RGB图还具体包括:
S321:设置仿真光源参数;
S322:设置物料框和零件的材质、纹理和颜色;
S323:生成堆叠场景在透视投影视角和正交投影视角下的RGB图。
优选地,步骤S3中为每个堆叠场景分别生成透视投影视角和正交投影视角下的分割图还具体包括:
S331:设置物料框和零件的颜色编码值;
S332:将属于同一物体的像素点存储为相同的颜色编码值;
S333:生成堆叠场景在透视投影视角和正交投影视角下的分割图。
优选地,步骤S3中为每个堆叠场景分别生成透视投影视角和正交投影视角下的单个物体的完整掩码图具体包括:
S341:根据第i个物体的类别标签和位姿标签导入相应的物体的三维模型;
S342:构造只包含第i个物体的场景;
S343:渲染引擎对物体所在区域包含的像素进行编码;
S344:输出只包含第i个物体的完整掩码图;
S345:重复步骤S341至S344,直至输出包含p+1张单个物体的完整掩码图的集合,p为对应的堆叠场景中包含的零件数量,p+1为p个零件和1个物料框的数量。
本发明还公开了一种多种类工业零件堆叠场景的数据生成装置,包括三维建模单元、动力仿真单元、渲染处理单元和第一、第二、第三存储单元,所述三维建模单元用于建立物料框及不同种类的工业零件的三维模型并存储于第一存储单元;所述动力学仿真单元用于生成堆叠场景中物料框和各个零件的类别标签和位姿标签并存储于第二存储单元,所述渲染处理单元用于生成每个堆叠场景透视投影视角和正交投影视角下的深度图、RGB图、分割图以及单个物体的完整掩码图并存储于第三存储单元。
与现有技术相比,本发明的有益效果包括:
1.本发明基于参数化模板,提出了一种面向拆解回收场景的参数化零件建模方法,能够快速、便捷地生成属于同一参数化模板的不同实例。
2.通过自动标注的方式,该方法能够快速生成大批量与现实世界相近的多模态仿真数据,相较于人工手动标注的方式,大大节省了人工成本和时间成本。
3.该方法能够生成面向多种类多实例零件堆叠场景的RGB-D多模态仿真数据,适用于诸如基于视觉引导的机器人拆解回收系统等应用场景,能够为相关研究和应用提供大批量数据支撑。
4.该方法能够生成正交和透视两种不同投影视角下的RGB-D多模态仿真数据,相较于单模态数据生成方法,该方法获得的数据信息更加丰富,为基于多模态数据的相关研究和基于多传感器的相关应用提供了数据保障和评价标准。
5.该方法能够计算出堆叠场景中每个物体的可见度标签,从而筛选出堆叠场景中被严重遮挡的零件,即机器人难以抓取的零件,有利于机器人进行抓取可行性规划。
附图说明
图1是本发明优选实施例的多种类工业零件堆叠场景的仿真数据集生成方法的流程图;
图2是参数化零件的生成方法流程图;
图3是通过动力学仿真引擎生成仿真堆叠场景的流程图;
图4是在不同投影视角下得到的图像比较示意图;
图5是通过渲染引擎渲染堆叠场景的流程图;
图6是透视投影视角下图像坐标系与相机坐标系的转换关系示意图;
图7是正交投影视角下图像坐标系与相机坐标系的转换关系示意图;
图8是场景中每个零件的可见度计算流程图;
图9是数据生成装置的构成示意图。
具体实施方式
以下对本发明的实施方式作详细说明。应该强调的是,下述说明仅仅是示例性的,而不是为了限制本发明的范围及其应用。
为解决诸如基于视觉引导的机器人拆解回收系统的场景理解等问题,提供一种面向多种类多实例工业零件堆叠场景、快速便捷地生成大批量多模态仿真训练数据的方法,本发明提出了以下的方案。
如图1所示,本发明的一个实施例提出了一种生成多种类多实例零件堆叠场景的RGB-D多模态仿真数据集的方法,主要面向以工业零件的拆解回收为例的应用场景。该方法主要分为以下五个步骤进行。
S1:根据实际需求建立合适尺寸的物料框三维模型,然后为不同种类的可回收零件建立三维模型,获得多种类零件或多种类参数化零件模型库;
S2:为了构造一个散乱的多种类多实例工业零件堆叠场景,通过随机采样的方法从模型库中采样出一定数量的零件模型;为了模拟诸如工业零件拆解回收的实际场景,通过动力学仿真引擎,对采样出的零件模型进行自由落体运动仿真和碰撞仿真,以生成多种类多实例零件的堆叠场景,并自动标注和保存场景中每个物体的类别标签和位姿标签;
S3:根据实际相机的相关参数和光照环境,设置渲染引擎中的仿真相机和仿真光源的参数,为堆叠场景分别生成并记录透视投影视角和正交投影视角下的深度图、RGB图、分割图以及单个物体的完整掩码图,同时计算出该场景内每个物体的可见度,并记录场景中的每个物体在相机坐标系下的标签信息。
S4:重复上述S2-S3步骤即可生成大批量多模态仿真数据。
本发明的核心是面向多种类工业零件的堆叠场景,提出了一种参数化零件建模方法;此外还提出了一种能够在不同投影视角下,生成多种类多实例零件堆叠场景的RGB-D多模态仿真数据的方法。该方法通过自动标注的方式,可以依靠计算机自动快速地生成大批量用作神经网络训练的多模态仿真数据,以实现基于多模态传感器的机器视觉系统在多种类多实例零件堆叠场景下完成场景理解任务。
具体地,本发明优选实施例主要面向诸如工业零件的拆解回收应用场景,提出了一种生成多种类多实例零件堆叠场景的RGB-D多模态仿真数据集的方法。
本发明的具体技术流程描述如下:
一、建立物料框模型和可回收零件模型库
真实的拆解回收场景往往由上百个零件种类和实例组成。在诸如基于视觉的机器人拆解回收系统中,需要预先为每一个种类构建一个模板模型。目前的物体建模方法是将完全相同的物体作为一个种类,生成一个三维模型。若将场景中的每一种零件都视为一个种类,便会导致建模工作量过大、模型生成过程繁琐复杂等问题。在实际的工业场景中,零件通常是参数化的。对于属于同一个参数化模板的工业零件,其驱动参数个数和类型是固定不变的。所以在本发明优选实施例中,对于参数化零件的建模,将属于同一个参数化模板的不同实例作为一个类别,由此便可以大大降低多种类物体建模的复杂度和工作量。本发明提出了一种快速便捷地生成多种类多实例参数化零件模型的方法,其流程如图2所示。首先,通过三维建模软件驱动,获得带有a个驱动参数的参数化模板;然后设置对每个驱动参数进行采样的范围,通过某种采样方法,使得每个驱动参数均获得b个取值,所采用的采样方法包括但不限于随机采样、等间距采样等。而后,对每个驱动参数的取值进行自由组合,从而得到由ba个参数组合构成的参数表,将参数表以脚本形式导入三维建模驱动软件。最后,三维建模驱动软件读取第k个参数组合(k=1,2,…,ba),并将组合中的参数值作为该参数化模板的驱动参数,生成第k个参数化实例模型,直至生成ba个属于该参数化模板的实例。
为了构造出诸如零件分拣回收的仿真场景,在生成仿真训练数据前,通过建模软件建立合适尺寸的物料框三维模型和不同种类的可回收零件三维模型,所采用的建模软件包括但不限于SolidWorks、Pro/ENGINEER等,零件的形式包括但不限于多种类多实例的参数化零件等,三维模型文件的格式包括但不限于obj、stl、step等。最后通过多种类多实例零件的三维模型构建出一个零件模型库。
二、利用动力学仿真生成堆叠场景
输入:物料框模型和零件模型库
输出:N个场景下物料框和各零件的位姿标注信息和种类标注信息
本发明通过动力学仿真引擎来对零件进行自由落体运动仿真和碰撞仿真,来模拟诸如在拆解回收场景下,多种类多实例的零件散乱堆叠在物料框中的真实场景。所采用的动力学仿真引擎包括但不限于Bullet、PhysX等。首先设置动力学仿真引擎中的重力加速度g、生成仿真堆叠场景的个数N和每个场景包含物体的个数范围[m,n]。在实际的拆解回收场景中,物料框可能任意摆放,为使所生成的仿真堆叠场景与现实情况足够相近,生成每个场景前先随机生成物料框的位姿并导入物料框模型,并将物料框内的区域正上方设置为零件做自由落体运动前的初始位置区域。然后,随机生成该场景所包含的物体个数p(m≤p≤n),并在可回收零件模型库中有放回地重复随机抽取1个模型,直到抽取出p个零件模型,所以,在一个场景中,某个零件模型的个数可能不止一个。再将p个零件放置于自由落体运动前的初始位置区域,利用动力学仿真引擎对零件进行自由落体运动仿真和碰撞仿真。待场景中p个零件达到稳定状态后,便得到了最终的仿真堆叠场景。然后,自动获取并保存物料框及各零件的位姿标注信息和种类标注信息。最后,清空场景并开始下一个场景的生成,重复以上流程直至生成并记录N个仿真堆叠场景。通过动力学仿真引擎生成仿真堆叠场景的流程图如图3所示。
三、利用渲染仿真引擎渲染和标注场景的方法
输入:N个场景下物料框及各零件的种类标注信息和位姿标注信息
输出:N个场景下的深度图、RGB图、分割图和每个零件完整的掩码图
为了生成多模态仿真数据和标注信息,本发明根据实际相机的参数来设置渲染引擎中的仿真相机的参数,相机参数包括但不限于:相机生成图像的分辨率W×H、相机的焦距f、相机的传感器尺寸、相机的位姿以及相机的投影视角类型。通过步骤三生成的物料框及零件的类别标签和位姿标签,将物料框模型和零件模型导入渲染引擎中,构造出堆叠场景。所采用的渲染引擎包括但不限于:Blender、Renderman、Maxwell Render等。根据实际需求,可以设置仿真相机的投影视角模式,选择生成透视投影视角或正交投影视角下的多模态数据。透视投影视角下生成的图像接近于照相机的拍摄效果和人类肉眼观察事物的视觉效果,符合人类的心理习惯,能够更逼真地反映形体的空间形象,模拟照相机拍出的图像。正交投影视角下生成的图像实质上是透视投影的一种特例,不考虑物体的透视效果,所以不存在透视畸变现象,只是将物体所在三维空间的点一一对应地投影到二维视图平面上,所以能够完整、准确地表达物体在空间中的实际形状、位置和姿态。两种不同投影视角得到的图像比较如图4所示。为了尽可能地提供丰富的标注信息,本发明利用渲染引擎生成了堆叠场景在两个投影视角下的深度图、分割图、RGB图以及包含单个物体的完整掩码图的集合,生成流程如图5所示。
为了生成场景的深度图,首先设置读取仿真相机z通道的最大深度值以及深度图的最大存储值,而后通过渲染引擎在读取范围内读取相机到物体可见表面的深度信息,并将深度信息存储在每个像素中,以生成场景的深度图。根据实际需要,可以将深度图中的深度信息转换成三维点云信息。深度图中记录的是像素坐标系下的信息,要将其转为相机坐标系下的三维点云坐标,需要进行坐标系转换计算。透视投影和正交投影的坐标系转换模型分别如图6、图7所示。
以透视投影为例,图6中包括了四个坐标系:世界坐标系Ow-xwywzw,相机坐标系Oc-xcyczc,像素坐标系O1-xy和图像坐标系O-uv。该模型坐标系的建立以线性摄像机模型为基础,以相机的透镜中心为原点Oc建立相机坐标系Oc-xcyczc,平面Oc-xcyc平行于图像平面;以图像的左上角为原点O建立像素坐标系O-uv,其中轴线zc垂直于图像平面,轴线与平面的交点为相机的焦点,在像素坐标系上的坐标为O1(u0,v0),即图像的中心点;设像素在u,v两坐标轴方向上的物理尺寸分别为dx,dy,焦距OcO1=f,单位均为mm。以O1为原点建立图像坐标系O1-xy,设某一目标点在相机坐标系下的坐标为(xc,yc,zc),其在图像上的投影在图像坐标系下的坐标点为(u,v),则在透视投影中,两者的转换关系为:
其中,相机坐标系下的坐标的单位为m,像素坐标系单位为pixel。因此相机坐标系下xc和yc的解算方法为:
在正交投影中,图像直接反映了物体在三维空间中的位置和姿态,图像的大小直接反映了对实际场景进行正交投影的范围(X,Y),所以图像中物体的位置只于物体的实际位置有关。设相机生成图像的分辨率为W×H,则在像素坐标系中位于(u,v)的点到相机坐标系下的三维坐标(xc,yc,zc)的转换关系为:
为了得到像素级别的个体分割标注信息,首先用不同的编码值分别设置物料框及各个零件表面的颜色,然后通过渲染引擎生成场景的分割图,即分割图中属于同一物体的像素存储着相同的颜色编码值,如图4中的分割图所示。
为了得到仿真场景的RGB图像,首先设置渲染引擎中仿真光源的参数,如:光源类型(包括但不限于日照光源、点光源、面光源等)、光源强度、光源位置和朝向等。然后设置物料框及零件的材质、纹理和颜色等属性,最后通过渲染引擎以相机视角生成场景的RGB图。
为了得到每个物体的可见度标签来描述物体在该场景下被遮挡的程度,利用物料框及零件的种类标注信息和位姿标注信息,将物料框及零件分别单独导入渲染引擎中,将单个物体在图像中所包含的像素进行颜色编码,获得单个物体在完全未被遮挡情况下的图像。例如,对于一个包含p个零件的堆叠场景,渲染引擎会为其生成包含p+1张单个物体(p个零件+1个物料框)的完整掩码图的集合。
四、场景中每个物体可见度的计算
输入:场景的分割图和场景中单个物体完整的掩码图集合
输出:场景中单个物体的可见度标签
在诸如一般的拆解回收场景中,由于多种类多实例的零件散乱地堆叠在物料框中,部分零件会出现非常严重的遮挡现象。对于机器人的分拣任务来说,高遮挡率的零件代表着这些物体处于底部,机器人无法对其进行有效抓取。本发明所生成的仿真数据,通过场景中第i个物体的可见度Vi来描述该物体的被遮挡程度,即该物体被遮挡的程度越高,其可见度越低,0≤Vi≤1。
可见度V
i的计算过程如图8所示。对于包含1个物料框和p个零件的场景,首先统计该场景的分割图中第i个物体(其中,i=1,2,…,p,p+1)所包含的像素点个数P
i,并统计第i个物体的完整掩码图中该物体所包含的像素点个数P
i_max。然后,该场景中第i个物体的可见度V
i由公式
计算得到。值得注意的是,由于不同投影视角带来的图像信息差异,通过在不同投影视角下计算得到的可见度会有一定的差异。
数据生成装置构成如图9所示,首先三维建模单元负责建立物料框及不同种类零件的三维模型并存储于存储单元Ⅰ;然后,动力学仿真单元负责生成堆叠场景中物料框和各个零件的种类标注信息和位姿标注信息,并存储于存储单元Ⅱ;最后,渲染处理单元负责生成场景的RGB-D多模态数据集和标注信息,并存储于存储单元Ⅲ。
基于研究发现现有技术中存在以下的问题:将不同的实例分别视为不同的种类进行建模;大部分需依靠人工手动标注的方式生成数据的标注信息;所生成的训练数据集存在物体种类相对单一、场景复杂度较低、数据模态单一等问题;所生成的数据仅提供单投影视角的数据;所生成的复杂场景数据集缺少物体的可见度标签。因此,在本发明中,将一个参数化模板视为一个种类,提出了一种多种类工业零件堆叠场景的参数化零件建模方法;通过自动标注的方式,自动生成大批量与真实世界相近的仿真数据;能够生成面向多种类多实例的工业零件堆叠场景的多模态仿真数据;能够在不同投影视角下生成场景的RGB-D多模态数据;为堆叠场景提供了每个物体的可见度标签,有利于机器人进行抓取可行性规划。
具体地,本发明能够实现以下目的:
1.提出了一种面向多种类工业零件堆叠场景的参数化零件建模方法,能够快速便捷地生成属于同一参数化模板的不同参数的零件物体模型;
2.利用自动标注的方式,通过输入物体的三维模型进行动力学仿真和场景渲染,可生成大批量用作训练神经网络的多模态仿真数据和标注信息。相较于手动标注的方式,该方法能够大大降低人工成本和时间成本;
3.该方法能够生成多种类多实例物体的仿真多模态堆叠数据集,适用于基于视觉引导的机器人拆解回收系统,能够为相关研究和应用提供大批量数据支撑;
4.该方法能够生成正交和透视两种不同投影视角下的RGB-D多模态仿真数据,相较于单模态数据生成方法,该方法获得的数据信息更加丰富,为基于多模态数据的相关研究和基于多传感器的相关应用提供了数据保障和评价标准。
5.该方法能够计算出堆叠场景中每个物体的可见度标签,从而筛选出堆叠场景中被严重遮挡的零件,即机器人难以抓取的零件,有利于机器人进行抓取可行性规划。
本发明的背景部分可以包含关于本发明的问题或环境的背景信息,而不是由其他人描述现有技术。因此,在背景技术部分中包含的内容并不是申请人对现有技术的承认。
以上内容是结合具体/优选的实施方式对本发明所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属技术领域的普通技术人员来说,在不脱离本发明构思的前提下,其还可以对这些已描述的实施方式做出若干替代或变型,而这些替代或变型方式都应当视为属于本发明的保护范围。在本说明书的描述中,参考术语“一种实施例”、“一些实施例”、“优选实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不必须针对的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施例或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施例或示例以及不同实施例或示例的特征进行结合和组合。尽管已经详细描述了本发明的实施例及其优点,但应当理解,在不脱离由所附权利要求限定的范围的情况下,可以在本文中进行各种改变、替换和变更。