基于姿态识别的人体模型建立方法

文档序号:27256881发布日期:2021-11-05 20:04阅读:314来源:国知局
基于姿态识别的人体模型建立方法

1.本发明具体涉及一种基于姿态识别的人体模型建立方法。


背景技术:

2.随着经济技术的发展和人们生活水平的提高,人们对于健康的关注程度也越来越高。因此,对于人体步态的分析和人体模型的建模,就显得尤为重要。对于人体步态分析和建模的方法,目前主要是基于计算机视觉的步态分析技术和基于mems惯性传感器的步态分析技术两种。
3.基于计算机视觉2d摄像头的动作捕捉系统,主要采用卷积神经网络捕获特定关节点的特征,从而凸显相关关节的坐标,进行人体的二维建模。该方法需要采集大量的数据样本作为训练数据集,同时不能有摄像头的遮挡。因此实施起来并不方便。
4.而基于mems惯性传感器的步态分析系统,主要由多个mems惯性传感器组成,人体关节每个测量部位都穿戴惯性传感器,惯性传感器会反馈在运动过程中的角速度,加速度,磁力值以及运动姿态角度等测量信息,同时设置基于加速度传感器,陀螺仪,磁力计的数据融合算法,利用正向运动学和反向运动学实时推测出整个人身体的运动参数。该方法的缺点是,惯性传感器在每次测量前都需要校准,且校准后不能移动相关传感器的位置,同时传感器容易受到周围磁场的干扰,对于普通患者而言操作较复杂。


技术实现要素:

5.本发明的目的在于提供一种可靠性高、准确性好且易于实施的基于姿态识别的人体模型建立方法。
6.本发明提供的这种基于姿态识别的人体模型建立方法,包括如下步骤:
7.s1.获取人体模型基础数据;
8.s2.对步骤s1获取的人体模型基础数据采用检测网络进行检测,并得到检测模型;
9.s3.对步骤s2得到的检测模型,采用姿态检测算法进行二维姿态估计,从而得到估计模型;
10.s4.对步骤s3得到的估计模型进行对称空间变换,从而提取单人区域;
11.s5.对步骤s4得到的单人区域进行检测冗余的处理,从而得到人体姿态估计以及人体关节点的像素坐标;
12.s6.根据步骤s5得到的像素坐标,进行关节角度的运动信息计算;
13.s7.根据步骤s6得到的计算结果,建立人体模型。
14.步骤s2所述的对步骤s1获取的人体模型基础数据采用检测网络进行检测,具体为采用yolo v3检测网络检测人体。
15.所述的采用yolo v3检测网络检测人体,具体为采用如下步骤进行检测:
16.通过darknet53网络对输入数据进行特征提取,得到特定大小的特征图输出;然后将得到的图像分成13*13的网格大小,同时规定若真实框中某个物体的中心坐标落在某个
网格中,那么就由该网格来预测该物体;同时,每个物体由三个边界框进行预测,使用逻辑回归网络确定预测的回归框;
17.在yolo v3检测网络中,yolo v3_body共有252层,其中23个res_unit层对应23个add层,bn层共72层,leakyrelu层共72层;每一层bn层后面均连接一层leakyrelu层;此外,上采样和张量拼接操作各2个,5个零填充对应5个res_block;
18.yolo v3使用一个53层的卷积网络作为特征提取网络;特征提取网络残差单元叠加而成,同时采用k

means聚类算法确定bounding box的初始尺寸;同时使用9个默认框,每个默认框与不同尺寸特征图对应关系为:13*13的feature map对应[(116*90),(156*198),(373*326)],26*26的feature map对应[(30*61),(62*45),(59*119)],52*52的feature map对应[(10*13),(16*30),(33*23)];
[0019]
yolo v3采用直接预测相对位置的方法,预测出b

box中心点相对于网格单元左上角的相对坐标,直接预测出(t
x
,t
y
,t
w
,t
h
,t
o
),然后通过以下坐标偏移公式计算得到b

