掌桥专利:专业的专利平台
掌桥专利
首页

一种姿态识别方法、装置及系统

文献发布时间:2023-06-19 09:44:49


一种姿态识别方法、装置及系统

技术领域

本申请涉及图像识别技术领域,特别是涉及姿态识别方法、装置及系统。

背景技术

随着科技水平的提高,整个社会都向着智能化、自动化的方向发展。

人工智能为机器人未来发展带来了无限的可能,通过对神经网络模型进行训练,从而使得基于该网络模型控制的机器人能够自主的学习识别物体的姿态。

姿态估计是增强现实、虚拟现实、机器人领域的关键;但目前为止,姿态估计存在精度差等问题。

发明内容

基于此,本发明提供一种姿态识别方法、装置及系统。

本发明第一方面提供一种姿态识别方法,所述姿态识别方法包括:

获取目标物的N张图像;其中,所述N张图像分别归属于N个图像传感器坐标系;且N≥2;

获取姿态识别模型;及

将所述N张图像输入所述姿态识别模型中,输出所述目标物的识别结果。

优选的,所述姿态识别模型为单个;

将所述N张图像输入所述单个姿态识别模型中,输出所述目标物的识别结果。

优选的,所述姿态识别模型为M个;其中,2≤M≤N;

将所述N张图像分别输入所述M个姿态识别模型中,分别输出所述目标物的识别结果。

优选的,所述识别结果为在一个或多个图像传感器坐标系下的所述目标物的姿态识别结果。

优选的,所述识别结果为所述N张图像中的每张图像中的目标物关联的特征信息的识别结果;

所述输出所述目标物的识别结果之后还包括:

获取所述识别结果;

根据所述识别结果,生成所述目标物分别在多个图像传感器坐标系下的姿态识别结果;或

所述识别结果为所述目标物的第一部分姿态识别结果与所述预处理识别结果的结合;

所述输出所述目标物的识别结果之后还包括:

获取所述预处理识别结果;

根据所述预处理识别结果,确定所述目标物的第二部分姿态识别结果;

以所述第一部分姿态识别结果和所述第二部分姿态识别结果,作为所述目标物的姿态识别结果。

优选的,所述姿态识别方法还包括:

优化所述目标物的姿态识别结果,得到优化结果。

优选的,所述获取目标物的N张图像之前还包括:

获取N张初始图像;其中,所述N张初始图像中的每张初始图像包括前景和复杂背景,所述前景代表所述目标物;

提取所述每张初始图像中的所述前景,生成只包括所述前景或单一背景的所述目标物的N张图像。

本发明第二方面提供一种姿态识别训练方法,所述姿态识别训练方法包括:

获取训练样本集;其中,所述训练样本集包括分别归属于N个图像传感器坐标系下的训练子样本集的集合;

获取姿态识别模型的初始模型;

基于所述训练样本集对所述初始模型进行训练,得到所述姿态识别模型;所述姿态识别模型,用于对输入的所述目标物的N张图像,输出所述目标物的识别结果。

本发明第三方面提供一种姿态识别装置,所述姿态识别装置包括:

目标图像获取模块,用于获取目标物的N张图像;其中,所述N张图像分别归属于N个图像传感器坐标系;且N≥2;

模型获取模块,用于获取姿态识别模型;及

结果输出模块,将所述N张图像输入所述姿态识别模型中,输出所述目标物的识别结果。

优选的,所述模型获取模块,用于获取单个所述姿态识别模型;

所述结果输出模块,用于将所述N张图像输入所述单个姿态识别模型中,输出所述目标物的识别结果;或

所述模型获取模块,用于获取M个所述姿态识别模型;其中,2≤M≤N;

所述结果输出模块,用于将所述N张图像分别输入所述M个姿态识别模型中,分别输出所述目标物的识别结果。

优选的,所述识别结果为在一个或多个图像传感器坐标系下的所述目标物的姿态识别结果;或

优选的,所述识别结果为所述N张图像中的目标物关联的特征信息的识别结果;

所述姿态识别装置还包括:

识别结果获取模块,用于获取所述识别结果;

姿态结果生成模块,用于根据所述识别结果,生成所述目标物的姿态识别结果;或

所述识别结果为所述目标物的第一部分姿态识别结果与预处理识别结果的结合;

所述姿态识别装置还包括:

预处理结果获取模块,用于获取预处理识别结果;

第二结果生成模块,用于根据预处理识别结果,生成所述目标物的第二部分姿态识别结果。

识别结果确定模块,用于以第一部分姿态识别结果和第二部分姿态识别结果,作为所述目标物的姿态识别结果。

优选的,所述姿态识别装置还包括:

优化结果生成模块,用于优化所述目标物的姿态识别结果,得到优化结果。

优选的,所述姿态识别装置还包括:

初始图像获取模块,用于获取N张初始图像;其中,所述N张初始图像中的每张初始图像包括前景和复杂背景,所述前景代表所述目标物;

目标图像生成模块,用于提取所述每张初始图像中的所述前景,生成只包括所述前景或单一背景的所述目标物的N张图像。

本发明第四方面提供一种姿态识别训练装置,所述姿态识别训练装置包括:

训练样本获取模块,用于获取训练样本集;其中,所述训练样本集包括分别归属于N个图像传感器坐标系下的训练子样本集的集合;

初始模型获取模块,用于获取姿态识别模型的初始模型;

模型训练模块,用于基于所述训练样本集对所述初始模型进行训练,得到所述姿态识别模型;所述姿态识别模型,用于对输入的目标物的N张图像,输出所述目标物的识别结果。

