CN112037312B - 实时人体姿态逆向运动学求解方法及装置 - Google Patents
实时人体姿态逆向运动学求解方法及装置 Download PDFInfo
- Publication number
- CN112037312B CN112037312B CN202011213774.4A CN202011213774A CN112037312B CN 112037312 B CN112037312 B CN 112037312B CN 202011213774 A CN202011213774 A CN 202011213774A CN 112037312 B CN112037312 B CN 112037312B
- Authority
- CN
- China
- Prior art keywords
- joint point
- vector
- joint
- current frame
- data set
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T13/00—Animation
- G06T13/20—3D [Three Dimensional] animation
- G06T13/40—3D [Three Dimensional] animation of characters, e.g. humans, animals or virtual beings
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06N—COMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
- G06N3/00—Computing arrangements based on biological models
- G06N3/02—Neural networks
- G06N3/08—Learning methods
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06T—IMAGE DATA PROCESSING OR GENERATION, IN GENERAL
- G06T15/00—3D [Three Dimensional] image rendering
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Data Mining & Analysis (AREA)
- Life Sciences & Earth Sciences (AREA)
- Artificial Intelligence (AREA)
- Biomedical Technology (AREA)
- Biophysics (AREA)
- Computer Graphics (AREA)
- Health & Medical Sciences (AREA)
- Evolutionary Computation (AREA)
- General Health & Medical Sciences (AREA)
- Molecular Biology (AREA)
- Computing Systems (AREA)
- General Engineering & Computer Science (AREA)
- Mathematical Physics (AREA)
- Software Systems (AREA)
- Processing Or Creating Images (AREA)
Abstract
本发明涉及计算机动画动作捕捉技术领域,实施例具体公开一种实时人体姿态逆向运动学求解方法及装置。本申请通过对当前帧人体姿态图像进行3D关键点检测获得各个关节点在绝对坐标系下的3D坐标值,将其减去Hips关节点的坐标值,获得各个关节点相对于Hips关节点的3D位置坐标值,根据预设的标准骨骼长度获得各个关节点的标准化3D空间坐标,将其输入预先构建的逆向运动学神经网络模型获得各个关节点的预测6D旋转向量,再将其转换为各个关节点的四元数发送到三维渲染引擎的方法,实现了人体动作的深度流形求解,使在3D渲染引擎上的动画人物效果更加自然、逼真。
Description
技术领域
本发明涉及计算机动画动作捕捉技术领域,具体涉及一种实时人体姿态逆向运动学求解方法及装置。
背景技术
人体姿态逆向运动学求解需要根据关节点位置坐标计算旋转量(如采用四元数表示)来实时驱动动画人体骨骼,实现动画、电影、游戏行业中的诸多实时交互性场景。现有技术有基于骨骼关键点及其向量关系直接解析求解的方法,虽然求解速度快,但是仅仅考虑光点及其向量关系的限制,特定动作不太自然;还有传统逆向运动学迭代算法,由于需要迭代优化求解,手动设计能量函数,难以保证实时性,并且对于求解加的限制条件是手工设计的,预测出来的人体姿态往往不太自然;此外动捕技术的拟合求解过程,需要围绕关节点表皮的多个光点拟合旋转量,并不适合于仅仅有骨骼内部关节点坐标的情况;综上亟需克服传统方法实时性、稳定性、真实性等问题。
发明内容
有鉴于此,本申请提供一种实时人体姿态逆向运动学求解方法及装置,能够通过算法估计出的关键点坐标,实时计算出该关节点对应的旋转量(如采用四元数表示),以实时驱动3D引擎中的动画虚拟人体骨骼,解决或者至少部分解决上述存在的问题。
为解决以上技术问题,本发明提供的技术方案是一种实时人体姿态逆向运动学求解方法,包括:
S11:对当前帧人体姿态图像进行3D关键点检测,获得当前帧各个关节点在绝对坐标系下的3D坐标值,所述关节点包括Hips关节点;
S12:将当前帧各个关节点在绝对坐标系下的3D坐标值减去Hips关节点的坐标值,获得当前帧各个关节点相对于Hips关节点的3D位置坐标值;
S13:根据预设的标准骨骼长度和当前帧各个关节点相对于Hips关节点的3D位置坐标值计算获得当前帧各个关节点的标准化3D空间坐标;
S14:将当前帧各个关节点的标准化3D空间坐标输入预先构建的逆向运动学神经网络模型,获得当前帧各个关节点的预测6D旋转向量;
S15:将当前帧各个关节点的预测6D旋转向量转换为当前帧各个关节点的旋转矩阵,再使用scipy数学库将当前帧各个关节点的旋转矩阵转换为当前帧各个关节点的四元数;
S16:将当前帧各个关节点的四元数发送到三维渲染引擎,用于实时高帧率驱动动画人物。
优选的,所述S13中根据预设的标准骨骼长度和当前帧各个关节点相对于Hips关节点的3D位置坐标值计算获得当前帧各个关节点的标准化3D空间坐标的方法包括:
S131:根据当前帧各个关节点相对于Hips关节点的3D位置坐标值,通过子节点减去父节点,得到每个骨骼的向量,对每个骨骼的向量进行标准化,得到每个骨骼的方向向量;
S132:对每个骨骼的方向向量乘以对应的预设的标准骨骼长度,得到标准化的骨骼向量;
S133:通过父节点的3D空间坐标加上子节点的标准化的骨骼向量,得到子节点的3D空间坐标,照此方法计算,得到该帧所有关节点的标准化的3D空间坐标。
优选的,所述S14中逆向运动学神经网络模型的构建方法包括:
S21:获取训练数据集和验证数据集;
S22:构建逆向运动学神经网络模型;
S23:采用训练数据集和验证数据集训练逆向运动学神经网络模型。
优选的,所述S21获取训练数据集和验证数据集的方法包括:
S211:通过动捕设备采集人体骨骼三维关节点的数据,包括每一帧人体姿态图像中每个关节点的指数、旋转轴和父节点;
S212:获取每一帧人体姿态图像中每个关节点的欧拉角数据,使用scipy数学工具库将欧拉角数据转换为旋转矩阵R,获得每一帧人体姿态图像中所有关节点的旋转矩阵R;
S213:在每一帧人体姿态图像中将Hips关节点的3D空间坐标置为(0,0,0),已知所有关节点的旋转矩阵R及其子节点的初始偏移T,从Hips关节点开始,通过FK函数将父节点的3D空间坐标加上旋转矩阵R乘以初始偏移T的积,依次计算每个子节点的3D空间坐标值;
S214:定义标准骨骼偏移,获取所有非Hips关节点的标准偏移;
S215:根据定义的标准骨骼偏移,求2范数得到每个标准骨骼长度;
S216:根据S213获得的每个子节点的3D空间坐标值和S214获得的每个标准骨骼长度计算子节点的3D空间坐标,依次累加,得到所有关节点的标准化3D空间坐标,照此方式计算,获得所有帧每个关节点的3D空间坐标值;
S217:将所有帧每个关节点的3D空间坐标值作为数据集的输入特征X;
S218:将每一帧所有关节点的旋转矩阵R,保留前两个列向量,将其压缩为一个6维向量,作为6D旋转向量,将所有6D旋转向量作为数据集的输出标签Y;
S219:将包含输入特征X和输出标签Y的数据集按照预设比例划分为训练数据集和验证数据集。
优选的,所述S23采用训练数据集和验证数据集训练逆向运动学神经网络模型的方法包括:
S231:将训练数据集按照批次分成不同的组输入到逆向运动学神经网络模型进行训练;
S232:在每一个批次的迭代中,计算出每个批次所有关节点的预测6D旋转向量和6D旋转向量标签的2范数的均值Loss1;
S233:在每一个批次的迭代中,将每个关节点的6D旋转向量的前3个值作为向量x,将6D旋转向量的后3个值作为向量y;把所有向量x进行标准化,更新向量x;对向量x和向量y求叉积,得到z向量;将z向量进行标准化,更新z向量;将z向量和x向量求叉积,更新向量y;将向量x、向量y、向量z分别作为三维方阵的列向量,得到旋转矩阵R;按照此方法得到每个批次的每个关节点的旋转矩阵R;
S234:根据每个批次的每个关节点的旋转矩阵R,在每一帧人体姿态图像中将Hips关节点的3D空间坐标置为(0,0,0),已知子节点的初始偏移T,从Hips关节点开始,通过FK函数将父节点的3D空间坐标加上旋转矩阵R乘以初始偏移T的积,计算出每个批次的每个关节点的预测3D空间坐标值;
S235:根据每个批次的每个关节点的预测3D空间坐标值,与输入的3D空间坐标值,计算2范数的均值,得到Loss2;
S236:计算每个批次的总损失Loss=Loss1+Loss2,在每个批次的迭代中,根据总损失Loss,使用Adam优化器进行神经网络的参数的优化;
S237:重复S232-S236不断迭代,使所述训练数据集和所述验证数据集的损失函数Loss1收敛至0.0005以下,Loss2收敛至2mm以下,获得最终的逆向运动学神经网络模型。
本发明还提供一种实时人体姿态逆向运动学求解装置,包括:
关节点绝对坐标检测模块,用于对当前帧人体姿态图像进行3D关键点检测,获得当前帧各个关节点在绝对坐标系下的3D坐标值,所述关节点包括Hips关节点;
关节点位置坐标计算模块,用于将当前帧各个关节点在绝对坐标系下的3D坐标值减去Hips关节点的坐标值,获得当前帧各个关节点相对于Hips关节点的3D位置坐标值;
关节点空间坐标计算模块,用于根据预设的标准骨骼长度和当前帧各个关节点相对于Hips关节点的3D位置坐标值计算获得当前帧各个关节点的标准化3D空间坐标;
关节点旋转向量获取模块,用于将当前帧各个关节点的标准化3D空间坐标输入预先构建的逆向运动学神经网络模型,获得当前帧各个关节点的预测6D旋转向量;
关节点四元数获取模块,用于将当前帧各个关节点的预测6D旋转向量转换为当前帧各个关节点的旋转矩阵,再使用scipy数学库将当前帧各个关节点的旋转矩阵转换为当前帧各个关节点的四元数;
关节点四元数发送模块,用于将当前帧各个关节点的四元数发送到三维渲染引擎,用于实时高帧率驱动动画人物。
优选的,所述关节点空间坐标计算模块包括:
方向向量获取单元,用于根据当前帧各个关节点相对于Hips关节点的3D位置坐标值,通过子节点减去父节点,得到每个骨骼的向量,对每个骨骼的向量进行标准化,得到每个骨骼的方向向量;
标准向量获取单元,用于对每个骨骼的方向向量乘以对应的预设的标准骨骼长度,得到标准化的骨骼向量;
空间坐标获取单元,用于通过父节点的3D空间坐标加上子节点的标准化的骨骼向量,得到子节点的3D空间坐标,照此方法计算,得到该帧所有关节点的标准化的3D空间坐标。
优选的,实时人体姿态逆向运动学求解装置还包括:运动学模型构建模块,用于构建逆向运动学神经网络模型;所述运动学模型构建模块包括:
数据集获取单元,用于获取训练数据集和验证数据集;
模型构建单元,用于构建逆向运动学神经网络模型;
模型训练单元,用于采用训练数据集和验证数据集训练逆向运动学神经网络模型。
本发明还提供一种实时人体姿态逆向运动学求解装置,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序以实现上述实时人体姿态逆向运动学求解方法的步骤。
本申请与现有技术相比,其有益效果详细说明如下:本申请通过对当前帧人体姿态图像进行3D关键点检测获得各个关节点在绝对坐标系下的3D坐标值,将其减去Hips关节点的坐标值,获得各个关节点相对于Hips关节点的3D位置坐标值,根据预设的标准骨骼长度获得各个关节点的标准化3D空间坐标,将其输入预先构建的逆向运动学神经网络模型获得各个关节点的预测6D旋转向量,再将其转换为各个关节点的四元数发送到三维渲染引擎的方法,实现了人体动作的深度流形求解,使在3D渲染引擎上的动画人物效果更加自然、逼真。
附图说明
为了更清楚地说明本发明实施例,下面将对实施例中所需要使用的附图做简单的介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种实时人体姿态逆向运动学求解方法流程示意图;
图2为本发明实施例提供的一种获得各个关节点的标准化3D空间坐标的方法流程示意图;
图3为本发明实施例提供的一种逆向运动学神经网络模型的构建方法流程示意图;
图4为本发明实施例提供的一种逆向运动学神经网络模型结构示意图;
图5为本发明实施例提供的一种逆向运动学神经网络模型的残差网络结构示意图;
图6为本发明实施例提供的一种实时人体姿态逆向运动学求解装置结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下,所获得的所有其他实施例,都属于本发明保护范围。
为了使本领域的技术人员更好地理解本发明的技术方案,下面结合附图和具体实施例对本发明作进一步的详细说明。
本发明的目的是根据人体骨骼关键点(又可称关节点、光点)在绝对坐标系下的三维坐标(x, y, z),计算出各个骨骼关节点的三维旋转量(如四元数)。即输入:每一帧的人体姿态各个骨骼关键点(又可称关节点、光点)的3D坐标,输出:每一帧的人体姿态各个骨骼关键点的3D旋转量(如四元数、欧拉角、旋转矩阵等)。
如图1所示,本发明实施例提供一种实时人体姿态逆向运动学求解方法,即一种人体骨骼三维旋转量的获取方法,应用于实时人体姿态逆向运动学求解系统,包括:
S11:对当前帧人体姿态图像进行3D关键点检测,获得当前帧各个关节点在绝对坐标系下的3D坐标值,关节点包括Hips关节点;
具体的,将摄像头获取的图像输入至3D关键点检测模块,得到每个关节点在当前帧的绝对坐标系下的3D坐标值。
S12:将当前帧各个关节点在绝对坐标系下的3D坐标值减去Hips关节点的坐标值,获得当前帧各个关节点相对于Hips关节点的3D位置坐标值;
具体的,当前帧各个关节点的在绝对坐标系下的3D坐标值为 ,其中 表示一个三维坐标值 (x,y,z),当
前帧的 Hips 关节点的3D值为 ,计算当前帧相对于 Hips 关节点的3D位置坐标
值 ,其
中表示两个三维向量的减法运算。该步骤可以将任意绝对坐标系转
换到人体的对象坐标系,使得算法模型不会受到绝对坐标系选取的干扰。
S13:根据预设的标准骨骼长度和当前帧各个关节点相对于Hips关节点的3D位置坐标值计算获得当前帧各个关节点的标准化3D空间坐标;
具体的,已知预设的标准骨骼长度,对S12中所计算的每个关节点的3D坐标值,通过子节点减去父节点,得到每个骨骼的向量,对该向量进行标准化,得到每个骨骼的方向向量。对该方向向量乘以对应的标准骨骼长度,得到标准化的骨骼向量。通过父节点的3D空间坐标加上子节点的标准化的骨骼向量,得到子节点的3D空间坐标。依次累加,得到该帧所有关节点的标准化的3D空间坐标。
具体的,已知预设的标准骨骼长度s[i],s表示长度,i表示骨骼关键点索引,预设
的标准骨骼长度如下(单位为cm):s[1]=11.13516681, s[2]=9.83915507, s[3]=
9.83915507, s[4]=9.83915507, s[5]=12.7134366, s[6]=5.62735275, s[7]=
5.62735275, s[8]=9.7277201, s[9]=11.4788978, s[10]=18.5409497, s[11]=
28.88665599, s[12]=22.32324091, s[13]=5.08133298, s[14]=8.67401851, s[15]=
11.4788978, s[16]=18.5409497, s[17]=28.88665599, s[18]=22.32324091, s[19]=
5.08133298, s[20]=8.67401851, s[21]=9.33660297, s[22]=41.79405063, s[23]=
39.71819659, s[24]=3.53192946, s[25]=13.83215669, s[26]=7.59993601, s[27]=
9.33660297, s[28]=41.79405063, s[29]=39.71819659, s[30]=3.53192946, s[31]=
13.83215669, s[32]=7.32937107。已知每个关键点的父节点为pp[i],pp表示父节点索引,
i表示骨骼关键点索引。pp[1]=0、pp[2]=1、pp[3]=2、pp[4]=3、pp[5]=4、pp[6]=5、pp[7]=8、
pp[8]=7、pp[9]=4、pp[10]=9、pp[11]=10、pp[12]=11、pp[13]=12、pp[14]=12、pp[15]=4、pp
[16]=15、pp[17]=16、pp[18]=17、pp[19]=18、pp[20]=18、pp[21]=0、pp[22]=21、pp[23]=22、
pp[24]=23、pp[25]=24、pp[26]=25、pp[27]=0、pp[28]=27、pp[29]=28、pp[30]=29、pp[31]=
30、pp[32]=31。根据公式,
可以得到每个非Hips的关键点的标准化的骨骼向量。令表示标准化的
3D空间坐标值,Hip的3D坐标值为 ,通过公式 计算得到所有关节点的标准化的
3D空间坐标值。该步骤的目的是对任意3D骨骼关键点进行标准化,使得算法模型不会受到
不同身高比例的人体关键点造成的干扰。该步骤的效果是对于不同身高比例的人进行了人
体关键点的标准化,因此模型输出的旋转量健壮性更好。
S14:将当前帧各个关节点的标准化3D空间坐标输入预先构建的逆向运动学神经网络模型,获得当前帧各个关节点的预测6D旋转向量;
S15:将当前帧各个关节点的预测6D旋转向量转换为当前帧各个关节点的旋转矩阵,再使用scipy数学库将当前帧各个关节点的旋转矩阵转换为当前帧各个关节点的四元数;
具体的,将当前帧各个关节点的预测6D旋转向量转换为当前帧各个关节点的旋转矩阵的方法包括:(1)定义标准骨骼偏移,所有非Hips关节点的标准偏移为: {1, {0.0,10.973504172820446,-1.8905411922178885}}、{2, {0.0,9.839155069029879,0.0}}、{3,{0.0,9.839155069029879,0.0}}、{4, {0.0,9.839155069029879,0.0}}、{5, {0.0,12.650342231609844,1.2650342231609846}}、{6, {0.0,5.627352749797471,0.0}}、{7,{0.0,5.627352749797471,0.0}}、{8, {0.0,9.727720099469252,0.0}}、{9, {0.0,9.035958736864172,7.079303955478363}}、{10, {0.0,18.540949701045772,0.0}}、{11,{0.0,28.886655990727327,0.0}}、{12, {0.0,22.323240911467128,0.0}}、{13, {-3.0643109737346546,3.252690113828508,2.418667007718634}}、{14, {0.0,8.673840303542688,-0.055601540407324915}}、{15, {0.0,9.035958736864172,7.079303955478363}}、{16, {0.0,18.540949701045772,0.0}}、{17, {0.0,28.886655990727327,0.0}}、{18, {0.0,22.323240911467128,0.0}}、{19,{3.0643109737346546,3.252690113828508,2.418667007718634}}、{20, {0.0,8.673840303542688,-0.055601540407324915}}、{21, {-9.336602969020769,0.0,0.0}}、{22, {0.0,-41.79405063115827,0.0}}、{23, {0.0,-39.71819658810898,0.0}}、{24,{0.0,-3.5319294628875477,0.0}}、{25, {0.0,0.0,13.83215668621111}}、{26, {0.0,0.0,7.599936005436189}}、{27, {9.336602969020769,0.0,0.0}}、{28, {0.0,-41.79405063115827,0.0}}、{29, {0.0,-39.71819658810898,0.0}}、{30, {0.0,-3.5319294628875477,0.0}}、{31, {0.0,0.0,13.83215668621111}}、{32, {0.0,0.0,7.329371066117648}}。(2)根据以上标准骨骼偏移, 求2范数得到每个标准骨骼长度。(3)将计算的每个关节点的3D坐标值通过子节点减去父节点,得到每个骨骼的向量,对该向量进行标准化,得到每个骨骼的方向向量。对该方向向量乘以对应的标准骨骼长度,得到标准化的骨骼向量。通过父节点的3D空间坐标加上子节点的标准化的骨骼向量,得到子节点的3D空间坐标。依次累加,得到所有关节点的标准化的3D空间坐标。(4)以相同的方式,计算所有帧的每个关节点的3D空间坐标。(5)将所有3D空间坐标值作为数据集的输入特征X。(6)将每一帧的所有关节点的旋转矩阵R,保留前两个列向量,将其压缩为一个6维向量,作为6D旋转向量。将6D旋转向量转换为当前帧各个关节点的旋转矩阵,再使用scipy数学库将当前帧各个关节点的旋转矩阵转换为当前帧各个关节点的四元数的。
具体的,根据当前帧各个关键的预测6D旋转向量,将每个关节点的6D旋转向量的前3个值作
为向量x,将6D旋转向量的后3个值作为向量y;把所有向量x进行标准化,更新向量x;对向量
x和向量y求叉积,得到z向量;将z向量进行标准化,更新z向量;将z向量和x向量求叉积,更
新向量y;将向量x、向量y、向量z分别作为三维方阵的列向量,得到旋转矩阵R。再使用scipy
数学库将当前帧各个关节点的旋转矩阵R转换为当前帧各个关节点的四元数。该步骤的目
的是把6D旋转量转换为引擎能够识别的四元数。该步骤的效果是使引擎可以通过四元数驱
动3D人物骨骼。
S16:将当前帧各个关节点的四元数发送到三维渲染引擎,用于实时高帧率驱动动画人物。
具体的,通过网络协议将当前帧每个关节点的四元数发送到三维渲染引擎,最终实现实时高帧率驱动动画人物。
需要说明的是,如图2所示,S13中根据预设的标准骨骼长度和当前帧各个关节点相对于Hips关节点的3D位置坐标值计算获得当前帧各个关节点的标准化3D空间坐标的方法包括:
S131:根据当前帧各个关节点相对于Hips关节点的3D位置坐标值,通过子节点减去父节点,得到每个骨骼的向量,对每个骨骼的向量进行标准化,得到每个骨骼的方向向量;
S132:对每个骨骼的方向向量乘以对应的预设的标准骨骼长度,得到标准化的骨骼向量;
S133:通过父节点的3D空间坐标加上子节点的标准化的骨骼向量,得到子节点的3D空间坐标,照此方法计算,得到该帧所有关节点的标准化的3D空间坐标。
当前帧各个关节点的在绝对坐标系下的3D坐标值为 ,其中 表示一个三维坐标值 (x,y,z),当前
帧的 Hips 关节点的3D值为 ,计算当前帧相对于 Hips 关节点的3D位置坐标值 ,其中表示两个三维向量的减法运算。该步骤可以将任意绝对坐标系转换
到人体的对象坐标系,使得算法模型不会受到绝对坐标系选取的干扰。
已知预设的标准骨骼长度s[i],s表示长度,i表示骨骼关键点索引,预设的标准骨
骼长度如下(单位为cm):s[1]=11.13516681, s[2]=9.83915507, s[3]=9.83915507, s[4]
=9.83915507, s[5]=12.7134366, s[6]=5.62735275, s[7]=5.62735275, s[8]=
9.7277201, s[9]=11.4788978, s[10]=18.5409497, s[11]=28.88665599, s[12]=
22.32324091, s[13]=5.08133298, s[14]=8.67401851, s[15]=11.4788978, s[16]=
18.5409497, s[17]=28.88665599, s[18]=22.32324091, s[19]=5.08133298, s[20]=
8.67401851, s[21]=9.33660297, s[22]=41.79405063, s[23]=39.71819659, s[24]=
3.53192946, s[25]=13.83215669, s[26]=7.59993601, s[27]=9.33660297, s[28]=
41.79405063, s[29]=39.71819659, s[30]=3.53192946, s[31]=13.83215669, s[32]=
7.32937107。已知每个关键点的父节点为pp[i],pp表示父节点索引,i表示骨骼关键点索
引。pp[1]=0、pp[2]=1、pp[3]=2、pp[4]=3、pp[5]=4、pp[6]=5、pp[7]=8、pp[8]=7、pp[9]=4、pp
[10]=9、pp[11]=10、pp[12]=11、pp[13]=12、pp[14]=12、pp[15]=4、pp[16]=15、pp[17]=16、
pp[18]=17、pp[19]=18、pp[20]=18、pp[21]=0、pp[22]=21、pp[23]=22、pp[24]=23、pp[25]=
24、pp[26]=25、pp[27]=0、pp[28]=27、pp[29]=28、pp[30]=29、pp[31]=30、pp[32]=31。根据
公式,可以得到每
个非Hips的关键点的标准化的骨骼向量。令表示标准化的3D空间坐标
值,Hip的3D坐标值为 ,通过公式 计算得到所有关节点的
标准化的3D空间坐标值。该步骤的目的是对任意3D骨骼关键点进行标准化,使得算法模型
不会受到不同身高比例的人体关键点造成的干扰。该步骤的效果是对于不同身高比例的人
进行了人体关键点的标准化,因此模型输出的旋转量健壮性更好。
需要说明的是,如图3所示,S14中逆向运动学神经网络模型的构建方法包括:
S21:获取训练数据集和验证数据集;
S22:构建逆向运动学神经网络模型;
S23:采用训练数据集和验证数据集训练逆向运动学神经网络模型。
需要说明的是,S21获取训练数据集和验证数据集的方法包括:
S211:通过动捕设备采集人体骨骼三维关节点的数据,包括每一帧人体姿态图像中每个关节点的指数、旋转轴和父节点;
具体的,可以通过Vicon动捕设备采集人体骨骼三维关节点的数据,关节点数目为33个,具体的关节点为:{0, Hips}、{1, Spine}、{2, Spine1}、{3, Spine2}、{4, Spine3}、{5, Neck}、{6, Neck1}、{7, Head}、{8, HeadEnd}、{9, RightShoulder}、{10,RightArm}、{11, RightForeArm}、{12, RightHand}、{13, RightHandThumb}、{14,RightHandMiddle}、{15, LeftShoulder}、{16, LeftArm}、{17, LeftForeArm}、{18,LeftHand}、{19, LeftHandThumb}、{20, LeftHandMiddle}、{21, RightUpLeg}、{22,RightLeg}、{23, RightFoot}、{24, RightForeFoot}、{25, RightToeBase}、{26,RightToeBaseEnd}、{27, LeftUpLeg}、{28, LeftLeg}、{29, LeftFoot}、{30,LeftForeFoot}、{31, LeftToeBase}、{32, LeftToeBaseEnd}。每个关节点的旋转轴为:{0,{X,Y,Z}}、{1, {X,Y,Z}}、{2, {X,Y,Z}}、{3, {X,Y,Z}}、{4, {X,Y,Z}}、{5, {X,Y,Z}}、{6,{X,Y,Z}}、{7, {X,Y,Z}}、{8, {}}、{9, {X,Z}}、{10, {X,Y,Z}}、{11, {X,Y}}、{12, {X,Z}}、{13, {}}、{14, {}}、{15, {X,Z}}、{16, {X,Y,Z}}、{17, {X,Y}}、{18, {X,Z}}、{19,{}}、{20, {}}、{21, {X,Y,Z}}、{22, {X}}、{23, {X,Y,Z}}、{24, {}}、{25, {X}}、{26,{}}、{27, {X,Y,Z}}、{28, {X}}、{29, {X,Y,Z}}、{30, {}}、{31, {X}}、{32, {}}。其中,0-32代表关节点的指数,X、Y、Z分别表示X轴、Y轴和Z轴。每个关节点的父节点为:{0, {}}、{1,{0}}、{2, {1}}、{3, {2}}、{4, {3}}、{5, {4}}、{6, {5}}、{7, {8}}、{8, {7}}、{9, {4}}、{10, {9}}、{11, {10}}、{12, {11}}、{13, {12}}、{14, {12}}、{15, {4}}、{16, {15}}、{17, {16}}、{18, {17}}、{19, {18}}、{20, {18}}、{21, {0}}、{22, {21}}、{23, {22}}、{24, {23}}、{25, {24}}、{26, {25}}、{27, {0}}、{28, {27}}、{29, {28}}、{30, {29}}、{31, {30}}、{32, {31}}。
具体的,通过Vicon动捕设备可以获取到以FBX文件形式的动捕数据。通过FBX标准解析该FBX文件可以得到上述数据。该步骤的目的和效果是解析文件,获取所需要的数据。
S212:获取每一帧人体姿态图像中每个关节点的欧拉角数据,使用scipy数学工具库将欧拉角数据转换为旋转矩阵R,获得每一帧人体姿态图像中所有关节点的旋转矩阵R;
具体的,该步骤的目的和效果是把欧拉角转换为旋转矩阵。把旋转数据转换为矩阵形式,可以用于后述步骤的计算。
S213:在每一帧人体姿态图像中将Hips关节点的3D空间坐标置为(0,0,0),已知所有关节点的旋转矩阵R及其子节点的初始偏移T,从Hips关节点开始,通过FK函数将父节点的3D空间坐标加上旋转矩阵R乘以初始偏移T的积,依次计算每个子节点的3D空间坐标值;
具体的,在每一帧中,将Hips关节点的3D空间坐标置为(0,0,0)。已知所有关节点的矩阵表示R,及其子节点的偏移T,从Hips关节点开始,通过将父节点的3D空间坐标加上矩阵R乘以初始偏移T的积,逐步计算每个子节点的3D空间坐标值。这个通过R计算3D空间坐标值的过程,记为FK函数。
具体的,该步骤的目的和效果是为了根据旋转矩阵数据和偏置计算出动捕数据中的以Hips关节点为原点的3D空间相对坐标值。
S214:定义标准骨骼偏移,获取所有非Hips关节点的标准偏移;
具体的,定义标准骨骼偏移,所有非Hips关节点的标准偏移为: {1, {0.0,10.973504172820446,-1.8905411922178885}}、{2, {0.0,9.839155069029879,0.0}}、{3,{0.0,9.839155069029879,0.0}}、{4, {0.0,9.839155069029879,0.0}}、{5, {0.0,12.650342231609844,1.2650342231609846}}、{6, {0.0,5.627352749797471,0.0}}、{7,{0.0,5.627352749797471,0.0}}、{8, {0.0,9.727720099469252,0.0}}、{9, {0.0,9.035958736864172,7.079303955478363}}、{10, {0.0,18.540949701045772,0.0}}、{11,{0.0,28.886655990727327,0.0}}、{12, {0.0,22.323240911467128,0.0}}、{13, {-3.0643109737346546,3.252690113828508,2.418667007718634}}、{14, {0.0,8.673840303542688,-0.055601540407324915}}、{15, {0.0,9.035958736864172,7.079303955478363}}、{16, {0.0,18.540949701045772,0.0}}、{17, {0.0,28.886655990727327,0.0}}、{18, {0.0,22.323240911467128,0.0}}、{19,{3.0643109737346546,3.252690113828508,2.418667007718634}}、{20, {0.0,8.673840303542688,-0.055601540407324915}}、{21, {-9.336602969020769,0.0,0.0}}、{22, {0.0,-41.79405063115827,0.0}}、{23, {0.0,-39.71819658810898,0.0}}、{24,{0.0,-3.5319294628875477,0.0}}、{25, {0.0,0.0,13.83215668621111}}、{26, {0.0,0.0,7.599936005436189}}、{27, {9.336602969020769,0.0,0.0}}、{28, {0.0,-41.79405063115827,0.0}}、{29, {0.0,-39.71819658810898,0.0}}、{30, {0.0,-3.5319294628875477,0.0}}、{31, {0.0,0.0,13.83215668621111}}、{32, {0.0,0.0,7.329371066117648}}。
S215:根据定义的标准骨骼偏移,求2范数得到每个标准骨骼长度;
具体的,根据公式,得
到s[1]=11.13516681, s[2]=9.83915507, s[3]=9.83915507, s[4]=9.83915507, s[5]=
12.7134366, s[6]=5.62735275, s[7]=5.62735275, s[8]=9.7277201, s[9]=
11.4788978, s[10]=18.5409497, s[11]=28.88665599, s[12]=22.32324091, s[13]=
5.08133298, s[14]=8.67401851, s[15]=11.4788978, s[16]=18.5409497, s[17]=
28.88665599, s[18]=22.32324091, s[19]=5.08133298, s[20]=8.67401851, s[21]=
9.33660297, s[22]=41.79405063, s[23]=39.71819659, s[24]=3.53192946, s[25]=
13.83215669, s[26]=7.59993601, s[27]=9.33660297, s[28]=41.79405063, s[29]=
39.71819659, s[30]=3.53192946, s[31]=13.83215669, s[32]=7.32937107。
S216:根据S213获得的每个子节点的3D空间坐标值和S214获得的每个标准骨骼长度计算子节点的3D空间坐标,依次累加,得到所有关节点的标准化3D空间坐标,照此方式计算,获得所有帧每个关节点的3D空间坐标值;
具体的,将步骤S213中的所计算的每个关节点的3D坐标值通过子节点减去父节点,得到每个骨骼的向量,对该向量进行标准化,得到每个骨骼的方向向量。对该方向向量乘以对应的标准骨骼长度,得到标准化的骨骼向量。通过父节点的3D空间坐标加上子节点的标准化的骨骼向量,得到子节点的3D空间坐标。依次累加,得到所有关节点的标准化的3D空间坐标。以相同的方式,计算所有帧的每个关节点的3D空间坐标。
具体的,当前帧各个关节点的在绝对坐标系下的3D坐标值为 ,其中 表示一个三维坐标值 (x,y,z),当
前帧的 Hips 关节点的3D值为 ,计算当前帧相对于 Hips 关节点的3D位置坐标
值 ,其中表示两个三维向量的减法运算。该步骤可以将任意绝对坐标系转换
到人体的对象坐标系,使得算法模型不会受到绝对坐标系选取的干扰。
已知预设的标准骨骼长度s[i],s表示长度,i表示骨骼关键点索引,预设的标准骨
骼长度如下(单位为cm):s[1]=11.13516681, s[2]=9.83915507, s[3]=9.83915507, s[4]
=9.83915507, s[5]=12.7134366, s[6]=5.62735275, s[7]=5.62735275, s[8]=
9.7277201, s[9]=11.4788978, s[10]=18.5409497, s[11]=28.88665599, s[12]=
22.32324091, s[13]=5.08133298, s[14]=8.67401851, s[15]=11.4788978, s[16]=
18.5409497, s[17]=28.88665599, s[18]=22.32324091, s[19]=5.08133298, s[20]=
8.67401851, s[21]=9.33660297, s[22]=41.79405063, s[23]=39.71819659, s[24]=
3.53192946, s[25]=13.83215669, s[26]=7.59993601, s[27]=9.33660297, s[28]=
41.79405063, s[29]=39.71819659, s[30]=3.53192946, s[31]=13.83215669, s[32]=
7.32937107。已知每个关键点的父节点为pp[i],pp表示父节点索引,i表示骨骼关键点索
引。pp[1]=0、pp[2]=1、pp[3]=2、pp[4]=3、pp[5]=4、pp[6]=5、pp[7]=8、pp[8]=7、pp[9]=4、pp
[10]=9、pp[11]=10、pp[12]=11、pp[13]=12、pp[14]=12、pp[15]=4、pp[16]=15、pp[17]=16、
pp[18]=17、pp[19]=18、pp[20]=18、pp[21]=0、pp[22]=21、pp[23]=22、pp[24]=23、pp[25]=
24、pp[26]=25、pp[27]=0、pp[28]=27、pp[29]=28、pp[30]=29、pp[31]=30、pp[32]=31。根据
公式,可以得到每
个非Hips的关键点的标准化的骨骼向量。令表示标准化的3D空间坐
标值,Hip的3D坐标值为 ,通过公式 计算得到所有关节点的标
准化的3D空间坐标值。该步骤的目的是对任意3D骨骼关键点进行标准化,使得算法模型不
会受到不同身高比例的人体关键点造成的干扰。该步骤的效果是对于不同身高比例的人进
行了人体关键点的标准化,因此模型输出的旋转量健壮性更好。
S217:将所有帧每个关节点的3D空间坐标值作为数据集的输入特征X;
S218:将每一帧所有关节点的旋转矩阵R,保留前两个列向量,将其压缩为一个6维向量,作为6D旋转向量,将所有6D旋转向量作为数据集的输出标签Y;
S219:将包含输入特征X和输出标签Y的数据集按照预设比例划分为训练数据集和验证数据集。
需要说明的是,如图4所示为构建的逆向运动学神经网络模型,其中Input:
position(J*3)指的是:输入:坐标值(J×3),后面括号里面的J×3表示该输入的维度空间
是J×3的;Dense指全连接层,Leaky ReLU指带泄漏修正线性单元。所述S22构建的逆向运动
学神经网络模型包括:5个含参数的全连接层Dense[m, n],其公式为:,其中矩阵和是模型参数,Dense[J*3,
2048]中m= J*3,n=2048,Dense[2048,2048]中m=n=2048;4个不含参数的激活函数Leaky
ReLU,其公式为:,其中;3个图5所示的残差
网络,其函数为。
具体的,给定输入,B表示批量大小,J表示关节点的个
数,可以通过逆向运动学神经网络所表示的组合函数,输出回归值 。该步骤的目的和效果是实现逆向运动学回归任务,根据各个关
节点的3D位置坐标,可以实时、准确预测输出各个关节点对应的6D旋转量。
需要说明的是,S23采用训练数据集和验证数据集训练逆向运动学神经网络模型的方法包括:
S231:将训练数据集按照批次分成不同的组输入到逆向运动学神经网络模型进行训练;
S232:在每一个批次的迭代中,计算出每个批次所有关节点的预测6D旋转向量和6D旋转向量标签的2范数的均值Loss1;
S233:在每一个批次的迭代中,将每个关节点的6D旋转向量的前3个值作为向量x,将6D旋转向量的后3个值作为向量y;把所有向量x进行标准化,更新向量x;对向量x和向量y求叉积,得到z向量;将z向量进行标准化,更新z向量;将z向量和x向量求叉积,更新向量y;将向量x、向量y、向量z分别作为三维方阵的列向量,得到旋转矩阵R;按照此方法得到每个批次的每个关节点的旋转矩阵R;
具体的,该步骤的目的是把输出的6D旋转向量转换为矩阵。该步骤的效果是使模型训练更加健壮。
S234:根据每个批次的每个关节点的旋转矩阵R,在每一帧人体姿态图像中将Hips关节点的3D空间坐标置为(0,0,0),已知子节点的初始偏移T,从Hips关节点开始,通过FK函数将父节点的3D空间坐标加上旋转矩阵R乘以初始偏移T的积,计算出每个批次的每个关节点的预测3D空间坐标值;
具体的,根据每个批次的每个关节点的旋转矩阵R,按照步骤S213所述的FK函数,计算出每个批次的每个关节点的预测3D空间坐标。该步骤的目的是用于计算Loss2。
S235:根据每个批次的每个关节点的预测3D空间坐标值,与输入的3D空间坐标值,计算2范数的均值,得到Loss2;
S236:计算每个批次的总损失Loss=Loss1+Loss2,在每个批次的迭代中,根据总损失Loss,使用Adam优化器进行神经网络的参数的优化;
S237:重复S232-S236不断迭代,使训练数据集和验证数据集的损失函数Loss1收敛至0.0005以下,Loss2收敛至2mm以下,获得最终的逆向运动学神经网络模型。
具体的,按照以上步骤不断迭代,使所述训练集和所述验证集的损失函数Loss1收敛至0.0005以下,Loss2收敛至2mm以下。
本申请提供的实时人体姿态逆向运动学求解方法的优势包括:(1)本方法通过数据学习到了更加自然的人体姿态解空间。传统逆向运动学迭代算法是通过手工增加和设计限制条件,使得人体容易导致不太自然的姿态;一些基于骨骼关键点及其向量关系直接解析求解的方法同样也容易导致不太自然的姿态。实际上,本方法通过深度学习算法强大的表征能力,学习到了人体动作的深度流形求解。因此通过本方法的处理,在3D渲染引擎上的动画人物效果更加自然、逼真。(2)本方法通过大量数据学习的方法,能够兼顾到关键点检测本身的噪音分布。这使得本方法具有很强的健壮性,并且自动学习到了降噪的能力。不会因为输入的不稳定性,而导致输出崩溃。传统流程需要多加上很多复杂的数据清洗工作,而本方法自带有这样的功能,只需要简单的数据异常检测。
本申请提供的实时人体姿态逆向运动学求解方法在以下测试台式机配置下可以达到60FPS以上的帧率。CPU:Intel(R Core(TM) i7-9700K CPU @ 3.60GHz,内存:8G,单卡GPU:NVIDIA GeForce RTX 2070 SUPER。
综上,本申请提供的实时人体姿态逆向运动学求解方法通过算法估计出的关键点坐标,实时计算出该关节点对应的旋转量(如采用四元数表示),以实时驱动3D引擎中的动画虚拟人体骨骼。解决了根据关节点信息,需要高帧率实时求解关节点旋转值,以驱动动画人物的问题,输出帧率应大于60 FPS以上。由于该问题是典型多解问题,传统的逆向运动学迭代算法,主要通过迭代优化关键点的旋转参数的方法,来去逐渐逼近这个解空间,本方法通过大量真实的动作数据,通过深度学习算法训练后,学习到了一个高度非线性的函数,可以直接求解而无需迭代求解,即学习出真实的姿态空间,保证求解的真实性。本方法能够保证稳定性、健壮性和适用性,保证不出现明显随时间抖动,不会因为出现异常的关键点坐标而失效;且适用于不同的坐标系,即适用于多种场景,并且使得驱动的动画形象姿态真实可信。
如图6所示,本发明实施例还提供一种实时人体姿态逆向运动学求解装置,包括:
关节点绝对坐标检测模块31,用于对当前帧人体姿态图像进行3D关键点检测,获得当前帧各个关节点在绝对坐标系下的3D坐标值,关节点包括Hips关节点;
关节点位置坐标计算模块32,用于将当前帧各个关节点在绝对坐标系下的3D坐标值减去Hips关节点的坐标值,获得当前帧各个关节点相对于Hips关节点的3D位置坐标值;
关节点空间坐标计算模块33,用于根据预设的标准骨骼长度和当前帧各个关节点相对于Hips关节点的3D位置坐标值计算获得当前帧各个关节点的标准化3D空间坐标;
关节点旋转向量获取模块34,用于将当前帧各个关节点的标准化3D空间坐标输入预先构建的逆向运动学神经网络模型,获得当前帧各个关节点的预测6D旋转向量;
关节点四元数获取模块35,用于将当前帧各个关节点的预测6D旋转向量转换为当前帧各个关节点的旋转矩阵,再使用scipy数学库将当前帧各个关节点的旋转矩阵转换为当前帧各个关节点的四元数;
关节点四元数发送模块36,用于将当前帧各个关节点的四元数发送到三维渲染引擎,用于实时高帧率驱动动画人物。
需要说明的是,关节点空间坐标计算模块33包括:
方向向量获取单元,用于根据当前帧各个关节点相对于Hips关节点的3D位置坐标值,通过子节点减去父节点,得到每个骨骼的向量,对每个骨骼的向量进行标准化,得到每个骨骼的方向向量;
标准向量获取单元,用于对每个骨骼的方向向量乘以对应的预设的标准骨骼长度,得到标准化的骨骼向量;
空间坐标获取单元,用于通过父节点的3D空间坐标加上子节点的标准化的骨骼向量,得到子节点的3D空间坐标,照此方法计算,得到该帧所有关节点的标准化的3D空间坐标。
需要说明的是,实时人体姿态逆向运动学求解装置还包括:运动学模型构建模块30,用于构建逆向运动学神经网络模型;运动学模型构建模块30包括:
数据集获取单元,用于获取训练数据集和验证数据集;
模型构建单元,用于构建逆向运动学神经网络模型;
模型训练单元,用于采用训练数据集和验证数据集训练逆向运动学神经网络模型。
本发明实施例还提供一种实时人体姿态逆向运动学求解装置,包括:存储器,用于存储计算机程序;处理器,用于执行计算机程序以实现上述实时人体姿态逆向运动学求解方法的步骤。
图6所对应实施例中特征的说明可以参见图1-图5所对应实施例的相关说明,这里不再一一赘述。
以上对本发明实施例所提供的一种实时人体姿态逆向运动学求解方法及装置进行了详细介绍。说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件模块,或者二者的结合来实施。软件模块可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
Claims (7)
1.一种实时人体姿态逆向运动学求解方法,其特征在于,包括:
S11:对当前帧人体姿态图像进行3D关键点检测,获得当前帧各个关节点在绝对坐标系下的3D坐标值,所述关节点包括Hips关节点;
S12:将当前帧各个关节点在绝对坐标系下的3D坐标值减去Hips关节点的坐标值,获得当前帧各个关节点相对于Hips关节点的3D位置坐标值;
S13:根据预设的标准骨骼长度和当前帧各个关节点相对于Hips关节点的3D位置坐标值计算获得当前帧各个关节点的标准化3D空间坐标;
S14:将当前帧各个关节点的标准化3D空间坐标输入预先构建的逆向运动学神经网络模型,获得当前帧各个关节点的预测6D旋转向量;
S15:将当前帧各个关节点的预测6D旋转向量转换为当前帧各个关节点的旋转矩阵,再使用scipy数学库将当前帧各个关节点的旋转矩阵转换为当前帧各个关节点的四元数;
S16:将当前帧各个关节点的四元数发送到三维渲染引擎,用于实时高帧率驱动动画人物;
所述S14中逆向运动学神经网络模型的构建方法包括:
S21:获取训练数据集和验证数据集;
S22:构建逆向运动学神经网络模型;
S23:采用训练数据集和验证数据集训练逆向运动学神经网络模型;
2.根据权利要求1所述的实时人体姿态逆向运动学求解方法,其特征在于,所述S13中根据预设的标准骨骼长度和当前帧各个关节点相对于Hips关节点的3D位置坐标值计算获得当前帧各个关节点的标准化3D空间坐标的方法包括:
S131:根据当前帧各个关节点相对于Hips关节点的3D位置坐标值,通过子节点减去父节点,得到每个骨骼的向量,对每个骨骼的向量进行标准化,得到每个骨骼的方向向量;
S132:对每个骨骼的方向向量乘以对应的预设的标准骨骼长度,得到标准化的骨骼向量;
S133:通过父节点的3D空间坐标加上子节点的标准化的骨骼向量,得到子节点的3D空间坐标,照此方法计算,得到该帧所有关节点的标准化的3D空间坐标。
3.根据权利要求1所述的实时人体姿态逆向运动学求解方法,其特征在于,所述S21获取训练数据集和验证数据集的方法包括:
S211:通过动捕设备采集人体骨骼三维关节点的数据,包括每一帧人体姿态图像中每个关节点的指数、旋转轴和父节点;
S212:获取每一帧人体姿态图像中每个关节点的欧拉角数据,使用scipy数学工具库将欧拉角数据转换为旋转矩阵R,获得每一帧人体姿态图像中所有关节点的旋转矩阵R;
S213:在每一帧人体姿态图像中将Hips关节点的3D空间坐标置为(0,0,0),已知所有关节点的旋转矩阵R及其子节点的初始偏移T,从Hips关节点开始,通过FK函数将父节点的3D空间坐标加上旋转矩阵R乘以初始偏移T的积,依次计算每个子节点的3D空间坐标值;
S214:定义标准骨骼偏移,获取所有非Hips关节点的标准偏移;
S215:根据定义的标准骨骼偏移,求2范数得到每个标准骨骼长度;
S216:根据S213获得的每个子节点的3D空间坐标值和S214获得的每个标准骨骼长度计算子节点的3D空间坐标,依次累加,得到所有关节点的标准化3D空间坐标,照此方式计算,获得所有帧每个关节点的3D空间坐标值;
S217:将所有帧每个关节点的3D空间坐标值作为数据集的输入特征X;
S218:将每一帧所有关节点的旋转矩阵R,保留前两个列向量,将其压缩为一个6维向量,作为6D旋转向量,将所有6D旋转向量作为数据集的输出标签Y;
S219:将包含输入特征X和输出标签Y的数据集按照预设比例划分为训练数据集和验证数据集。
4.根据权利要求1所述的实时人体姿态逆向运动学求解方法,其特征在于,所述S23采用训练数据集和验证数据集训练逆向运动学神经网络模型的方法包括:
S231:将训练数据集按照批次分成不同的组输入到逆向运动学神经网络模型进行训练;
S232:在每一个批次的迭代中,计算出每个批次所有关节点的预测6D旋转向量和6D旋转向量标签的2范数的均值Loss1;
S233:在每一个批次的迭代中,将每个关节点的6D旋转向量的前3个值作为向量x,将6D旋转向量的后3个值作为向量y;把所有向量x进行标准化,更新向量x;对向量x和向量y求叉积,得到z向量;将z向量进行标准化,更新z向量;将z向量和x向量求叉积,更新向量y;将向量x、向量y、向量z分别作为三维方阵的列向量,得到旋转矩阵R;按照此方法得到每个批次的每个关节点的旋转矩阵R;
S234:根据每个批次的每个关节点的旋转矩阵R,在每一帧人体姿态图像中将Hips关节点的3D空间坐标置为(0,0,0),已知子节点的初始偏移T,从Hips关节点开始,通过FK函数将父节点的3D空间坐标加上旋转矩阵R乘以初始偏移T的积,计算出每个批次的每个关节点的预测3D空间坐标值;
S235:根据每个批次的每个关节点的预测3D空间坐标值,与输入的3D空间坐标值,计算2范数的均值,得到Loss2;
S236:计算每个批次的总损失Loss=Loss1+Loss2,在每个批次的迭代中,根据总损失Loss,使用Adam优化器进行神经网络的参数的优化;
S237:重复S232-S236不断迭代,使所述训练数据集和所述验证数据集的损失函数Loss1收敛至0.0005以下,Loss2收敛至2mm以下,获得最终的逆向运动学神经网络模型。
5.一种实时人体姿态逆向运动学求解装置,其特征在于,包括:
关节点绝对坐标检测模块,用于对当前帧人体姿态图像进行3D关键点检测,获得当前帧各个关节点在绝对坐标系下的3D坐标值,所述关节点包括Hips关节点;
关节点位置坐标计算模块,用于将当前帧各个关节点在绝对坐标系下的3D坐标值减去Hips关节点的坐标值,获得当前帧各个关节点相对于Hips关节点的3D位置坐标值;
关节点空间坐标计算模块,用于根据预设的标准骨骼长度和当前帧各个关节点相对于Hips关节点的3D位置坐标值计算获得当前帧各个关节点的标准化3D空间坐标;
关节点旋转向量获取模块,用于将当前帧各个关节点的标准化3D空间坐标输入预先构建的逆向运动学神经网络模型,获得当前帧各个关节点的预测6D旋转向量;
关节点四元数获取模块,用于将当前帧各个关节点的预测6D旋转向量转换为当前帧各个关节点的旋转矩阵,再使用scipy数学库将当前帧各个关节点的旋转矩阵转换为当前帧各个关节点的四元数;
关节点四元数发送模块,用于将当前帧各个关节点的四元数发送到三维渲染引擎,用于实时高帧率驱动动画人物;
还包括:运动学模型构建模块,用于构建逆向运动学神经网络模型;所述运动学模型构建模块包括:
数据集获取单元,用于获取训练数据集和验证数据集;
模型构建单元,用于构建逆向运动学神经网络模型;
模型训练单元,用于采用训练数据集和验证数据集训练逆向运动学神经网络模型;
6.根据权利要求5所述的实时人体姿态逆向运动学求解装置,其特征在于,所述关节点空间坐标计算模块包括:
方向向量获取单元,用于根据当前帧各个关节点相对于Hips关节点的3D位置坐标值,通过子节点减去父节点,得到每个骨骼的向量,对每个骨骼的向量进行标准化,得到每个骨骼的方向向量;
标准向量获取单元,用于对每个骨骼的方向向量乘以对应的预设的标准骨骼长度,得到标准化的骨骼向量;
空间坐标获取单元,用于通过父节点的3D空间坐标加上子节点的标准化的骨骼向量,得到子节点的3D空间坐标,照此方法计算,得到该帧所有关节点的标准化的3D空间坐标。
7.一种实时人体姿态逆向运动学求解装置,其特征在于,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序以实现如权利要求1至4中任一项所述实时人体姿态逆向运动学求解方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011213774.4A CN112037312B (zh) | 2020-11-04 | 2020-11-04 | 实时人体姿态逆向运动学求解方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011213774.4A CN112037312B (zh) | 2020-11-04 | 2020-11-04 | 实时人体姿态逆向运动学求解方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112037312A CN112037312A (zh) | 2020-12-04 |
CN112037312B true CN112037312B (zh) | 2021-02-09 |
Family
ID=73573621
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011213774.4A Active CN112037312B (zh) | 2020-11-04 | 2020-11-04 | 实时人体姿态逆向运动学求解方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112037312B (zh) |
Families Citing this family (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112686976A (zh) * | 2020-12-31 | 2021-04-20 | 咪咕文化科技有限公司 | 骨骼动画数据的处理方法、装置及通信设备 |
CN112767486B (zh) * | 2021-01-27 | 2022-11-29 | 清华大学 | 基于深度卷积神经网络的单目6d姿态估计方法及装置 |
CN112836824B (zh) * | 2021-03-04 | 2023-04-18 | 上海交通大学 | 单目三维人体位姿无监督学习方法、系统及介质 |
CN112947758A (zh) * | 2021-03-04 | 2021-06-11 | 北京京航计算通讯研究所 | 一种基于vr技术的多用户虚实协同系统 |
CN113763532B (zh) * | 2021-04-19 | 2024-01-19 | 腾讯科技(深圳)有限公司 | 基于三维虚拟对象的人机交互方法、装置、设备及介质 |
CN113643419B (zh) * | 2021-06-29 | 2024-04-23 | 清华大学 | 一种基于深度学习的人体反向动力学求解方法 |
CN113345062B (zh) * | 2021-08-04 | 2021-11-05 | 成都市谛视科技有限公司 | 三维虚拟角色动作补全方法、装置和服务器 |
CN113345061B (zh) * | 2021-08-04 | 2021-11-05 | 成都市谛视科技有限公司 | 动作补全模型的训练方法、装置、补全方法、设备和介质 |
CN113554736B (zh) * | 2021-09-22 | 2021-12-21 | 成都市谛视科技有限公司 | 骨骼动画顶点矫正方法及模型的学习方法、装置和设备 |
CN115345043A (zh) * | 2022-07-27 | 2022-11-15 | 山东黄金矿业(莱州)有限公司三山岛金矿 | 一种黄金地下矿山采矿工艺的三维仿真方法 |
CN116503958B (zh) * | 2023-06-27 | 2023-10-03 | 江西师范大学 | 人体姿态识别方法、系统、存储介质及计算机设备 |
Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2012223864A (ja) * | 2011-04-21 | 2012-11-15 | Toyota Motor Corp | 動作データ生成システム、及び動作データ生成方法 |
CN103150752A (zh) * | 2013-02-02 | 2013-06-12 | 浙江大学 | 一种基于关键标记点的人体姿态稀疏重建方法 |
CN105631919A (zh) * | 2015-07-09 | 2016-06-01 | 腾讯科技(深圳)有限公司 | 一种数据处理方法和装置 |
CN106970705A (zh) * | 2017-03-09 | 2017-07-21 | 北京神州四达科技有限公司 | 动作捕捉方法、装置和电子设备 |
CN108447077A (zh) * | 2018-03-27 | 2018-08-24 | 王英睿 | 一种马术骑手姿态信息采集分析系统 |
CN108876815A (zh) * | 2018-04-28 | 2018-11-23 | 深圳市瑞立视多媒体科技有限公司 | 骨骼姿态计算方法、人物虚拟模型驱动方法及存储介质 |
CN109000633A (zh) * | 2017-06-06 | 2018-12-14 | 大连理工大学 | 基于异构数据融合的人体姿态动作捕捉算法设计 |
CN109591016A (zh) * | 2018-12-29 | 2019-04-09 | 深圳市工匠社科技有限公司 | 仿人机械手臂体感控制系统及相关产品 |
CN110253583A (zh) * | 2019-07-02 | 2019-09-20 | 北京科技大学 | 基于穿戴示教服视频的人体姿态机器人示教方法及装置 |
CN110570455A (zh) * | 2019-07-22 | 2019-12-13 | 浙江工业大学 | 一种面向房间vr的全身三维姿态跟踪方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101687629B1 (ko) * | 2010-01-18 | 2016-12-20 | 삼성전자주식회사 | 인간형 로봇 및 그 보행 제어방법 |
-
2020
- 2020-11-04 CN CN202011213774.4A patent/CN112037312B/zh active Active
Patent Citations (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2012223864A (ja) * | 2011-04-21 | 2012-11-15 | Toyota Motor Corp | 動作データ生成システム、及び動作データ生成方法 |
CN103150752A (zh) * | 2013-02-02 | 2013-06-12 | 浙江大学 | 一种基于关键标记点的人体姿态稀疏重建方法 |
CN105631919A (zh) * | 2015-07-09 | 2016-06-01 | 腾讯科技(深圳)有限公司 | 一种数据处理方法和装置 |
CN106970705A (zh) * | 2017-03-09 | 2017-07-21 | 北京神州四达科技有限公司 | 动作捕捉方法、装置和电子设备 |
CN109000633A (zh) * | 2017-06-06 | 2018-12-14 | 大连理工大学 | 基于异构数据融合的人体姿态动作捕捉算法设计 |
CN108447077A (zh) * | 2018-03-27 | 2018-08-24 | 王英睿 | 一种马术骑手姿态信息采集分析系统 |
CN108876815A (zh) * | 2018-04-28 | 2018-11-23 | 深圳市瑞立视多媒体科技有限公司 | 骨骼姿态计算方法、人物虚拟模型驱动方法及存储介质 |
CN109591016A (zh) * | 2018-12-29 | 2019-04-09 | 深圳市工匠社科技有限公司 | 仿人机械手臂体感控制系统及相关产品 |
CN110253583A (zh) * | 2019-07-02 | 2019-09-20 | 北京科技大学 | 基于穿戴示教服视频的人体姿态机器人示教方法及装置 |
CN110570455A (zh) * | 2019-07-22 | 2019-12-13 | 浙江工业大学 | 一种面向房间vr的全身三维姿态跟踪方法 |
Non-Patent Citations (1)
Title |
---|
人体关节约束的运动建模实时逆运动学算法;江艳平 等;《自动化与仪器仪表》;20181231(第12期);第202-204,209页 * |
Also Published As
Publication number | Publication date |
---|---|
CN112037312A (zh) | 2020-12-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112037312B (zh) | 实时人体姿态逆向运动学求解方法及装置 | |
Kaufmann et al. | Convolutional autoencoders for human motion infilling | |
CN112614213B (zh) | 人脸表情确定方法、表情参数确定模型、介质及设备 | |
CN111402290B (zh) | 一种基于骨骼关键点的动作还原方法以及装置 | |
EP3454302B1 (en) | Approximating mesh deformation for character rigs | |
Akhter et al. | Trajectory space: A dual representation for nonrigid structure from motion | |
CN107403463B (zh) | 在成像系统中具有非刚性部分的人体表示 | |
US9818217B2 (en) | Data driven design and animation of animatronics | |
US8923392B2 (en) | Methods and apparatus for face fitting and editing applications | |
Lai et al. | Motion Capture Data Completion and Denoising by Singular Value Thresholding. | |
CN111161395B (zh) | 一种人脸表情的跟踪方法、装置及电子设备 | |
CN110660017A (zh) | 一种基于三维姿态识别的舞谱记录与演示方法 | |
CN111062326A (zh) | 一种基于几何驱动的自监督人体3d姿态估计网络训练方法 | |
Yang et al. | Posture-invariant three dimensional human hand statistical shape model | |
Yang et al. | Spatio-temporal reconstruction for 3D motion recovery | |
CN114581613A (zh) | 一种基于轨迹约束的人体模型姿态和形状优化方法和系统 | |
CN114495274A (zh) | 使用rgb相机实现人体动作捕捉的系统及其方法 | |
Zhu et al. | Mocanet: Motion retargeting in-the-wild via canonicalization networks | |
Kazmi et al. | Efficient sketch‐based creation of detailed character models through data‐driven mesh deformations | |
CN115482557A (zh) | 人体图像生成方法、系统、设备及存储介质 | |
CN114494542A (zh) | 一种基于卷积神经网络的人物驱动动画方法及系统 | |
CN114758108A (zh) | 虚拟对象驱动方法、装置、存储介质及计算机设备 | |
CN109859268B (zh) | 基于生成查询网络的物体被遮挡部分成像方法 | |
Zhao et al. | Human motion reconstruction from monocular images using genetic algorithms | |
Li | [Retracted] Task Image Setting of 3D Animation Based on Virtual Reality and Artificial Intelligence |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
TR01 | Transfer of patent right |
Effective date of registration: 20211210 Address after: 610000 No. 04 and 05, 27th floor, building 1, No. 716, middle section of Jiannan Avenue, Chengdu hi tech Zone, China (Sichuan) pilot Free Trade Zone, Chengdu, Sichuan Patentee after: Chengdu Tishi infinite Technology Co.,Ltd. Address before: No.04 and No.05, 27th floor, building 1, No.716, middle section of Jiannan Avenue, Chengdu high tech Zone, China (Sichuan) pilot Free Trade Zone, Chengdu, Sichuan 610094 Patentee before: Chengdu Tishi Technology Co.,Ltd. |
|
TR01 | Transfer of patent right |