计算机系统应用  2019, Vol. 28 Issue (8): 235-240   PDF    
基于BP回归神经网络的人体角度拟合研究
王景中, 胡凯     
北方工业大学 计算机学院, 北京 100144
摘要:基于深度学习和深度摄像机的人体动作识别方法, 受其应用场景所限, 均不能对视频中快变场景和静态图像中的人体动作进行识别. 本文中定义了人体肢体角度空间, 使用基于深度学习的人体骨骼识别框架的骨骼数据, 构建8个4层BP回归神经网络. 对人体的骨骼数据提取和预处理后, 再对训练数据进行增维处理, 通过回归神经网络进行拟合, 实验和测试结果表明, 该方法可以有效的对人体角度进行回归, 为快变场景和静态图像中的人的动作识别提供可靠依据.
关键词: 静态图像    神经网络    回归    人体角度    动作识别    
Human Angle Fitting Based on BP Neural Network
WANG Jing-Zhong, HU Kai     
College of Computer, North China University of Technology, Beijing 100144, China
Abstract: The human motion recognition method based on depth learning and depth camera is limited by its application scene, and it cannot recognize the human motion in fast changing scene and static image. This article defines human related angle space, and builds eight four layer BP regression neural network using the human body skeleton recognition based on deep learning framework of data. After data extraction and pretreatment of the bone data of human body, training data is processed to increase the dimension, and then it is fitted through the regression neural network. The experimental results show that the proposed method can effectively regress the human body angle, provide reliable basis for human motion recognition in fast changing scene and static image.
Key words: static image     neural network     regression     human body angle     action recognition    

1 引言

人体动作识别存在着广泛应用, 比如视频监控、客户的属性分析、行为分析. 比较流行的人体动作识别方法, 主要分为两种, 一种基于卷积神经网络. 2013年余凯提出3D卷积神经网[1,2], 其通过将连续的7帧60×40图像数据送入卷积神经网络中进行训练, 通过将卷积核提取的特征进行堆叠形成3D卷积核, 进而实现人体行为识别. 2014年由Karen Simonyan等人提出双流卷积神经网络[3,4], 结合VGGnet、GOOGLEnet等深度学习模型对视频中人的连续动作提取光流特征, 再将光流特征与原始图像送入卷积神经网络中进行训练, 从而实现动作识别. 2018年由 Zisserman A等人提出的I3D[5]模型是将上述两种放法进行结合. 另外一种方法为基于深度摄像机[6,7], 它除了能提供人体的骨骼特征之外, 还能够提供人体的相对深度信息, 即输出的数据为(x, y, z), 分别代表骨骼点在图像中的坐标及深度信息, 然后结合支持向量机(SVM)[6]、隐马尔可夫模型(HMM)[7,8]等机器学习方法既可以对人体的动作进行有效识别.

虽然上述方法均能实现对人体动作的识别, 但是其应用也有一定的局限性. 基于卷积神经网络的识别方法, 只能对动作进行分类, 不能给出人体姿态的其它相关信息; 对于训练数据和被识别数据必须是由连续动作组成的图像, 当动作不连续时, 则不能进行有效分析. 基于深度摄像机的识别方法, 虽然能较好的完成人体动作识别, 但对视频中快变场景或者静态图像无法完成人体动作识别.

本文中分析对象为普通视频中人的动作, 视频中图像的特点为场景变化快、图像中的人物动作多变且不连续. 通过以上分析可以看出, 上述方法均不能应用于这种应用场景.