box的位置大小和置信度:
[0020]
b
x
=σ(t
x
)+c
x
[0021]
b
y
=σ(t
y
)+c
y
[0022][0023][0024]
p
r
(object)*iou(b,object)=σ(t
o
)
[0025]
式中(t
x
,t
y
,t
w
,t
h
,t
o
)为模型的预测输出;c
x
和c
y
为网格的坐标;和p
h
为预测前bounding box的尺寸;为预测得到的bounding box的中心坐标和尺寸;训练坐标值时,采用平方和距离误差损失进行训练;
[0026]
yolo v3为每个真实对象分配一个边界框;若边界框与真实对象不吻合,则不会产生坐标或类别预测损失,只会产生物体预测损失;
[0027]
yolo v3采用若干个独立的logistic分类器解决多标签分类问题;
[0028]
yolo v3采用若干个尺度融合进行预测,同时采用上采样和融合算法,在若干个尺度的特征图上进行检测。
[0029]
步骤s3所述的采用姿态检测算法进行二维姿态估计,具体为采用stackedhourglass姿态检测算法进行二维姿态估计。
[0030]
所述的采用stacked hourglass姿态检测算法进行二维姿态估计,具体为采用如下步骤进行估计:
[0031]
采用4阶hourglass module模块;
[0032]
每次降采样之前,分出上半路保留原尺度信息;
[0033]
每次升采样之后,和上一尺度的数据相加;
[0034]
两次降采样之间,使用三个residual模块提取特征;
[0035]
两次相加之间,使用一个residual模块提取特征;
[0036]
将feature map层层叠加,最后一个大的feature map保留所有层的信息;
[0037]
最后该网络得到每个关节点的heatmap,并组合hourglass;
[0038]
将第一个沙漏网络给出的热力图作为下一个沙漏网络的输入,从而提升了关节点的预测精度。
[0039]
所述的4阶hourglass module模块,具体为采用如下步骤构建4阶hourglassmodule模块:
[0040]
a.构造一阶hourglass module模块:一阶hourglass module模块包括max pool模组、第一res模组、第二res模组、第三res模组、up sample模组和第四res模组;其中max pool模组、第一res模组、第二res模组、第三res模组和up sample模组串联,第四res模组的输入端连接模块输入端,第四res模组的输出端连接模块输出端;
[0041]
b.将一阶hourglass module模块替换一阶hourglass module模块中的第二res模组,从而得到二阶hourglass module模块;
[0042]
c.将步骤b得到的二阶hourglass module模块替换一阶hourglass module模块中的第二res模组,从而得到三阶hourglass module模块;
[0043]
d.将步骤c得到的三阶hourglass module模块替换一阶hourglass module模块中的第二res模组,从而得到最终的四阶hourglass module模块。
[0044]
步骤s4所述的对步骤s3得到的估计模型进行对称空间变换,具体为采用如下步骤进行对称空间变换:
[0045]
空间转换网络stn能够将输入的图片进行空间变换;
[0046]
空间逆变换网络sdtn将估计的人体姿势重新映射回原始图像坐标;
[0047]
sdtn模块接收一个由定位网络生成的参数θ,然后反向转换计算参数γ;
[0048]
使用stn网络提取一个人体区域框:
[0049][0050]
其中θ1、θ2和θ3为二维空间向量;和为转换前的坐标;和为转换后的坐标;
[0051]
sdtn网络为反向转换和生成网格计算参数γ:
[0052][0053]
并行单人人体姿态网络sppe:为了训练stn模块的参数,通过在数据集中指定位于中心的姿势标签,同时在训练阶段冻结并行sppe模块的所有权重,其目的是将姿态定位后产生的误差反向传播到stn模块;
[0054]
parallel sppe只有在训练阶段才会产生作用。
[0055]
步骤s5所述的进行检测冗余的处理,具体为采用基于姿态的非最大值抑制p

pose nms算法进行处理。
[0056]
所述的采用基于姿态的非最大值抑制p

