一种人体姿态识别方法及系统
文献发布时间:2023-06-19 11:42:32
技术领域
本发明涉及图像处理技术领域,特别是涉及一种人体姿态识别方法及系统。
背景技术
3D人体姿态估计是指从图像、视频或点云中估计人物目标的姿态,是围绕人体3D研究中的一项基本任务。3D人体姿态估计是3D人体重建的重要前提,也可以是人体动作驱动中动作的重要来源。目前,获取人体姿态主要有两种实现方式。一、使用神经网络,通过对某一特定数据集训练,实现对该场景下人体姿态估计的目标。这种方法需要大量的人工标记数据训练神经网络,同时,该方法的精度较低。二、建立一个人体模型,使模型拟合图片上的人体。这种方法依赖于人体模型的建立,人体模型建立过程比较复杂,该方法的速度较慢。因此,如何在保证人体姿态估计精度的同时,提高人体姿态估计的速度成为一个亟待解决的技术问题。
发明内容
本发明的目的是提供一种人体姿态识别方法及系统,以实现在保证人体姿态估计精度的同时,提高人体姿态估计的速度。
为实现上述目的,本发明提供了如下方案:
本发明提供一种人体姿态识别方法,所述识别方法包括如下步骤:
获取当前帧的不同视角下的多张人体图像;
根据多张所述人体图像,采用卷积神经网络算法建立三维人体模型;
分别将每张所述人体图像上的相邻像素进行聚类,获得多个像素块;
建立每个所述像素块的二维像素块模型;
根据每个所述像素块的二维像素块模型对所述三维人体模型进行优化,获得优化后的三维人体模型;
根据优化后的三维人体模型确定当前帧的人体姿态。
可选的,所述根据每个所述像素块的二维像素块模型对所述三维人体模型进行优化,获得优化后的三维人体模型,之前还包括:
根据当前帧之前的预设帧数内的每帧时每个人体部位的位置坐标,预测当前帧时每个人体部位的位置坐标,
根据当前帧时每个人体部位的位置坐标对所述三维人体模型进行预调整,获得预调整后的三维人体模型。
可选的,所述根据多张所述人体图像,采用卷积神经网络算法建立三维人体模型,具体包括:
采用hourglass网络结构分别从每张所述人体图像中获得K个关键点;
分别令k=1,2,…,K,基于相机的参数,计算出第k个关键点在每个视角下的人体图像中的反投影射线,获得每个关键点对应的多条反投影射线;
确定距离每个关键点对应的多条反投影射线的总距离最短的公共点的坐标,作为所述关键点在三维空间下的坐标,得到每个关键点在三维空间下的坐标;
根据每个关键点在三维空间下的坐标进行线性插值运算,得到包含人体的每个人体部位的三维坐标的三维人体模型。
可选的,所述三维人体模型为:
其中,A(x)为三维人体模型,A
可选的,所述二维像素块模型为:
B
可选的,所述根据每个所述像素块的二维像素块模型对所述三维人体模型进行优化,获得优化后的三维人体模型,具体包括:
计算三维人体模型的第j个人体部位的模型与每个所述二维像素块模型的相似度的和,作为目标函数值;
判断所述目标函数值是否大于预设阈值,得到判断结果;
若所述判断结果表示否,则采用梯度下降法对三维人体模型中的第j个人体部位的模型进行优化,返回步骤“计算三维人体模型的第j个人体部位的模型与每个所述二维像素块模型的相似度的和,作为目标函数值”;
若所述判断结果表示是,则令j的数值增加1,返回步骤“计算三维人体模型的第j个人体部位的模型与每个所述二维像素块模型的相似度的和,作为目标函数值”,对三维人体模型的下一个人体部位的模型进行优化,直到优化完成三维人体模型中的每个人体部位的模型。
可选的,所述计算三维人体模型的第j个人体部位的模型与每个所述二维像素块模型的相似度的和,作为目标函数值,具体包括:
采用如下公式,计算三维人体模型的第j个人体部位的模型与每个所述二维像素块模型的相似度:
其中,E
w为颜色的惩罚值,ε为颜色阈值,μ
利用求和公式,计算三维人体模型的第j个人体部位的模型与每个所述二维像素块模型的相似度的和。
一种人体姿态识别系统,所述识别系统包括:
图像获取模块,用于获取当前帧的不同视角下的多张人体图像;
三维人体模型建立模块,用于根据多张所述人体图像,采用卷积神经网络算法建立三维人体模型;
像素聚类模块,用于分别将每张所述人体图像上的相邻像素进行聚类,获得多个像素块;
二维像素块模型建立模块,用于建立每个所述像素块的二维像素块模型;
三维人体模型优化模块,用于根据每个所述像素块的二维像素块模型对所述三维人体模型进行优化,获得优化后的三维人体模型;
人体姿态识别模块,用于根据优化后的三维人体模型确定当前帧的人体姿态。
可选的,所述识别系统还包括:
位置坐标预测模块,用于根据当前帧之前的预设帧数内的每帧时每个人体部位的位置坐标,预测当前帧时每个人体部位的位置坐标;
三维人体模型预调整模块,用于根据当前帧时每个人体部位的位置坐标对所述三维人体模型进行预调整,获得预调整后的三维人体模型。
可选的,所述三维人体模型建立模块,具体包括:
关键点获取子模块,用于采用hourglass网络结构分别从每张所述人体图像中获得K个关键点;
反投影运算子模块,用于分别令k=1,2,…,K,基于相机的参数,计算出第k个关键点在每个视角下的人体图像中的反投影射线,获得每个关键点对应的多条反投影射线;
关键点坐标确定子模块,用于确定距离每个关键点对应的多条反投影射线的总距离最短的公共点的坐标,作为所述关键点在三维空间下的坐标,得到每个关键点在三维空间下的坐标;
三维人体模型建立子模块,用于根据每个关键点在三维空间下的坐标进行线性插值运算,得到包含人体的每个人体部位的三维坐标的三维人体模型。
根据本发明提供的具体实施例,本发明公开了以下技术效果:
本发明公开了一种人体姿态识别方法,所述识别方法包括如下步骤:获取当前帧的不同视角下的多张人体图像;根据多张所述人体图像,采用卷积神经网络算法建立三维人体模型;分别将每张所述人体图像上的相邻像素进行聚类,获得多个像素块;建立每个所述像素块的二维像素块模型;根据每个所述像素块的二维像素块模型对所述三维人体模型进行优化,获得优化后的三维人体模型;根据优化后的三维人体模型确定当前帧的人体姿态。本发明首先采用卷积神经网络算法,简单快速的建立一个三维人体模型,然后利用图像中人体姿态对所述三维人体模型进行优化,利用优化后的三维人体模型进行姿态识别,实现了在保证人体姿态估计精度的同时,提高人体姿态估计的速度。
而且本发明利用人体动作的连续性,更具前几帧的结果对当前帧的结果进行预测,减小优化过程中的迭代次数,进一步的提高了人体姿态估计的速度。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本发明提供的一种人体姿态识别方法的流程图;
图2为本发明提供的一种人体姿态识别方法的原理图;
图3为本发明提供的用于获取不同视角下的多张人体图像的相机的排布方式图;
图4为本发明提供的三维人体模型图;
图5为本发明提供的多个二维像素块模型组成的人体模型图;
图6为本发明提供的优化后的三维人体模型图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明的目的是提供一种人体姿态识别方法及系统,以实现在保证人体姿态估计精度的同时,提高人体姿态估计的速度。
为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。
本发明是一种无需人工标注数据或传感器数据的人体姿态估计方法。通过多个彩色相机采集目标人物在固定场景中不同角度的彩色图像,使用已经预训练的卷积神经网络得到粗精度的人体关键点坐标,然后使用反投影技术,得到人体三维坐标;使用该三维人体坐标生成通用三维人体模型,计算三维人体模型与图像中人体的相似度,同时结合多个视角在三维世界中的一致性作为约束,优化此人体模型,得到最终的人体姿态。该计算过程在CUDA上进行,约束人体模型的参数,可以使得在常数时间内完成计算,约每秒处理25帧图像,可以实时处理视频。本发明只需要彩色图像作为输入,无需人工手动操作,也无需额外的传感器设备,在需要采集人体姿态的领域可以得到广泛的应用。
如图1和2所示,本发明提供本发明提供一种人体姿态识别方法,所述识别方法包括如下步骤:
步骤101,获取当前帧的不同视角下的多张人体图像。
使用多个彩色相机,位于室内不同位置,从多个视角获得人体的连续、同步的彩色图像序列。所有彩色相机受同步盒控制。
多个彩色相机的呈圆周分布,获得不同角度的人体信息,一个典型的八相机阵列如图3所示。同步盒发出方波信号,当相机收到信号后,同时拍下,以保证采集到的是同一时刻的人体信息。尽可能的使人体衣服的色彩信息丰富,以区分人体与背景物体,同时更容易识别人体的不同部位。背景信息应该尽可能的简单,得到的人体姿态更具有鲁棒性。
步骤102,根据多张所述人体图像,采用卷积神经网络算法建立三维人体模型。
根据第一帧神经网络输出的关节点坐标,反投影得到三维人体坐标,进而生成符合图像中人体的粗精度姿态。身体模型应尽可能的描述人体的胖瘦,高矮,特征颜色等信息。在三维高斯函数集合的身体模型中,用每个高斯函数的均值与方差描述。为了避免高自由度导致的过拟合,使用L描述人体躯干的长度,R描述人体躯干的宽度,进而通过计算获得每一个高斯函数的均值和方差,这样可以使得自由度大幅降低,以获得更好的泛化效果。本发明调整这个模型来生成一个行为者特定的身体模型,大致代表了形状和每个高斯函数的颜色。
该步骤针对输入不同视角下的8张照片,使用神经网络hourglass从每张照片提取16个人体关键点(x
其中,A(x)为三维人体模型,A
具体步骤为:
采用hourglass网络结构分别从每张所述人体图像中获得K个关键点。
分别令k=1,2,…,K,基于相机的参数,计算出第k个关键点在每个视角下的人体图像中的反投影射线,获得每个关键点对应的多条反投影射线。
确定距离每个关键点对应的多条反投影射线的总距离最短的公共点的坐标,作为所述关键点在三维空间下的坐标,得到每个关键点在三维空间下的坐标。
根据每个关键点在三维空间下的坐标进行线性插值运算,得到包含人体的每个人体部位的三维坐标的三维人体模型,如图4所示。
步骤103,分别将每张所述人体图像上的相邻像素进行聚类,获得多个像素块。
对于每一视角的图片,首先根据上一帧的优化后的三维人体模型,投影得到感兴趣的人体区域。只提取出人体区域,可以去掉无关的背景。对相邻相似的像素聚类,生成颜色块(像素块),结果如图5所示。每一个颜色块使用一个二维高斯函数来近似。聚类的过程中,本发明使用某个特定阈值来确定哪些像素聚集在一起。这种将图片以二维高斯函数集合的图片模型表示,比直接使用图片的像素进行相似度匹配,可以节约大量的计算能力,获得整体实验速度的大幅提升。
步骤102,建立每个所述像素块的二维像素块模型。
每个像素块的二维像素块模型为:
B
整张图像被分割成多个像素块,因此,整张图像可以表示为:
Im(x)=∑c
步骤105,根据每个所述像素块的二维像素块模型对所述三维人体模型进行优化,获得优化后的三维人体模型。
将人体模型投影到各视角:
其中,μ
其中,d(c
w为对差异过大的颜色的惩罚,ε为判断颜色是否接近的阈值。一般情况下,ε=0.1,w=0.05,可以取得不错的结果。RGB颜色空间与光照强度密切相关,使用其他颜色空间,如Lab颜色空间可以得到更好的结果。对相似度E
E
其中,s
pose
其中pose为不同帧的姿态结果,t为预测时使用每一帧结果的权重。使用历史姿态预测当前帧的姿态的结果,以替换直接使用上一帧结果作为当前帧的初始姿态,可以更接近当前帧的二维高斯函数集合的图片模型,以减少优化的迭代次数,获得整体实验的加速。
步骤105所述根据每个所述像素块的二维像素块模型对所述三维人体模型进行优化,获得优化后的三维人体模型,具体包括:计算三维人体模型的第j个人体部位的模型与每个所述二维像素块模型的相似度的和,作为目标函数值;判断所述目标函数值是否大于预设阈值,得到判断结果;若所述判断结果表示否,则采用梯度下降法对三维人体模型中的第j个人体部位的模型进行优化,返回步骤“计算三维人体模型的第j个人体部位的模型与每个所述二维像素块模型的相似度的和,作为目标函数值”;若所述判断结果表示是,则令j的数值增加1,返回步骤“计算三维人体模型的第j个人体部位的模型与每个所述二维像素块模型的相似度的和,作为目标函数值”,对三维人体模型的下一个人体部位的模型进行优化,直到优化完成三维人体模型中的每个人体部位的模型。
其中,所述计算三维人体模型的第j个人体部位的模型与每个所述二维像素块模型的相似度的和,作为目标函数值,具体包括:采用如下公式,计算三维人体模型的第j个人体部位的模型与每个所述二维像素块模型的相似度:
其中,d(c
w为颜色的惩罚值,ε为颜色阈值,μ
利用求和公式,计算三维人体模型的第j个人体部位的模型与每个所述二维像素块模型的相似度的和。
图5中每一个像素块计算颜色相似度。然后沿梯度方向,优化三维人体模型的参数,使相似度更大。当相似度稳定后,将三维身体模型投影到图片上,结果如图6所示。当前的三维人体模型的参数,即为当前人体的姿态。
步骤106,根据优化后的三维人体模型确定当前帧的人体姿态。
为了减少优化过程中的迭代次数,在步骤105所述根据每个所述像素块的二维像素块模型对所述三维人体模型进行优化,获得优化后的三维人体模型,之前还包括:根据当前帧之前的预设帧数内的每帧时每个人体部位的位置坐标,预测当前帧时每个人体部位的位置坐标;根据当前帧时每个人体部位的位置坐标对所述三维人体模型进行预调整,获得预调整后的三维人体模型。
本发明在CPU上进行图片预处理,得到图片的数学表示。将图片与人体模型参数传入CUDA(compute unified device architecture,并行计算框架)并计算。对于每一张图片,使用相同数量的像素块。每一个CUDA核心计算各像素块与人体一个部位的相似度,人体模型的参数量也是固定的,因此每一次计算是一个常数时间。
本发明还提供一种人体姿态识别系统,所述识别系统包括:
图像获取模块,用于获取当前帧的不同视角下的多张人体图像;
三维人体模型建立模块,用于根据多张所述人体图像,采用卷积神经网络算法建立三维人体模型;
像素聚类模块,用于分别将每张所述人体图像上的相邻像素进行聚类,获得多个像素块;
二维像素块模型建立模块,用于建立每个所述像素块的二维像素块模型。
所述三维人体模型建立模块,具体包括:关键点获取子模块,用于采用hourglass网络结构分别从每张所述人体图像中获得K个关键点;反投影运算子模块,用于分别令k=1,2,…,K,基于相机的参数,计算出第k个关键点在每个视角下的人体图像中的反投影射线,获得每个关键点对应的多条反投影射线;关键点坐标确定子模块,用于确定距离每个关键点对应的多条反投影射线的总距离最短的公共点的坐标,作为所述关键点在三维空间下的坐标,得到每个关键点在三维空间下的坐标;三维人体模型建立子模块,用于根据每个关键点在三维空间下的坐标进行线性插值运算,得到包含人体的每个人体部位的三维坐标的三维人体模型。
三维人体模型优化模块,用于根据每个所述像素块的二维像素块模型对所述三维人体模型进行优化,获得优化后的三维人体模型。
人体姿态识别模块,用于根据优化后的三维人体模型确定当前帧的人体姿态。
所述识别系统还包括:位置坐标预测模块,用于根据当前帧之前的预设帧数内的每帧时每个人体部位的位置坐标,预测当前帧时每个人体部位的位置坐标;三维人体模型预调整模块,用于根据当前帧时每个人体部位的位置坐标对所述三维人体模型进行预调整,获得预调整后的三维人体模型。
根据本发明提供的具体实施例,本发明公开了以下技术效果:
本发明公开了一种人体姿态识别方法及系统,所述识别方法包括如下步骤:获取当前帧的不同视角下的多张人体图像;根据多张所述人体图像,采用卷积神经网络算法建立三维人体模型;分别将每张所述人体图像上的相邻像素进行聚类,获得多个像素块;建立每个所述像素块的二维像素块模型;根据每个所述像素块的二维像素块模型对所述三维人体模型进行优化,获得优化后的三维人体模型;根据优化后的三维人体模型确定当前帧的人体姿态。本发明首先采用卷积神经网络算法,简单快速的建立一个三维人体模型,然后利用图像中人体姿态对所述三维人体模型进行优化,利用优化后的三维人体模型进行姿态识别,实现了在保证人体姿态估计精度的同时,提高人体姿态估计的速度。
而且本发明利用人体动作的连续性,更具前几帧的结果对当前帧的结果进行预测,减小优化过程中的迭代次数,进一步的提高了人体姿态估计的速度。
本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。
本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处。综上所述,本说明书内容不应理解为对本发明的限制。
- 人体姿态识别传感器、人体姿态识别方法及系统
- 一种人体姿态识别方法及系统