本发明第五方面提供一种姿态识别系统,所述姿态识别系统包括N个图像传感器和控制装置;

所述N个图像传感器,用于采集目标物的N张图像;

所述控制装置,用于获取所述目标物的N张图像;其中,所述N张图像分别归属于N个图像传感器坐标系,且N≥2;获取姿态识别模型;将所述N张图像输入所述姿态识别模型中,输出所述目标物的识别结果;或

所述N个图像传感器,用于采集目标物的N张初始图像;

所述控制装置,用于获取所述目标物的N张初始图像;用于获取N张初始图像;其中,所述N张初始图像中的每张初始图像包括前景和复杂背景;所述前景代表所述目标物;提取所述每张初始图像中的所述前景,生成只包括所述前景或单一背景的所述目标物的N张图像;其中,所述N张图像分别归属于N个图像传感器坐标系,且N≥2;获取姿态识别模型;将所述N张图像输入姿态识别模型中,输出所述目标物的识别结果。

本发明第六方面提供一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现上面任一项所述的姿态识别方法;和/或上面所述的姿态识别的训练方法。

本发明第七方面提供一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现上面任一项所述的姿态识别方法;和/或上面所述的姿态识别的训练方法。

由于根据多个图像,基于人工智能的方法进行姿态识别,可以提高姿态识别的精度。

附图说明

图1为一个实施例中姿态识别方法的第一流程示意图;

图2为一个实施例中姿态识别方法的第二流程示意图;

图3为一个实施例中姿态识别方法的第三流程示意图;

图4为一个实施例中姿态识别方法的第四流程示意图;

图5为一个实施例中姿态识别方法的第五流程示意图;

图6为一个实施例中姿态识别方法的第六流程示意图;

图7为一个实施例中训练样本集生成方法的第一流程示意图;

图8为一个实施例中训练样本集生成方法的第二流程示意图;

图9为一个实施例中训练样本集生成方法的第三流程示意图;

图10为一个实施例中姿态识别训练方法的第一流程示意图;

图11为一个实施例中根据特征信息识别姿态的方法的第一流程示意图;

图12为一个实施例中姿态识别装置的第一结构框图;

图13为一个实施例中姿态识别装置的第二结构框图;

图14为一个实施例中姿态识别装置的第三结构框图;

图15为一个实施例中姿态识别装置的第四结构框图;

图16为一个实施例中姿态识别装置的第五结构框图;

图17为一个实施例中姿态识别训练装置的第一结构框图;

图18为一个实施例中态识别系统的第一结构框图;

图19为一个实施例中姿态识别方法应用环境的第一结构示意图;

图20为一个实施例中计算机设备的第一结构框图;

图21为一个实施例中姿态分类结果的第一示意图;

图22为一个实施例中关键点转换的第一示意图;

图23A为一个实施例中第一预测图;图23B为一个实施例中预测图的变形示意图。

图24为一个实施例中第二预测图;

图25为一个实施例中第三预测图;

图26为一个实施例的关键线的示意图。

具体实施方式

为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。

本申请提供的姿态识别方法,可以应用于如图19所示的应用环境中,应用环境中可以包括第一图像传感器510、第二图像传感器520、及终端600和/或服务器700,终端600通过网络与服务器700进行通信;第一图像传感器510、第二图像传感器520通过网络与终端600和/或服务器700进行通信。该方法既可以应用在终端600,也可以应用于服务器700。其中,终端600可以但不限于是各种工业计算机、个人计算机、笔记本电脑、智能手机和平板电脑。服务器700可以用独立的服务器或者是多个服务器组成的服务器集群来实现。

在一个实施例中,如图1所示,提供一种姿态识别方法,以该方法应用于图19的终端为例,该方法包括以下步骤:

步骤S101获取目标物的N张图像;其中,N张图像分别归属于N个图像传感器坐标系;且N≥2;为方便理解,本具体实施例以N等于2(即N张图像为“第一图像”和“第二图像”两张图像)为例进行进一步详细说明。

获取第一图像传感器510和第二图像传感器520分别采集并实时发送的第一图像和第二图像,或者从存储器或服务器等获取上述第一图像和第二图像。

具体的,第一图像和第二图像可以是各种类型的2D图像(比如:RGB、灰度或黑白图像)。图像传感器可以但不限于:照相机、摄像机、扫描仪或其他带有相关功能的设备(手机、电脑等)等等。

具体的,该目标物可以为完全未被遮挡的目标物;也可以为局部被遮挡的目标物(比如:目标物被其它目标物遮挡、被抓取的目标物的执行器被遮挡、或者因图像传感器的视觉角度引起的遮挡),则目标物的图像数据只包括目标物的局部图像数据。

步骤S102获取姿态识别模型;

具体的,可以从存储器或服务器获取预先经过训练的姿态识别模型;

在一个实施例中,该姿态识别模型为单个;

在一个实施例中,该姿态识别模型为M个;其中,2≤M≤N;具体的,可以将N张图像中的每张图像输入一个模型,即将N张图像输入N个模型中,也可以将N张图像分成M组,每组图像输入一个模型中,因此2≤M≤N;为方便理解,本具体实施例以M等于2为例进行说明。

步骤S103将N张图像输入姿态识别模型中,输出目标物的识别结果。

在一个实施例中,如上面实施例所述,当姿态识别模型为单个时,该识别结果可以为一个识别结果或多个识别结果;

在一个实施例中,如上面实施例所述,当姿态识别模型为M个时,将N张图像输入M个姿态识别模型中,分别输出多个目标物的识别结果;后面会有进一步详细的说明。