pose nms算法进行处理,具体为采用如下步骤进行处理:
[0057]
根据消除准则将靠近该参考的区域框进行删除,重复若干次,直到冗余的识框被消除并且每个识别框均唯一;
[0058]
具有m个关节的姿势pi表示为其中为第j个关节的位置,为第j个关节的置信分数;
[0059]
消除法则:定义姿态相似度,d()作为姿态之间的距离度量,定义η作为消除标准的阈值,λ表示函数d()的参数集合:
[0060][0061]
该等式的意义为:将姿态p
i
与参考姿态p
j
做距离度量计算,d(p
i
,p
j
|λ,λ)代表姿态p
i
和姿态p
j
的距离度量值,f(p
i
,p
j
|λ,η);若d(p
i
,p
j
|λ,λ)≤η,则f(p
i
,p
j
|λ,η)取值为1,同时表示参考姿势p
i
冗余,需要被消除;
[0062]
姿态距离软匹配函数:
[0063][0064]
式中k
sim
(p
i
,p
j
|σ1)为姿态p
i
和姿态p
j
的匹配函数;为姿态p
i
中每个关节的置信分数;σ1为归一化参数,对每个关节的置信分数归一化到一个统一的变化范围;为姿态p
j
中某一个关节的位置;为姿态p
i
中某个关节的位置,为预测姿态p
i
中某个关节的检测框位置;如果姿态p
j
中某个关节的位置在预测姿态p
i
的检测框内,则对姿态p
i
和p
j
进行匹配函数的计算;姿态距离软匹配函数通过tanh函数进行过滤掉低置信度分数的姿态,如果两个对应的关节都具有高置信度分数,则ksin输出接近1,此时统计这两个相近姿势的对应关节的匹配数量;同时为了计算不同姿态的距离度量,需要计算不同姿态的对应空间距离;
[0065]
空间距离可以定义为:
[0066][0067]
式中h
sim
(p
i
,p
j
|σ2)为姿态p
i
和姿态p
j
的空间距离;σ2为归一化参数;
[0068]
最终距离定义为:
[0069]
d(p
i
,p
j
|λ)=k
sim
(p
i
,p
j
|σ1)+λh
sim
(p
i
,p
j
|σ2)
[0070]
式中λ为加权系数。
[0071]
步骤s6所述的关节角度的运动信息计算,具体为采用如下算式计算关节角度的运动信息:
[0072][0073][0074][0075][0076]
式中a为下端点关节点到中间关节点的像素距离;b为上端点关节点到下端点关节点的像素距离;c为上端点关节点到中间关节点的像素距离;b为三个关节点所组成的夹角;取三个相邻关节点组成三角形,(x2,y2)为中间关节点的二维像素坐标,(x1,y1)为上端点的关节点的二维像素坐标,(x3,y3)为下端点的关节点的二维像素坐标。
[0077]
步骤s7所述的建立人体模型,具体为采用如下步骤建立人体模型:
[0078]
(1)运动模拟系统的建立;
[0079]
(2)获取运动学数据;
[0080]
(3)优化反求肌肉激活,计算能量消耗:
[0081]
1)对输入的关节角度进行处理,得到目标的关节角加速度:
[0082][0083]
式中q..(t+t)为t+t时刻的目标角加速度;为表示t+t时刻采集到的运动学数据处理得到的角加速度;k
v
和k
p
为控制权重;为t时刻的实际角速度;q
.
(t)为t时刻的目标角速度;q
exp
(t)为t时刻的实际角度;q(t)为t时刻的目标角度;
[0084]
2)进行激活优化计算:
[0085][0086]
式中x
i
为第i条肌肉激活;n
x
为肌肉的总数目;n
q
为目标关节数目;ω
j
为各个关节所占优化目标的权重;为目标角加速度;为实际角加速度;
[0087]
3)能量消耗估算的计算公式:
[0088][0089][0090]
式中m
i
为每条肌肉的质量;ρ为肌肉密度;f
max,i
为第i块肌肉的肌肉最大等长收缩力;l
opt,i
为第i块肌肉的最佳肌纤维长度;σ为肌肉张力;c
met
为总体能量消耗;为第i条肌肉某时刻的等效激活;m为体重;每时刻基础能量消耗;t为计算消耗的时间区间。
[0091]
本发明提供的这种基于姿态识别的人体模型建立方法,通过创新性的算法设计对人体模型进行建立,从而保证了算法本身的可靠性高,而且本发明方法准确性好且易于实施。
附图说明
[0092]
图1为本发明方法的方法流程示意图。
[0093]
图2为本发明方法的yolo v3网络的网络示意图。
[0094]
图3为本发明方法的一阶hourglass module模块的结构示意图。
[0095]
图4为本发明方法的四阶hourglass module模块的结构示意图。
[0096]
图5为本发明方法的热力图的结构示意图。
[0097]
图6为本发明方法的空间转换网络的结构示意图。
具体实施方式
[0098]
如图1所示为本发明方法的方法流程示意图:本发明提供的这种基于姿态识别的人体模型建立方法,包括如下步骤:
[0099]
s1.获取人体模型基础数据;
[0100]
s2.对步骤s1获取的人体模型基础数据采用检测网络进行检测,并得到检测模型;具体为采用yolo v3检测网络检测人体;
[0101]
具体实施时,为采用如下步骤进行检测:
[0102]
通过darknet53网络对输入数据进行特征提取,得到特定大小的特征图输出;然后将得到的图像分成13*13的网格大小,同时规定若真实框中某个物体的中心坐标落在某个网格中,那么就由该网格来预测该物体;同时,每个物体由三个边界框进行预测,使用逻辑回归网络确定预测的回归框;
[0103]
在yolo v3检测网络(如图2所示)中,yolo v3_body共有252层,其中23个res_unit层对应23个add层,bn层共72层,leakyrelu层共72层;每一层bn层后面均连接一层leakyrelu层;此外,上采样和张量拼接操作各2个,5个零填充对应5个res_block;
[0104]
yolo v3使用一个53层的卷积网络作为特征提取网络;特征提取网络残差单元叠加而成,同时采用k