近年来, 随着人体姿态估计方法不断发展, 其已经具有很高的识别精度. 2016年由卡内基梅隆大学Cao Z、Simon T等人提出的openpose框架[9,10], 其使用卷积神经网络和PAF算法实现人体姿态估计. 另外, 2017年由上海交通大学卢策吾等人提出RMPE框架[11], 其使用对称空间变换网络(SSTN)、参数非最大化抑制(PNMS)等方法实现对多人人体骨骼框架的提取. 本文中定义被拟合角度的坐标空间后, 利用openpose框架提取出人体骨骼特征数据, 经过数据重构、预处理及增加肢体相关的先验信息, 生成10个与人体角度相关的数据集. 使用基于“径向基核(RBF)”的SVR[12]回归模型作为基线, 与BP神经网络的回归[13,14]结果做比较. 另外通过主成分分析(PCA)[15,16]方法计算标准数据集和增维后数据集特征值, 通过特征值的方差证明增维数据的有效性. 通过分析实验结果, 使用加入先验信息的数据集, 4层BP神经网络训练结果要优于基于RBF核SVR回归模型的训练结果, 数据集增维后, 数据间的关联有效减小.

2 静态图像人体角度拟合 2.1 骨骼数据提取

使用openpose框架对人体骨骼关节点数据进行提取, 骨骼示意图如图1所示. 本文中只对人体相对于摄像机的正面、左侧面和右侧面时的人体手臂关节角度进行拟合, 提取的骨骼数据包括: 颈部、左肩膀、左手肘、左手腕、右肩膀、右手肘、右手腕、髋关节, 对应的编号分别为: 1、2、3、4、5、6、7、8.

图 1 人体骨骼特征编号示意图

2.2 数据定义

本文中将人体骨骼以颈部为中心分为左右2个部分, 通过分析人体动作特征, 每半个部分只要确定4个自由度即可确定相应的动作姿态, 所以共需要对8个角度进行拟合, 角度左右对称. 相关数据定义以及需要拟合的角度定义见表1.

表 1 相关数据对照

2.3 构建数据集

由于没有人体角度相关的标准数据集, 本文中所使用的数据集, 均为自行设计. 生成的数据集见表2. 相对于8个被拟合的人体角度, 共生成6组数据集, 对应表1中定义的角度. 6组数据中细分为5个标签, 分别对应一个被拟合角度空间的不同状态, 分别为∠10、∠45、∠90、∠135、∠180, 其中角度Ar2和Ar3共用一组数据、其中角度Al2和Al3共用一组数据, 每组数据1000张照片, 其中训练集比例为80%, 测试集比例为20%. 训练数据见图2.

表 2 生成的数据集

图 2 训练数据

提取出相应的骨骼数据后, 为了保证训练数据的相对位置不变性, 首先将数据集变换到同一坐标原点, 本文中以颈部作为人体坐标中心, 计算方法为:

为了保证数据的尺度不变性, 需要对数据进行归一化处理, 计算方法为:

$\left\{ \begin{array}{l} {T_{i,j}}(x,y) = \dfrac{{{T_{i,j}}(x,y)}}{{{D_{1,8}}}}\\ i = \{ 1,2,\cdots,6\} ,j = \{ {\text{数据集中骨骼数据}}\} \end{array}\right. $ (2)
$\left\{ \begin{array}{l} {T_{i,j}}(x,y) = {T_{i,j}}(x,y) - {P_1}(x,y)\\ i = \{ 1,2,\cdots,6\} ,j = \{ {\text{数据集中骨骼数据}}\} \end{array}\right. $ (1)

通过观察人体骨骼特征, 若不考虑观测角度, 人体大臂和小臂的长度约为躯干的0.5倍左右, 为了提高角度拟合的精度, 对上述部分数据集加入手臂长度的先验信息, 提高数据集维度, 文中设定手臂与躯干的比例系数为0.6. 计算公式为(3). 重新构建数据集, 将对应同一角度的两套数据集在不同的模型中的拟合结果进行比较.

$ {M_{i,j}} = \frac{{{D_{i,j}}}}{{0.6}},\;\;\;i = \{ 2,3,5,6\} ,j = \{ 3,4,6,7\} $ (3)
2.4 主成分分析方法

通过主成分分析(PCA)方法, 对增维的数据集和正常数据集进行分析, PCA计算过程如下:

计算数据集的协方差矩阵:

$ {G_x} = \frac{1}{M}\sum\limits_{i = 0}^{m = 800} {({T_{x,i}} - {\rm{\mu}} )*{{({T_{x,i}} - {\rm{\mu}} )}^T}} \\ x = \{ 1,2,4,5,7,8,9,10\} $ (4)
$\left\{ \begin{array}{l} {{\rm{\mu}} _x} = \dfrac{1}{M}\displaystyle\sum\limits_{i = 0}^{m = 800} {({T_{x,i}})\;\;\;\;\;} \\ x = \{ 1,2,4,5,7,8,9,10\} \\ \end{array} \right. $ (5)

计算协方差矩阵的特征值和特征向量:

$ \left\{ \begin{aligned} &{{G_x}P = {\lambda _x}P,\;\;x = \{ 1,2,4,5,7,8,9,10\} }\\ &{{{\lambda _x}= diag({\lambda _1},{\lambda _2},\cdots,{\lambda _i}),\;\;\;i \in {R^{{T_x}}}}} \end{aligned}\right. $ (6)

在得到特征值矩阵后, 计算特征值矩阵中特征值的期望和方差并比较不同数据集的计算结果.

2.5 BP神经网络模型

BP神经网络由输入层、隐层和输出层组成. 其通过有监督学习方式进行训练, 即在训练时需要一定数量的有标签数据. 通过训练数据的正向传播得到训练误差, 通过误差的反向传播修正神经元的权重. 本文中构建的所有神经网络均为4层, 其中隐层h1和h2的神经元数量为50和32, 激活函数选择为Sigmod函数, 见式(7)~式(8), 输出层神经元个数为1, 激活函数为线性函数, 见式(9), 学习率α设置为0.1, 训练次数为650 000次.

当BP神经网络处于正向传播时, 输入数据由输入层通过隐层最终到达输出层, 其计算公式为:

$\left\{ \begin{array}{l} ne{t_{hx}} = {({x_1},{x_2},\cdots,{x_n})^T}*({w_1},{w_2},\cdots,{w_n})\\ x = \{ {\text{隐层单元数量}}\} \end{array}\right. $ (7)
${f_{hx}}(ne{t_{hx}}) = \frac{1}{{1+{e^{ - ne{t_{hx}}}}}}$ (8)
${f_{\rm{o}}}(ne{t_{h{\rm{2}}}}) = ne{t_{h{\rm{2}}}}$ (9)

当BP神经网络进行反向传播时, 其使用随机梯度下降进行优化, 本文中BP回归神经网络的损失函数定义为:

$Loss = \sum\limits_{i = 0}^{m = 40} {{E_i}} $ (10)
${E_i} = \frac{1}{2}*{({y_{ti}} - {y_{li}})^2}$ (11)

通过上式不难看出, 优化的过程即是对二次函数寻找极小值点的过程. 如图3.

图 3 非凸二次函数示意图

若二次函数为非凸函数, 在训练过程中, 若参数选择不合理, BP神经网络会将局部极小值点[13,14]作为全局极小值点作为优化的目标, 为了避免这种情况, 本文中使用批量训练(minibatch)的方法进行训练, batchsize设置为40.

BP神经网络在反向传播时, 通过求各个层中的偏导数获得权重的优化方向后, 通过公式(12)~(13)对权重进行修改, 其中 $w$ 为神经元权重、 $b$ 为神经元偏置.

$w_{i,j}^m(k+1) = w_{i,j}^m(k) - a*\Delta w_{i,j}^m$ (12)
$b_{i,j}^m(k+1) = b_{i,j}^m(k) - a*\Delta b_{i,j}^m$ (13)

由于 $\Delta w_{i,j}^m$ , $\Delta b_{i,j}^m$ 均为复合函数, 其梯度值计算为式(14)~式(15):

$\Delta w_{i,j}^m{\rm{ = }}\frac{{df(ne{t_m})}}{{dne{t_m}}}*\frac{{dne{t_m}}}{{w_{i,j}^m}}$ (14)
$\Delta b_{i,j}^m{\rm{ = }}\frac{{df(ne{t_m})}}{{dne{t_m}}}*\frac{{dne{t_m}}}{{b_{i,j}^m}}$ (15)
2.6 性能指标评估

对于拟合结果指标评估的方法包括: “平均绝对误差(MAE)”、“平方误差(MSE)”以及“R平方值(R-Squared)”, 本文中采用MAE作为归回结果性能评估指标之一, 公式为式(16). 另外, 允许拟合的结果产生一定的误差, MAE指标评估了所有训练数据的误差, 并不能准确的反应回归的精度, 所以本文中使用分类指标评估思想, 对AUC[16]指标进了修改, 其中T为正确样本数量、U为样本总数量, 通过设定不同的err值确认回归结果的精度范围, 公式为式(17).

$MAE = \frac{1}{n}\sum\limits_{i = 1}^n {\left| {{y_i} - {f_o}(ne{t_{h3}})} \right|} $ (16)
$A = \frac{T}{U},\;\;T = \left\{ \begin{aligned} &{T+1,\;\;\left| {{y_i} - {f_o}(ne{t_{h3}})} \right| < err,\;err = \{ 5,15,20\} }\\ &{{T,\;\;\left| {{y_i} - {f_o}(ne{t_{h3}})} \right| < err}} \end{aligned}\right.$ (17)
3 实验测试分析

为了对比BP神经网络拟合结果的性能, 使用了SVR回归模型的训练结果作为基线, 该模型可以设置核函数, 分别为“线性核(linear-kernel)”、“径向基核(RBF-kernel)”、“多项式核(ploy-kernel)”. 其中“线性核”函数不具备非线性空间拟合的能力, “多项式核”在多维数据下训练时间比较长, 所以在这里选用“径向基核”作为SVR的核函数, 开发工具使用sklearn. 详细参数设置见表3.

表 3 SVR回归模型参数设置

针对上述内容, 共设计4组实验, 为了避免重复说明, 这里只对人体骨骼右臂的Ar1角度的拟合结果进行详细说明, 对于其它数据集直接给出实验结果, 实验设计见表4.

实验过程中, 每1000次迭代记录一次训练集损失数据和测试集损失数据, 分析模型的损失函数曲线, 实验C4效果最好, 训练集数据的损失和测试集数据的损失均为最小, 分别为0.1314(红色实线)、0.1933(蓝色虚线); 实验C1效果最差, 训练集数据的损失和测试集数据的损失均为最大, 分别为0.5275(红色实线)、1.030(蓝色虚线). 详细实验训练曲线见图4图7.

表 4 实验设计

图 4 实验C1损失函数曲线

图 5 实验C2损失函数曲线

图 6 实验C3损失函数曲线

图 7 实验C4损失函数曲线

使用BP回归神经网络, 通过数据集 ${T_3}$ ${T_{\rm{6}}}$ ${T_{\rm{8}}}$ ${T_{{\rm{10}}}}$ , 对人体其它7个角度进行回归训练, 各项指标见表5. 实验结果见表6.

表 5 Ar1角度拟合实验结果

对于增维数据的有效性, 通过PCA方法对数据集进行分析, 计算各数据的特征值的方差, 计算结果见表7. 通过分析结果看出增维后的数据集方差更小, 说明数据集增维后的数据集相比较标准数据集可以有效减少数据的关联性.

4 实验结论

本文在定义了人体相关角度空间的情况下, 提出利用openpose提取人体骨骼数据, 经过数据重构、预处理以及升维后, 生成训练数据集, 通过BP回归神经网络对人体相关的8个角度进行拟合. 通过对比试验结果及相关的指标表明, 该方法可以有效的拟合出对应的角度, 为动作识别提供依据. 虽然卷积神经网络经过大样本训练后会有更强的表达能力, 但其只是对数据整体进行评估, 更适用于整体分类, 不能给出分类结果的相关细节的信息. 若要使用单一的卷积神经网络对人体的动作进行分析, 需要对被训练数据的各个部分进行非常精确的标注, 考虑到图像中的观测视角和人的身体动作均为变量, 此项工作量巨大. 使用文献[15]中提出的方法将卷积神经网络和光流特征结合完成动作识别, 但对图像连续性有一定的要求, 并且不能给出人体肢体动作的局部信息. 基于以上原因使用BP回归神经网络并结合提取的骨骼数据的方法, 可以更好的完成人体动作角度识别. 下一步考虑将与深度置信网络(DBN)相结合, 进一步提高其拟合的精度.

表 6 其它角度拟合实验结果

表 7 数据集的方差对比

参考文献
[1]
Ji SW, Xu W, Yang M, et al. 3D convolutional neural networks for human action recognition. IEEE Transactions on Pattern Analysis and Machine Intelligence, 2013, 35(1): 221-231. DOI:10.1109/TPAMI.2012.59
[2]
Karpathy A, Toderici G, Shetty S, et al. Large-scale video classification with convolutional neural networks. Proceedings of 2014 IEEE Conference on Computer Vision and Pattern Recognition. Columbus, OH, USA. 2014. 1725–1732.
[3]
Simonyan K, Zisserman A. Very deep convolutional networks for large-scale image recognition. arXiv: 1409. 1556, 2014.
[4]
Szegedy C, Liu W, Jia YQ, et al. Going deeper with convolutions. Proceedings of 2015 IEEE Conference on Computer Vision and Pattern Recognition. Boston, MA, USA. 2014. 1–9.
[5]
Carreira J, Zisserman A. Quo vadis, action recognition? A new model and the kinetics dataset. Proceedings of 2017 IEEE Conference on Computer Vision and Pattern Recognition. Honolulu, HI, USA. 2017. 4724–4733.
[6]
马风力. 基于Kinect的自然人机交互系统的设计与实现[硕士学位论文]. 杭州: 浙江大学, 2016.
[7]
陈一新. 基于Kinect的手势识别技术在人机交互中的应用研究[硕士学位论文]. 成都: 西南交通大学, 2015.
[8]
Elmezain M, Al-Hamadi A, Krell G, et al. Gesture recognition for alphabets from hand motion trajectory using Hidden Markov models. Proceedings of the IEEE International Symposium on Signal Processing and Information Technology. Giza, Egypt. 2007. 1192–1197.
[9]
Cao Z, Simon T, Wei SE, et al. Realtime multi-person 2D pose estimation using part affinity fields. arXiv: 1611. 08050, 2016.
[10]
Wei SE, Ramakrishna V, Kanade T, et al. Convolutional pose machines. eprint arXiv: 1602. 00134, 2016. 4724–4732.
[11]
Fang HS, Xie SQ, Tai YW, et al. RMPE: Regional multi-person pose estimation. arXiv: 1612. 00137, 2016. 2353–2362.
[12]
Bi JB, Bennett KP. A geometric approach to support vector regression. Neurocomputing, 2003, 55(1–2): 79-108. DOI:10.1016/S0925-2312(03)00380-1
[13]
高隽. 人工神经网络原理及仿真实例. 北京: 机械工业出版社, 2003.
[14]
路玉龙, 韩靖, 余思婧, 等. BP神经网络组合预测在城市生活垃圾产量预测中应用. 环境科学与技术, 2010, 33(5): 186-190. DOI:10.3969/j.issn.1003-6504.2010.05.044
[15]
王景中, 杨源, 何云华. 基于多分类和ResNet的不良图片识别框架. 计算机系统应用, 2018, 27(9): 100-106.
[16]
李强, 裘正定, 孙冬梅, 等. 基于改进二维主成分分析的在线掌纹识别. 电子学报, 2005, 33(10): 1886-1889. DOI:10.3321/j.issn:0372-2112.2005.10.037