由于根据多个图像,基于人工智能的方法进行姿态识别,可以提高姿态识别的精度。比如:当一个图像的采集或者后续处,理存在某些问题的时候(比如图像不清晰)可以通过其它的图像仍可以获得识别结果;又比如:利用后续多个的识别结果的比较优化,可以获得相对一个图像更准确的识别结果。

在一个实施例中,第一图像和第二图像可以为包括代表目标物的前景和复杂背景的图像;除此之外,在另一个实施例中,该第一图像和第二图像也可以为只包括前景、或者包括前景和单一背景的图像,如图2所示,则姿态识别方法在步骤S101之前还可以包括如下方法步骤:

步骤S104获取N张初始图像;其中,所述N张初始图像中的每张初始图像包括前景和复杂背景;所述前景代表所述目标物;

步骤S105提取所述每张初始图像中的所述前景,生成只包括所述前景或单一背景的目标物的N张图像。

具体的,单一背景是指背景采用单一的图案或者颜色。

具体的,提取可以包括但不限于如下方法:

在一个实施例中,可以是将前景按照外部轮廓从初始图像中抠出;比如:基于传统的各种图像的处理方法(比如:二值化、边缘检测、连通域等等)识别出初始图像中的前景部分,然后将前景部分抠出;或者

进一步,在一个实施例中,也可以将上述抠出的前景映射到一个单一背景的预设大小的矩形图像上,从而生成单一背景的目标图像;进一步,在一个实施例中,也可以将上述裁剪后的图像映射到一个单一背景的预设大小的矩形图像上,从而生成单一背景的目标图像;或者

在一个实施例中,将原本一定大小的初始图像进行一定的裁剪,使得裁剪后的图像为包围目标物外框的最小截面图像(比如:初始图像为一张100*200的图像,而裁剪后的图像为50*80大小,则可以将该裁剪后的图像看作上述只包括前景的目标图像);或者

在一个实施例中,对初始图像进行处理使得处理后的图像只包括前景和单一的背景等等。

具体的,可以基于前景提取模型通过人工智能的方法获得;或

基于传统的图像处理方法,比如:以二值化图像基于图像的处理方法为例,可以将前景设置为白色,而背景统一调整成黑色。

由于只针对代表目标物的前景进行目标物的识别,可以提高后续姿态识别的精度。

具体的,如上所述,通过模型可以得到一个或者多个识别结果。识别结果可以但不限于:目标物的姿态识别结果;图像数据中目标物关联的特征信息的识别结果;或目标物的第一部分姿态识别结果和预处理识别结果的结合。

其中,目标物的姿态识别结果是指通过模型直接得到目标物的三维姿态信息;图像数据中目标物关联的特征信息的识别结果,还需要后续进一步的处理方法(比如:结合目标物的3d模型),才能根据图像中的二维的特征信息结果得到最终目标物的姿态识别结果;目标物的第一部分姿态识别结果和预处理识别结果的结合是指通过模型直接输出部分目标物的姿态识别结果,另外一部分为预处理识别结果,需要对预处理识别结果进行进一步的处理,才能得到最终的目标物的整体的姿态识别结果;下面会对上述三种识别结果和对应的识别方法进行进一步详细的描述。

在一个实施例中,识别结果为目标物的姿态识别结果,即通过模型直接输出目标物的姿态识别结果。即该识别结果可以直接为目标物的三维姿态信息;

具体的,三维姿态信息可以为针对目标物的预设坐标系的3d坐标;刚体在3维空间的运动可以用3d坐标(共6个自由度)描述,具体的,可以分为旋转和平移,各为3个自由度。刚体在3维空间的平移是普通的线性变换,可以使用一个3x1的向量描述平移位置;而旋转姿态常用的描述方式包括但不限于:旋转矩阵、旋转向量、四元数、欧拉角和李代数。