means聚类算法确定bounding box的初始尺寸;同时使用9个默认框,每个默认框与不同尺寸特征图对应关系为:13*13的feature map对应[(116*90),(156*198),(373*326)],26*26的feature map对应[(30*61),(62*45),(59*119)],52*52的feature map对应[(10*13),(16*30),(33*23)];特征图越大,感受野越小,对小目标敏感,特征图越小,感受野越大,对大目标敏感;
[0105]
yolo v3采用直接预测相对位置的方法,预测出b

box中心点相对于网格单元左上角的相对坐标,直接预测出(t
x
,t
y
,t
w
,t
h
,t
o
),然后通过以下坐标偏移公式计算得到b

box的位置大小和置信度:
[0106]
b
x
=σ(t
x
)+c
x
[0107]
b
y
=σ(t
y
)+c
y
[0108]
[0109][0110]
p
r
(object)*iou(b,object)=σ(t
o
)
[0111]
式中(t
x
,t
y
,t
w
,t
h
,t
o
)为模型的预测输出;c
x
和c
y
为网格的坐标;和p
h
为预测前bounding box的尺寸;为预测得到的bounding box的中心坐标和尺寸;训练坐标值时,采用平方和距离误差损失进行训练;
[0112]
yolo v3为每个真实对象分配一个边界框;若边界框与真实对象不吻合,则不会产生坐标或类别预测损失,只会产生物体预测损失;
[0113]
yolo v3采用若干个独立的logistic分类器解决多标签分类问题;
[0114]
yolo v3采用若干个尺度融合进行预测,同时采用上采样和融合算法,在若干个尺度的特征图上进行检测;越精细的网格可以检测出越精细的物体;
[0115]
s3.对步骤s2得到的检测模型,采用姿态检测算法进行二维姿态估计,从而得到估计模型;具体为采用stacked hourglass姿态检测算法进行二维姿态估计;
[0116]
具体实施时,采用如下步骤进行估计:
[0117]
采用4阶hourglass module模块;具体为采用如下步骤构建4阶hourglassmodule模块:
[0118]
a.构造一阶hourglass module模块(如图3所示):一阶hourglass module模块包括max pool模组、第一res模组、第二res模组、第三res模组、up sample模组和第四res模组;其中max pool模组、第一res模组、第二res模组、第三res模组和up sample模组串联,第四res模组的输入端连接模块输入端,第四res模组的输出端连接模块输出端;其中,max pool代表下采样;up sample代表上采样;
[0119]
b.将一阶hourglass module模块替换一阶hourglass module模块中的第二res模组,从而得到二阶hourglass module模块;
[0120]
c.将步骤b得到的二阶hourglass module模块替换一阶hourglass module模块中的第二res模组,从而得到三阶hourglass module模块;
[0121]
d.将步骤c得到的三阶hourglass module模块替换一阶hourglass module模块中的第二res模组,从而得到最终的四阶hourglass module模块;具体如图4所示;
[0122]
每次降采样之前,分出上半路保留原尺度信息;
[0123]
每次升采样之后,和上一尺度的数据相加;
[0124]
两次降采样之间,使用三个residual模块提取特征;
[0125]
两次相加之间,使用一个residual模块提取特征;
[0126]
将feature map层层叠加,最后一个大的feature map保留所有层的信息;
[0127]
最后该网络得到每个关节点的heatmap,并组合hourglass;
[0128]
将第一个沙漏网络给出的热力图作为下一个沙漏网络的输入,从而提升了关节点的预测精度;
[0129]
如图5所示为本发明的热力图的结构示意图;
[0130]
由于关节点之间是可以互相参考预测的,知道双肩的为之后,可以更好的预测肘部节点。既然热力图代表了输入对象的所有关节点,那么热力图就包含了所有关节点的相互关系,所以将第一个沙漏网络给出的热力图作为下一个沙漏网络的输入,从而提升了关
节点的预测精度;
[0131]
图5中,n1代表第一个沙漏网络,提取出的混合特征经过1个1*1全卷积网络后,分成上下两个分支,上部分支继续经过1*1卷积后,进入下一个沙漏网络,下部分先经过1*1卷积后,生成heatmap,heatmap继续经过1*1卷积,将depth调整到与上部分支一致,最后与上部分支合并,一起作为下一个沙漏网络的输入;
[0132]
堆叠沙漏网络的每一个子沙漏网络都有heatmap作为预测,所以将每个沙漏输出的heatmap参与到loss中,预测精度远远好于只考虑一个沙漏预测的loss,这种考虑网络中间部分的监督训练方式,就叫做中间监督,最后网络生成关键点的热图;
[0133]
s4.对步骤s3得到的估计模型进行对称空间变换,从而提取单人区域;具体为采用如下步骤进行对称空间变换:
[0134]
空间转换网络stn(如图6所示)能够将输入的图片进行空间变换;
[0135]
空间逆变换网络sdtn将估计的人体姿势重新映射回原始图像坐标;
[0136]
sdtn模块接收一个由定位网络生成的参数θ,然后反向转换计算参数γ;
[0137]
使用stn网络提取一个人体区域框:
[0138][0139]
其中θ1、θ2和θ3为二维空间向量;和为转换前的坐标;和为转换后的坐标;
[0140]
sdtn网络为反向转换和生成网格计算参数γ:
[0141][0142]
并行单人人体姿态网络sppe:为了训练stn模块的参数,通过在数据集中指定位于中心的姿势标签,同时在训练阶段冻结并行sppe模块的所有权重,其目的是将姿态定位后产生的误差反向传播到stn模块;
[0143]
parallel sppe只有在训练阶段才会产生作用;
[0144]
s5.对步骤s4得到的单人区域进行检测冗余的处理,从而得到人体姿态估计以及人体关节点的像素坐标;具体为采用基于姿态的非最大值抑制p

