阅读文献:王芫. 基于深度神经网络的人体运动姿态估计与识别[D].电子科技大学,2020.
来源:知网
研究内容:本文以估计与识别羽毛球运动员运动姿态为背景,设计了一套人体姿态评估系统,用于羽毛球运动员运动过程中人体姿态的估计和识别,并根据人体标准姿态库给出评估结果。
关键词:人体姿态估计与识别,羽毛球,深度神经网络,局部评估,相似度
运动过程中,标准的运动姿态不仅可以决定运动的效果,也可以最大限度保护运动员不受伤害。
早期的人体动作识别都需要借助外接设备的辅助,非常不方便,随着机器学习和深度学习的发展,使计算机可以仅通过摄像头等设备就能够感知人体动作。
在人体动作识别中,首先最关键的是人体姿态估计,基于人体姿态估计所得到的一系列特征与一些标准动作进行对比,就可以对人们运动中的运动姿态做出知道。
人体动作识别领域研究主要分为两个方向:
首先USB3.0摄像头作为输入;然后用新的神经网络模型进行运动员运动姿态的估计,输出是以一组图像像素坐标下骨骼点的二维坐标;最后采用新的运动员运动姿态评估算法,与标准人体姿态裤进行对比,得到评估结果。
在人体姿态估计中,肢体间的协作配合量化到数据层面就是人体在空间中各个关节点的坐标,将这些关节点坐标的集合称为人体姿态坐标集。
单个摄像头采集的图像是在图像像素坐标系,从图像像素坐标系转换到世界坐标系需要内参矩阵和外参矩阵,其中,外参矩阵的获得需要借助外部方法(标定、移动视角等)。
思路:
如果在二维空间下估计人体姿态坐标集,因为只有单目视觉系统,则该坐标集的坐标系即为相机坐标系。但是可能会存在图像畸变、复杂环境导致图像质量差、遮挡阴影等问题导致存在误差等情况。
思路
主要用途是估计某帧图像中人体姿态在图像像素坐标系下的一组关键点的二维坐标。本文重点在于骨骼点的二维坐标估计,目的是利用骨骼点坐标进行姿态评估。
自上而下估计人体姿态。
模型结构
自下而上方法。将人体姿态估计定义为人体关节点回归的问题,每个关节点都用一整幅图进行回归。
训练效果(准确率达90%以上)
从时间上看,CPN 模型的估计速度是最快的,其次是 DeepPose 模型,最后是 OpenPose 模型。
模型 | 效果 | 原因 |
---|---|---|
CPN | 正面图像估计效果极差,球网左侧正反手图像估计效果视情况定 | 1、人体检测框定位效果不好,导致提取不到完整人体或提取其他图像像素过多 ;2、对ROI区域进行关键点提取时,人体和周围环境无明显区别,导致热点图有多个峰值,错误点的峰值高于真实点,出现骨骼点的估计错误 |
DeepPose | 正面图像估计效果极差,球网左侧正反手图像估计效果一般 | 1、采集图像分辨率远大于模型要求输入图像分辨率,导致图像被压缩,当远距离拍摄时,人体在图像中占比下降,特征信息大幅减少 ;2、人体骨骼点被遮挡或与周围环境像素变化不明显,导致热点图存在多峰值,且未增加关节点约束,从而导致估计错误 |
OpenPose | 正面图像估计效果极差,球网左侧正反手图像估计效果优秀 | 1、提出亲和场pafs,近距离侧面估计效果优于其他模型;2、加入对两个骨骼点形成的肢体的特征学习,并将约束的特征用置信图表示,从而提高估计精度 |
经过比较,选取OpenPose作为评估系统的基础模型,用于估计单帧图像中运动员的人体姿态坐标。在大量数据测试中,发现OpenPose仍存在不少问题:
因此后期将对模型的估计速度进行优化。
采集羽毛球运动员图像资料(15 段视频,8256 帧)用作后续测试和模型训练。
通过理论分析和实验,最终确定摄像头摆放最佳位置为球网左侧。
同时羽毛球运动是肢体运动,因此对传统人体姿态模型的骨骼点数量修正,去掉头部的5个骨骼点。
采用四种摄像头对比,主要考虑参数有如下五个:
最终选择的是摄像头2.
原因
估计人体结构模型中的每个骨骼点时都针对于图像中的所有像素,因此图像的大小直接决定了模型的估计时间。人体姿态评估系统采用几何变换(后文称图像压缩)将图像的像素进行压缩,可以减轻模型估计时的计算压力。
图像压缩方法
最近邻法、双线性插值、双三次方插值、像素区域重采样等.
双线性插值方法
双线性插值的详细讲解
图像处理之双线性插值法
双线性插值算法及需要注意事项
三十分钟理解:线性插值,双线性插值Bilinear Interpolation算法
图像分辨率为1960×1080,对每帧图像进行图像压缩后,压缩系数为 4时的模型估计时间对比:
三种模型在使用图像压缩之后,模型的估计时间均减少。
使用双线性插值进行图像压缩,会导致源图像的图像特征减少。因此有必要验证使用图像压缩对模型估计的精度影响,通过实验探究图像压缩操作是否能用于缩短估计模型估计时间。
计算单帧的代表值的公式
(1点指脖子在图像像素坐标系下的二维坐标,人体姿态坐标集中,每个骨骼点到脖子点的欧式距离之和的平均值定义为该帧的代表值)
通过实验,观察到相同视频相同压缩系数下,压缩操作前后的代表值变化存在某种线性关系,因此设计一个线形神经网络 y=Wx+b 估计线形关系。期望通过该线性神经网络模型,估计出压缩操作前后由估计的骨骼点坐标计算出的代表值的变化规律。
(x是压缩后代表值,y为压缩前代表值,W 是估计压缩系数,b 是估计误差)
网络的一些细节:
训练结果
结论
间隔采样:主要指的是在时间维度上对摄像头采集到的连续图像进行间隔采样。
采样定理:在进行连续信号离散化的过程中,当采样频率大于信号中最高频率的 2 倍时,采样之后的离散信号可以完整保留原始信号中的信息。
本文采样原理:运动员的动作变换在10到20帧左右,而摄像头的采样帧率远高于此,因此,可以通过选用合适的帧率和采样间隔t,使采样频率大于人体运动频率的2倍以上,就可以完整保留信息。
在图像采集后,每隔t帧后保存一帧用于人体姿态评估。可以减轻计算压力。
注意:这篇文章中是通过人体姿态估计输出的二维骨骼点坐标集,来进行姿态的评估,最终目标是识别姿态是哪种运动姿态,因此可以采用间隔采样,不会影响最终的结果,但是如果需要对视频实时进行姿态识别(也就是每一帧都标记姿态),则不可取间隔采样的方法。
优化考虑因素
掩膜的理解:https://blog.csdn.net/bitcarmanlee/article/details/79132017
在前面都在讲如何进行人体姿态的估计,下面将介绍估计出可靠的人体姿态骨骼点后,如何根据骨骼点识别人体姿态。
本算法是识别单帧图像中的人体姿态,输入是一组估计的骨骼点二维坐标,输出是识别结果和评估值。由于是单帧图像,缺少时间信息,所以主要与预设的标准人体姿态进行对比。
作者根据运动中主导肢体的不同,将运动分为四类:
整体与局部评估
a. 坐标系变换
估计模型得到的人体姿态坐标集是在图像像素坐标系下的数据集,从图像像素坐标系变换到世界坐标系步骤:
b. 欧氏距离和余弦相似度
欧式距离
用向量空间中两个向量终点间的绝对距离衡量两个个体间差异大小。 用于比较同一个羽毛球运动员运动姿态的相似度或差异。
余弦相似度
用向量空间中两个向量夹角的余弦值作为衡量两个个体间差异大小。用于羽毛球运动员运动姿态与标准姿态的相似度和差异,同时修正了羽毛球运动员之间由于体型等原因产生的度量标准不统一的问题。
由于余弦相似度角度范围是[0,180],而常规二维坐标系角度应为[0,360],所以进行修正,采用相似度进行姿态评估(涉及到坐标系变换,将图像像素坐标系平移到以脖子点为原点的直角坐标系下)。流程如下
因为局部评估是按优先级依次与标准姿态的各骨骼点进行比较的,并不以脖子点为原点,因此不涉及是否需要处理异常帧
实验比较结果如下:
可以看到,方案六(黄色线)的效果最好,准确率远高于其他方法。因此最终确定方案六为最佳方案——根据羽毛球运动的肢体特征从局部出发评估羽毛球运动员的人体姿态,同时用相似度反应人体姿态的相似程度。
这里需要补充的是:
系统由三个模块组成:
输入是摄像头采集模块,输出是对于当前帧图像中人体姿态与标准姿态库的匹配结果(得到最接近的标准姿态)以及匹配损失(说明姿态与标准姿态的相似度)。
模型的结构参数参考原论文。网络训练步骤参照前面。
这里主要介绍一下训练的过程和结果。
训练的数据集
包括 COCO 数据集中含有人的图像和摄像头采集图像,资料来源于羽毛球运动视频;
优化模型结构参数
训练数据集的使用
先使用COCO数据集,保证优化模型对通用人体姿态的估计精确度,训练结束保存模型权重参数;
再读取第一次训练时的权重参数,在此基础上使用羽毛球运动员图像进行训练,保证优化模型对羽毛球运动员人体姿态的估计精度。
主要是三个步骤:(1)对输入的骨骼点坐标进行坐标变换;(2)与标准姿态库进行匹配;(3)匹配结果处理。
这里累计误差的理解:待测姿态模型在一个候选姿态集(姿态的标准库)中的姿态模型中各个骨骼点累计差值之和。
输入的骨骼点坐标的坐标系是以图像左上角为原点的图像像素坐标系,无法直接与标准姿态进行匹配,因此需要坐标变换。
步骤
(a)将坐标系从图像像素坐标系转换到以人体骨骼点中脖子点为原点的直角坐标系;(b)将坐标系从以脖子点为原点的直角坐标系转换到以脖子点为原点的极坐标系,并计算极坐标系下其余 12 个点与 x 轴正方向的夹角值,夹角范围 [0,360];
分成了 9 个小阶段,分别匹配 0、1、2、6、7、8、9、10、11九个区域(3、4、5是左上肢,忽略)。
每个小区域的都是取待评估姿态和上一阶段的候选标准位姿的对应角度,计算二者差的绝对值,后续称为累计误差。如果累计误差小于等于该阶段的允许误差,则人体这个标准位姿符合这一阶段的评估并将该标准位姿放入这一阶段的候选标准位姿集。
用连续单帧图像进行匹配后,其中 138 和 139 帧没有匹配到标准姿态,140 至145 帧都匹配到了对应的姿态。
这篇论文中,作者设计了一个人体运动姿态评估系统,主要包括人体姿态估计模块和人体姿态评估模块。
人体姿态估计模块首先用三种姿态识别模型进行对比,通过实验确定本文的基础模型是OpenPose,然后考虑到本文的输入对象是视频,所以实时性也很重要,基础模型估计时间不能满足要求,因此进行模型的优化改进,通过图像压缩、间隔采样和优化模型结构(减少stage阶段数,减少需要估计的骨骼点数量)三种方法进行优化。最后也介绍了训练过程和效果。
人体姿态评估模块主要是基于估计模块输出的骨骼点坐标集,来对图像中人体的动作进行识别,通过将待预测姿态与标准姿态库中的姿态对比匹配,输出识别结果和匹配损失。在这一部分,采用局部评估+相似度的方法来进行匹配,只比较右上肢、右下肢、左下肢三个部分的骨骼点,将每个骨骼点的相似度与标准姿态的进行对比,计算累计误差,累计误差越小的,说明匹配度越高,从而得到和待预测姿态最接近的标准姿态。