在一个实施例中,可以通过模型(比如:上述的单个模型)输出目标物统一在其中一个图像传感器(比如:左图像传感器510坐标系下的识别结果;或者通过模型(比如:上述的单个或M个模型)直接得到目标物分别在多个图像传感器坐标系下的多个姿态识别结果,比如:可以N个图像分别输出对应N个图像传感器坐标系的N个识别结果,或者N个图像分成M组,每组图像统一输出对应同一个图像传感器坐标系的识别结果。

在一个实施例中,如图10所示,提供一种姿态识别的训练方法,该方法包括如下方法步骤:

步骤S601获取训练样本集;其中,训练样本集包括归属于N个图像传感器坐标系下的训练子样本集的集合;

步骤S602获取姿态识别模型的初始模型;

具体的,根据上面实施例所述,该姿态识别模型可以为单个或M个;则初始模型也可以为单个或M个;

步骤S603基于训练样本集对初始模型进行训练,得到姿态识别模型。

在一个实施例中,该模型针对输入的图像数据,直接输出目标物的姿态识别结果。

具体的,网络模型可以包括但不限于卷积神经网络(CNN),常见的CNN模型可以包括但不限于:LeNet,AlexNet,ZFNet,VGG,GoogLeNet,Residual Net,Dense,Net,R-CNN,SPP-NET,Fast-RCNN,Faster-RCNN,YOLO,SSD,Deep-6dPose,PoseCNN以及其他现在已知或将来开发的网络模型结构。

具体的,训练方法可以采用监督学习、半监督学习或无监督学习、半监督学习或无监督学习等等现在已有或者将来开发的训练方法,以监督学习为例,以图像数据集作为输入,以三维姿态信息作为标注,对姿态识别模型的初始模型进行训练,从而得到姿态识别模型。

在一个实施例中,当输出的识别结果为一个图像传感器坐标系下的姿态识别结果时,可以预先对多个图像传感器彼此进行标定,因此通过彼此之间的坐标系转换关系可以求得目标物在其它图像传感器坐标系下的姿态识别结果;或在另一个实施例中,当输出的识别结果为多个图像传感器坐标系下的姿态识别结果时,在一些情况下,比如,需要对结果进一步优化时,也可以通过图像传感器之间的坐标系转换关系转换成目标物在一个图像传感器坐标系下的姿态识别结果。

在一个实施例中,识别结果为第一图像中目标物关联的特征信息的识别结果;以及第二图像中目标物关联的特征信息的识别结果。

具体的,该特征信息可以但不限于:关键点和/或关键线(其中,关键线可以看作多个连续关键点的组合)。

具体的,该特征信息的识别结果可以但不限于:关键点和/或关键线的2d坐标,其中,关键线的2d坐标是由多个连续的关键点的2d坐标组合而成,或者模型可以直接输出标注关键点和/或关键线后的第一图像和第二图像;或用于提取上述关键点和/或关键线的第一预测图和第二预测图。

具体的,该关键点可以为归属目标物上的关键点;或者为归属包围目标物的包围框的关键点,下面对上述两种情况分别进行详细描述:

在一个实施例中,该关键点识别结果为归属包围目标物的包围框的关键点的姿态识别结果。具体的,可以为包围目标物的3d包围框的8个顶点,即关键点(如图22中的左侧图所示)在2d图像上的投影点的2d坐标,或者模型可以直接输出标注投影点后的图像数据(如图22中的右侧图所示);在一个实施例中,除上述8个顶点外还可以加上目标物的中心点(即一共9个关键点)。

在一个实施例中,该关键点的姿态识别结果为归属目标物上的关键点的姿态识别结果。

进一步,在一个实施例中,如图8所示,提供一种归属目标物上的特征信息的训练样本集中的标注样本集的生成方法:

步骤S401获取训练样本图像集;

其中,训练样本集包括N个图像传感器坐标系下的训练子样本集的集合,每个子样本图像集中的每张图像对应一个目标物姿态,则对应同一个目标物的姿态在各个子样本集中会分别找到对应的图像。

在一个实施例中,若目标物被遮挡,提供目标物被遮挡的训练样本集,该训练样本集可以是通过图像传感器实际采集得到的,也可以是通过对未遮挡图像的处理,对未遮挡图像进行抠除,得到目标物被遮挡的各种虚拟图像。

从存储器或服务器中获取上述训练样本图像集。

步骤S402获取包括3d特征信息的目标物的3d模型;

具体的,该3d特征信息(关键点和/或关键线)可以根据用户输入的指令确定,或者3d模型(比如:CAD模型)根据图像处理的方法自动生成。

步骤S403按照每个图像对应的目标物姿态将3d模型上的3d特征信息投影至对应的各个图像中,生成包括2d特征信息标注的训练样本集;

步骤S404将图像数据集和对应的标注作为训练样本集。

具体的,该姿态识别网络模型可以包括但不限于卷积神经网络(CNN),常见的CNN模型可以包括但不限于:LeNet,AlexNet,ZFNet,VGG,GoogLeNet,Residual Net,DenseNet,R-CNN,SPP-NET,Fast-RCNN,Faster-RCNN,YOLO,SSD,BB8,YOLO-6D以及其他现在已知或将来开发的网络模型结构。

在一个实施例中,姿态识别的训练方法,可以参照图10所示的姿态识别的训练方法的方法步骤;具体的,训练方法可以采用监督学习、半监督学习或无监督学习等等现在已有或者将来开发的训练方法,以监督学习为例,以图像数据数据集作为输入,以2d关键点和/或线作为标注,对姿态识别模型的初始模型进行训练,从而得到姿态识别模型。

具体的,该3d特征信息可以根据用于输入的指令预定义,或者3d模型(比如:CAD模型)根据某些特征提取算法自动生成。

步骤S303按照每个图像数据对应的目标物姿态将3d模型上的3d特征信息投影至对应的图像数据中,生成包括2d特征信息标注的图像数据集。

进一步,在一个实施例中,上述特征信息的识别结果为预测图,即对图像数据的每一个像素都进行预测,模型输出预测图(如图23A所示),再根据预测图提取关键点和/或关键线。

具体的,可以根据预测图的颜色、亮度等等特征信息的不同代表不同的含义,比如:关键点的概率、关键点所处方位;或者,预测图也可以为等高线图等等任何的图像表达方式。

在一个实施例中,每一个像素点都会预测一个关键点相对于这个像素本身的方向,热度图(如图23A中)所示的颜色的不同就代表了不同的方向。

在另一个例子中,每一个像素点都会预测当前像素是关键点的可能性/概率。可能性越大,预测值就越高(比如:图像的亮度越高(如图25所示),或等高线的高度越大(如图24所示)。需要注意的是,通常在关键点附近的像素点的预测值都会很高。

具体的,根据预测图,确定关键点和/或关键线方法可以包括但不不限于如下方法:

在获得预测图之后,需要将预测图转换为关键点和/或关键线。将预测图转换为关键点和/或关键线的方法与上述预测图的含义相关。当预测图的预测为方向时,可以采用投票的方式,以指向某位置的像素点的数量最多的位置为该图像数据的关键点(如图23B所示);当预测图的预测为关键点可能性时,我们可以取预测值最高的那个像素点作为关键点,或者对预测值很高的那个区域求一个加权平均。具体的,模型可以输出多张预测图,根据每个预测图预测一个关键点;或者模型输入一张预测图,每个预测图上预测多个关键点。

由于基于预测图的方法进行目标物的姿态识别,这种方法相对直接输出关键点和/或关键线的方法通常会有更高的精度,并且训练难度也会降低。

在一个实施例中,如图9所示,提供一种模型训练样本集的生成方法:

步骤S501获取训练样本集;其中,训练样本集包括N个图像传感器坐标系下的训练子样本集的集合,每个子样本图像集中的每张图像对应一个目标物姿态,则对应同一个目标物的姿态在各个子样本集中会分别找到对应的图像;

步骤S502获取包括3d特征信息的目标物的3d模型;

步骤S503按照每个图像数据对应的目标物姿态将3d模型上的3d特征信息投影至对应图像中,生成2d特征信息;

即按照每个图像数据对应的目标物姿态将3d模型上的3d关键点投影至各个子样本集中的对应图像中;

步骤S504根据2d特征信息生成预测图的标注;

则上述每个子样本集中的对应图像分别对应的生成各自的预测图,以预测图作为图像数据的标注;

步骤S505以图像数据集和标注作为训练样本集。

在一个实施例中,姿态识别的训练方法,可以参照图10所示的姿态识别的训练方法的方法步骤;具体的,训练方法可以采用监督学习、半监督学习或无监督学习等等现在已有或者将来开发的训练方法,将图像数据集作为输入,预测图作为输出,对姿态识别模型进行训练,该网络模型可以包括但不限于卷积神经网络(CNN),常见的CNN模型可以包括但不限于:LeNet,AlexNet,ZFNet,VGG,GoogLeNet,Residual Net,DenseNet,Mask-RCNN,Hourglass,CPN以及其他现在已知或将来开发的网络模型结构。

在一个实施例中,姿态识别结果为关键线,或者关键线与关键点结合的姿态识别结果。

具体的,模型的输出可以是该二维图像上的关键线(比如:曲线、直线),比如:模型可以直接输出构成该关键线的各个连续关键点在在2d图像上的投影点的2d坐标;或者模型可以直接输出标注该关键线的图像数据。

具体的,这些线需要预先定义,比如:根据物体的3d模型设定目标物的一些显著边缘线。甚至可以扩展定义为一些关键线的组合,如图26所示,模型的输出可以为线段AB,AC和AD的组合;甚至是多个关键线组合起来得到的某个几何图形(省略附图)。

完美检测的情况下,一条线段的两个端点,与这条线段上的所有点,进行3d模型匹配时是等效,但实际情况下,由于检测带有误差,用一整条线段的带噪声的点去进行匹配3d模型会比单纯用线段的两个端点——在空间中对应物体一条边缘连接的两个角点——去进行匹配要更准,这里有一个假定就是边缘点的检测的误差水平与角点的检测的误差水平相差不大,因此更多的点进行3d模型匹配起到了降低最终匹配误差的作用。

另外,当一些关键角点不能被观测到时,之前的基于关键点的算法可能会失效,但是如果是关键曲线的检测,则依然有机会进行匹配。

需要说明的是,由于关键线可以看作是多个连续关键点的组成,因此有关关键线的姿态识别的网络模型种类,模型训练方法和样本生成方法等的相关描述参见关键点中的介绍,在此不再赘述。

在一个实施例中,该姿态识别结果为目标物的第一部分姿态识别结果与预处理识别结果的结合。即对于目标物的三维姿态信息中的平移位置和旋转姿态信息可以分开来获取。

进一步,在一个实施例中,根据上面实施例所述,如图6所示,步骤S103输出识别结果之后还可以包括如下方法步骤:

步骤S108获取预处理识别结果;

比如:通过模型直接输出旋转姿态信息,以及平移位置信息的预处理识别结果,再针对平移位置信息的预处理识别结果进行进一步处理,从而得到平移位置信息;或者通过模型直接输出平移位置信息,以及旋转姿态信息的预处理识别结果。

步骤S109根据预处理识别结果,确定目标物的第二部分姿态识别结果;

步骤S110以第一部分姿态识别结果和第二部分姿态识别结果,作为目标物的姿态识别结果。最终以旋转姿态信息和平移位置信息,作为目标物整体的姿态识别结果。

在一个实施例中,模型可以直接输出旋转姿态信息;而平移位置信息可以通过模型输出的预处理识别结果确定,比如:当模型输出为预测图时,可以通过预测图中的投票的方法获得目标物的参考点(比如:中心点)的位置信息;或者,当模型的输出为包围目标物的3d包围框,通过计算包围框的参考点(比如中心点)结合图像数据相对于图形传感器光心的深度信息(该深度信息可以通过模型直接输出,也可以通过某些图像处理的方法直接得到),结合成像原理来确定目标物的位置信息。

该网络模型可以包括但不限于卷积神经网络(CNN),常见的CNN模型可以包括但不限于:LeNet,AlexNet,ZFNet,VGG,GoogLeNet,Residual Net,DenseNet,R-CNN,SPP-NET,Fast-RCNN,Faster-RCNN,FCN,Mask-RCNN,YOLO,YOLOv2,YOLOv3,SSD,Deep-6dPose,PoseCNN以及其他现在已知或将来开发的网络模型结构。

在一个实施例中,姿态识别的训练方法,可以参照图10所示的姿态识别的训练方法的方法步骤;具体的,训练方法可以采用监督学习、半监督学习或无监督学习等等现在已有或者将来开发的训练方法。

以监督学习为例,可以将目标物的训练样本集作为模型的输入,将预处理识别结果以及旋转姿态作为训练样本集的标注,对初始模型进行训练,从而得到姿态识别模型。

进一步,在一个实施例中,该识别结果可以为目标物的姿态分类结果。具体的,在一个实施例中,该姿态分类结果可以为目标物的视角类别,将图像数据输入训练好的姿态识别模型,输出目标物的视角类别,根据通过查找视角类别-姿态表格,可以获得目标物对应的姿态的范围数据。

具体的,姿态分类结果是获得一个物体相对于一个或两个图像传感器的姿态,想象一个以物体为中心,半径任意的球面,把图像传感器放在这个球面上移动,并对物体拍照,物体的姿态即与图像传感器在球面上的位置有关。

把这个球面离散化,如图21所示。图中每一个点都是一个视角,每一个视角都对应了一个姿态。通过这样的离散化,因此把原本连续的姿态估计问题转换为一个分类问题,即我们只需要估计出物体的姿态属于哪一个视角即可。

采用这种方法的姿态识别的精度取决于离散化程度,球面被分割得越精细,精度越高。

具体的,该姿态识别模型可以包括但不限于卷积神经网络(CNN),常见的CNN模型可以包括但不限于:LeNet,AlexNet,ZFNet,VGG,GoogLeNet,Residual Net,DenseNet,SSD-6D以及其他现在已知或将来开发的网络模型结构。

在一个实施例中,有关姿态识别的训练方法,参见上面实施例中图13所示的方法,用于对输入的图像数据,输出目标物的第一部分姿态识别结果与预处理识别结果的结合。

具体的,训练方法可以采用监督学习、半监督学习或无监督学习等等现在已知或将来开发的机器学习方法对姿态识别模型进行训练。以监督学习为例,可以将上述目标物各个视角采集的图像作为训练样本集,将每个样本对应的视角类别ID以及表示物体在图像中位置的包围框作为标注,对模型进行训练。

进一步,在一个实施例中,如图7所示,提供一种训练样本集生成方法:

步骤S301建立多个视角类别和目标物的姿态的对应关系;

将姿态空间离散化,等分为N个视角,对每一个视角,计算出其所对应的物体姿态,并建立一个视角类别-姿态识别结果一一对应的表格。

步骤S302获取每个视角对应的图像数据集,并记录所述图像数据集、视角类别和姿态的对应关系,生成图像数据集的标注;

具体的,可以在每一个视角上对物体拍照采集真实样本图像数据,或者用CAD进行渲染生成虚拟样本图像数据,记录照片-视角-姿态的对应关系。

步骤S303将图像数据集粘贴至背景图像中,生成更新图像数据集;

需要说明的是,当输入模型的目标物的图像数据包括目标物和复杂真实背景时,则需要执行S303的步骤,从而完成训练样本集的建立。

可以将上述单个物体的照片随机粘贴至背景照片中,另外,也可以一张背景照片中随机的粘贴多个不同物体。

步骤S304以更新图像数据集和所述标注作为所述训练样本集;

在另一个实施例中,当输入模型的目标物的图像数据只包括目标物或单一背景时,则该样本集的生成方法可以只包括:

步骤S301建立多个视角类别和目标物的姿态的对应关系;

步骤S302获取每个视角对应的图像数据集,并记录述图像数据集、视角类别和姿态的对应关系,生成图像数据集的标注;

步骤S304以图像数据集和标注作为训练样本集。

在一个实施例中,如图3所示,当姿态识别结果为N个图像中目标物关联的特征信息的识别结果,步骤S103输出识别结果之后还包括:

步骤S106获取识别结果;

以两个图像传感器、特征信息为2d关键点为例,可以获取基于第一图像输出的特征信息的识别结果,以及基于第二图像输出的特征信息的识别结果;

步骤S107根据识别结果,生成目标物的姿态识别结果。

可以根据识别结果,确定目标物在一个或多个图像传感器坐标系下的姿态识别结果。

具体的,步骤S107,可以在获得了两个图像上分别识别的关键点之后,使用某些算法,生成目标物在一个或多个图像传感器坐标系下的姿态识别结果。

进一步,在一个实施例,如图11所示,步骤S107可以包括如下方法:

步骤S1073获取包括3d特征信息(关键点和/或关键线)的3d模型;

步骤S1074分别获取N张图像中的目标物关联的2d特征信息;

步骤S1075根据3d特征信息和对应2d特征信息,生成目标物的姿态识别结果。

根据3d特征信息和对应的2d特征信息,基于线性变换的方法,生成目标物的姿态识别结果。

具体的,可以将基于第一图像和第二图像获得的关键点和/或关键线和3d模型上对应的关键点和/或关键线基于直接线性变换法,分别获得目标物在一个或两个图像传感器坐标系下的姿态识别结果;

其中,直接线性变换法为根据物体3d模型上的3d关键点和/或关键线信息到2d关键点和/或关键线信息的投影关系,我们可以列出一个方程组。通过求解这个方程组,我们就可以获得目标物的三维姿态识别结果。

直接线性变换法最大的缺点在于通过它求解所得的旋转矩阵是一个一般矩阵,而真正的旋转矩阵是一个单位正交矩阵,所以直接线性变换法往往得到一个近似解,精度可能不是很高。

因此,在一个实施例中,在获得步骤S1075生成的目标物的姿态识别结果之后,还可以包括如下方法步骤:

步骤S1076优化目标物的姿态识别结果,得到优化识别结果。

具体的,可以采用非线性优化法进行优化。在一个实施例中,如图14所示,该优化方法S1076包括如下方法步骤:

步骤S601获取目标物的姿态识别结果;

步骤S602根据目标物的姿态识别结果,计算出3d模型上的3d关键点在两个图像中的投影;

步骤S603将所述投影与两个图像中的关键点的位置进行比较,得到重投影误差;

步骤S604以最小化重投影误差为目标,更新目标物的姿态识别结果,得到当前更新结果;

在一个实施例中,可以利用非线性优化算法,最小化重投影误差为目标,对问题进行求解。其中,非线性优化算法包括但不限于,牛顿法,高斯牛顿法,列文伯格-马夸尔特法。

步骤S605以当前更新结果代替目标物的姿态识别结果,重复S602-S604的步骤直到重投影误差小于某个预设的阈值,从而得到目标物的姿态识别结果。

进一步,在另一个实施例,步骤S107还可以包括如下方法:

步骤S1077将基于第一图像和第二图像分别输出的2d关键点的坐标,基于三角测量法,生成该关键点的3d坐标;

步骤S1078获取3d模型上的关键点,以该关键点作为参考点;

步骤S1079基于点云的迭代最近点算法,将步骤S1077生成的关键点和3d模型上的参考点进行匹配,得到最终的目标物的姿态信息。

在一个实施例中,如图4所示,当目标物关联的特征信息的识别结果为预测图时,上述步骤S107进一步可以包括如下方法步骤:

步骤S1071根据预测图,确定关键点;

即根据基于第一图像输出的预测图,和基于第二图像输出的预测图;分别确定第一图像中的关键点和第二图像中的关键点。

步骤S1072根据关键点,生成目标物的姿态识别结果。

根据第一图像和和第二图像上分别识别的关键点,生成目标物的姿态识别结果。

有关根据关键点计算目标物的姿态识别结果的方法参见上面实施例所述,在此不再重复赘述。

在一个实施例中,当输出的识别结果为一个图像传感器坐标系下的姿态识别结果时,可以预先对多个图像传感器彼此进行标定,因此通过多个图像传感器之间的坐标系转换关系可以求得目标物在其它图像传感器坐标系下的姿态识别结果;或在另一个实施例中,当输出的识别结果为多个图像传感器坐标系下的姿态识别结果时,在一些情况下,比如,需要对结果进一步优化时,也可以通过图像传感器之间的坐标系转换关系转换成目标物在一个图像传感器坐标系下的姿态识别结果。

在一个实施例中,如图5所示,根据上面实施例所述,当模型输出的识别结果为目标物的姿态识别结果时,步骤S103之后还可以包括步骤S111优化目标物的姿态识别结果,得到优化姿态结果;在一个实施例中,步骤S107确定目标物的姿态识别结果之后,还可以包括步骤S111优化目标物的姿态结果,得到优化姿态结果(省略附图);在一个实施例中,步骤S110得到目标物的姿态识别结果之后,还可以包括步骤S111优化目标物的姿态结果,得到优化姿态结果(省略附图)。

具体的,可以基于一个或多个姿态识别结果进行优化。

在一个实施例中,上述优化方法可以为:给定目标物在其中一个图像传感器中的姿态(以第一图像传感器510为例)作为初始值,通过最小化第一图像中的重投影误差,获得物体在第一图像传感器510中姿态的精确估计。然后根据两个图像传感器之间坐标变换的关系,计算出物体在第二图像传感器520中的姿态。

在一个实施例中,上述优化方法可以为:给定目标物在其中一个图像传感器中的姿态(以第一图像传感器510为例)作为初始值,通过最小化第一图像和第二图像的重投影误差,获得物体在第一图像传感器510中姿态的精确估计。然后根据两个图像传感器510、520之间坐标变换的关系,计算出物体在第二图像传感器520中的姿态。

在一个实施例中,上述优化方法可以为:给定目标物在两个图像传感器510、520中的姿态,通过最小化第一图像和第二图像的重投影误差,同时优化目标物在两个图像传感器510、520中的姿态,同时获得物体在两个图像传感器中姿态的精确估计。

在一个实施例中,姿态识别方法还包括:将N张图像、识别结果、姿态识别结果和/或优化结果发送给展示器展示的方法步骤。

应该理解的是,虽然图1-11的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,图1-11中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些子步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。

在一个实施例中,如图12所示,提供一种姿态识别装置,该姿态识别装置包括:

目标图像获取模块101,用于获取目标物的N张图像;其中,所述N张图像分别归属于N个图像传感器坐标系;且N≥2;

模型获取模块102,用于获取姿态识别模型;及

结果输出模块103,将所述N张图像输入姿态识别模型中,输出所述目标物的识别结果。

在一个实施例中,模型获取模块102,用于获取单个所述姿态识别模型;

结果输出模块103,用于将所述N张图像输入所述单个姿态识别模型中,输出所述目标物的识别结果;或

在一个实施例中,模型获取模块102,用于获取M个所述姿态识别模型;其中,2≤M≤N;

结果输出模块103,用于将所述N张图像分别输入所述M个姿态识别模型中,分别输出所述目标物的识别结果。

进一步,在一个实施例中,识别结果为在一个或多个图像传感器坐标系下的目标物的姿态识别结果。

进一步,在一个实施例中,如图14所示,所述识别结果为所述N张图像中N个目标物关联的特征信息的识别结果;

该姿态识别装置还包括:

识别结果获取模块106,用于获取所述识别结果;

姿态结果生成模块107,用于根据所述识别结果,生成所述目标物的姿态识别结果。

进一步,在一个实施例中,如图15所示,当识别结果为目标物的第一部分姿态识别结果与预处理识别结果的结合;

该姿态识别装置还包括:

预处理结果获取模块108,用于获取预处理识别结果;

第二结果生成模块109,用于根据预处理识别结果,生成目标物的第二部分姿态识别结果。

识别结果确定模块110,用于以第一部分姿态识别结果和第二部分姿态识别结果,作为目标物的姿态识别结果。

进一步,在一个实施例中,如图16所示,该姿态识别装置还包括:

优化结果生成模块111,用于优化所述目标物的姿态识别结果,得到优化结果。

进一步,在一个实施例中,如图13所示,所述姿态识别装置还包括:

初始图像获取模块104,用于获取N张初始图像;其中,所述N张初始图像中的每张初始图像包括前景和复杂背景;所述前景代表所述目标物;

目标图像生成模块105,用于提取每张初始图像中的前景,生成只包括前景或单一背景的目标物的N张图像。

进一步,在一个实施例中,姿态识别控制装置还包括展示模块(省略附图)

展示模块,用于将N张图像、识别结果、姿态识别结果和/或优化结果发送给展示器展示。

在一个实施例中,姿态识别控制装置还包括展示模块(省略附图)

展示模块,用于将N张图像、识别结果、姿态识别结果和/或优化结果发送给展示器展示。

在一个实施例中,如图17所示,提供一种姿态识别训练装置,该姿态识别训练装置包括:

训练样本获取模块301,用于获取训练样本集;其中,所述训练样本集包括分别归属于N个图像传感器坐标系下的训练子样本集的集合;

初始模型获取模块302,用于获取姿态识别模型的初始模型;

具体的,该姿态识别模型可以为单个或M个,其中,2≤M≤N;

模型训练模块303,用于基于所述训练样本集对初始模型进行训练,得到所述姿态识别模型;所述姿态识别模型,用于对输入的目标物的N张图像,输出所述目标物的识别结果。

关于上述各个姿态识别装置、姿态识别训练装置的具体限定可以参见上文中对于姿态识别方法、姿态识别训练方法的限定,在此不再赘述。上述各个姿态识别装置、姿态识别训练装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。

在一个实施例中,如图18所示,提供一种姿态识别系统,该系统包括:N个图像传感器510、520和控制装置400;

所述N个图像传感器510、520,用于采集目标物的N张图像;

所述控制装置400,用于获取目标物的N张图像;其中,所述N张图像分别归属于N个图像传感器坐标系,且N≥2;获取姿态识别模型;将所述N张图像输入姿态识别模型中,输出所述目标物的识别结果;具体的,该姿态识别模型可以为单个或M个,其中,2≤M≤N;或

所述N个图像传感器510、520,用于采集目标物的N张初始图像;

所述控制装置400,用于获取目标物的N张初始图像;用于获取N张初始图像;其中,所述N张初始图像中的每张初始图像包括前景和复杂背景;前景代表目标物;提取每张初始图像中的前景,生成只包括前景或单一背景的目标物的N张图像;其中,N张图像分别归属于N个图像传感器坐标系,且N≥2;获取姿态识别模型;将所述N张图像输入姿态识别模型中,输出目标物的识别结果;具体的,该姿态识别模型可以为单个或M个,其中,2≤M≤N。

控制装置400可以为可编程逻辑控制器(Programmable Logic Controller,PLC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)、计算机(PersonalComputer,PC)、工业控制计算机(Industrial Personal Computer,IPC)或服务器等等。控制装置根据预先固定的程序,结合人工输入的信息、参数或者外部的第一传感器和/或第二传感器(比如图像传感器)采集的数据等生成程序指令。

关于上述各个控制装置的具体限定可以参见上文中对于姿态识别方法、模型训练方法和样本生成方法的限定,在此不再赘述。

需要说明的是,上述各个控制装置和/或传感器,即可以是真实环境下的真实控制装置和传感器,也可以是仿真平台下的虚拟控制装置和/或传感器,通过仿真环境以达到连接真实控制装置和/或传感器的效果。将依赖虚拟环境完成行为训练后的控制装置,移植到真实环境下,对真实的控制装置和/或传感器进行控制或者再训练,可以节省训练过程的资源和时间。

在一个实施例中,如图20所示,提供一种计算机设备,包括存储器和处理器,存储器存储有计算机程序,处理器执行计算机程序时实现上述姿态识别方法;和/或姿态识别训练方法的步骤。

在一个实施例中,提供一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现上述姿态识别方法;和/或姿态识别训练方法的步骤。

本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。

以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。

在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。

另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。

除非另有定义,本说明书所使用的所有的技术和科学术语与属于本发明的技术领域的技术人员通常理解的含义相同。本说明书中在本发明的说明书中所使用的属于只是为了描述具体的实施方式的目的,不是用于限制本发明。

本发明的权利要求书和说明书及上述附图中的术语“第一”、“第二”、“第三”、“S110”、“S120”“S130”等等(如果存在)是用来区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的实施例能够以除了在这里图示或描述的内容以外的顺序实施。此外,术语“包括”“具有”以及他们的任何变形,意图在于覆盖不排他的包含。例如:包括了一系列步骤或者模块的过程、方法、系统、产品或机器人不必限于清楚地列出的那些步骤或者模块,而是包括没有清楚地列出的或对于这些过程、方法、系统、产品或机器人固有的其它步骤或模块。

需要说明的是,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的结构和模块并不一定是本发明所必须的。

以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。

相关技术
  • 一种姿态识别方法及姿态识别控制系统
  • 一种运动员动态姿态识别方法、装置、系统及存储介质
技术分类

06120112285062