posenms算法进行处理;
[0145]
具体实施时,采用如下步骤进行处理:
[0146]
根据消除准则将靠近该参考的区域框进行删除,重复若干次,直到冗余的识框被消除并且每个识别框均唯一;
[0147]
具有m个关节的姿势pi表示为其中为第j个关节的位置,为第j个关节的置信分数;
[0148]
消除法则:定义姿态相似度,d()作为姿态之间的距离度量,定义η作为消除标准的阈值,λ表示函数d()的参数集合:
[0149][0150]
该等式的意义为:将姿态p
i
与参考姿态p
j
做距离度量计算,d(p
i
,p
j
|λ,λ)代表姿态p
i
和姿态p
j
的距离度量值,f(p
i
,p
j
|λ,η);若d(p
i
,p
j
|λ,λ)≤η,则f(p
i
,p
j
|λ,η)取值为1,同时表示参考姿势p
i
冗余,需要被消除;
[0151]
姿态距离软匹配函数:
[0152][0153]
式中k
sim
(p
i
,p
j
|σ1)为姿态p
i
和姿态p
j
的匹配函数;为姿态p
i
中每个关节的置信分数;σ1为归一化参数,对每个关节的置信分数归一化到一个统一的变化范围;为姿态p
j
中某一个关节的位置;为姿态p
i
中某个关节的位置,为预测姿态p
i
中某个关节的检测框位置;如果姿态p
j
中某个关节的位置在预测姿态p
i
的检测框内,则对姿态p
i
和p
j
进行匹配函数的计算;姿态距离软匹配函数通过tanh函数进行过滤掉低置信度分数的姿态,如果两个对应的关节都具有高置信度分数,则ksin输出接近1,此时统计这两个相近姿势的对应关节的匹配数量;同时为了计算不同姿态的距离度量,需要计算不同姿态的对应空间距离;
[0154]
空间距离可以定义为:
[0155][0156]
式中h
sim
(p
i
,p
j
|σ2)为姿态p
i
和姿态p
j
的空间距离;σ2为归一化参数;
[0157]
最终距离定义为:
[0158]
d(p
i
,p
j
|λ)=k
sim
(p
i
,p
j
|σ1)+λh
sim
(p
i
,p
j
|σ2)
[0159]
式中λ为加权系数。
[0160]
步骤s6所述的关节角度的运动信息计算,具体为采用如下算式计算关节角度的运动信息:
[0161][0162][0163][0164]
[0165]
式中a为下端点关节点到中间关节点的像素距离;b为上端点关节点到下端点关节点的像素距离;c为上端点关节点到中间关节点的像素距离;b为三个关节点所组成的夹角;取三个相邻关节点组成三角形,(x2,y2)为中间关节点的二维像素坐标,(x1,y1)为上端点的关节点的二维像素坐标,(x3,y3)为下端点的关节点的二维像素坐标;
[0166]
步骤s7所述的建立人体模型,具体为采用如下步骤建立人体模型:
[0167]
(1)运动模拟系统的建立;
[0168]
(2)获取运动学数据;
[0169]
(3)优化反求肌肉激活,计算能量消耗:
[0170]
1)对输入的关节角度进行处理,得到目标的关节角加速度:
[0171][0172]
式中q
..
(t+t)为t+t时刻的目标角加速度;为表示t+t时刻采集到的运动学数据处理得到的角加速度;k
v
和k
p
为控制权重;为t时刻的实际角速度;q
.
(t)为t时刻的目标角速度;q
exp
(t)为t时刻的实际角度;q(t)为t时刻的目标角度;
[0173]
2)进行激活优化计算:
[0174][0175]
式中x
i
为第i条肌肉激活;n
x
为肌肉的总数目;n
q
为目标关节数目;ω
j
为各个关节所占优化目标的权重;为目标角加速度;为实际角加速度;
[0176]
3)能量消耗估算的计算公式:
[0177][0178][0179]
式中m
i
为每条肌肉的质量;ρ为肌肉密度;f
max,i
为第i块肌肉的肌肉最大等长收缩力;l
opt,i
为第i块肌肉的最佳肌纤维长度;σ为肌肉张力;c
met
为总体能量消耗;为第i条肌肉某时刻的等效激活;m为体重;每时刻基础能量消耗;t为计算消耗的时间区间。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1