上面的代码是实现“基于图卷积神经网络的人体行为识别”。
这是本科毕业设计时做的内容。
下面是对模型复现的一些说明:
首先介绍分析搭建时空图卷积神经网络所需操作步骤,构建人体骨骼时空图,定义GCN,实现时空卷积建模。具体操作流程如图1表示。
图3-1 时空图卷积神经网络搭建流程
1 构建时空图
在进行时空图卷积神经网络搭建之前首先需要根据骨架关节点信息构建一个时空图,因为ST-GCN就是在图结构上进行人体行为识别的。一些基于人体骨架的人体行为识别方法会添加人体骨架的空间信息来提高行为识别的准确度,包括一些骨骼点之间的连接关系和运动时某些关键的身体部分。人体关节点构成的人体骨架结构能很立体直观地反映人体运动情况,可以建立一个时空图,在空间连接上表现出人体骨骼点之间的相对位置,人体的运动通过时间边表现出来。
时空图的构建规则如下:
(1)在每一帧内部遵循人体骨骼的连接关系将骨骼点连接起来,构成单帧内的人体骨骼图;
(2)在相邻帧之间将同一骨骼点连接起来,构成时间边,体现人体骨骼的运动情况;
(3)全部帧中的骨骼点组成点集,全部的边组成边集,最终构成了人体骨骼时空图。
图2 人体骨骼时空图
图1为时空图示意图,图中点表示骨骼数据中的关节点,蓝色边表示空间边,构成单帧内的人体骨骼图,红色边为时间边,连接相邻帧之间同一骨骼点。
2 定义采样函数
在图像上的卷积操作最后输出的结果也是一张图像,即特征图。设定卷积核的大小为K×K,卷积层的输入图像为
,通道数为c。每个通道在位置𝑥的输出公式如下。
(1)
采样函数列出了位置𝑥的领域。在对于图像的卷积中,
,权重函数定义了滑动窗口内各个位置的权重,和采样函数相乘计算采样区域的内积。如果想在图结构上进行卷积操作就需将公式(1)扩展到图上,重新定义基于图的卷积操作。
在对图像进行卷积时,采样函数
选取的是位置𝑥的领域像素。在对图进行卷积时,可类比定义,节点
的邻居节点
,
表示从
到
的最短路径,基于图的采样函数
可以表示成公式(2),取D=1,即
的1领域。
(2)
3 定义权重函数
在对于图像的卷积中,卷积核中心点的领域是规格的,可以通过索引(C; K; K) 实现权重函数。对于图的卷积,权重函数需要重新定义。可将关节点
的邻居集
划分为K个子集,每个子集定义一个标签,就不需要将每一个邻居都单独定义一个标签了。存在映射
,将领域中的邻居关节点映射到对应的标签。权重函数
可以表示成公式(3)。
(3)
4 GCN定义
用重新定义的采样函数公式(2)和权重函数公式(3)来重新定义卷积公式(1)得到如下的图卷积公式(4)。
(4)
即
(5)
如果将图结构当作是图像,则公式(5)类似于在图像上的卷积公式。假如存在一个5×5的卷积核,图像上一个中心点的领域的像素个数为25个,将这25个像素分为25个子集,每个子集设置一个标签,最后就可以使用公式(5)计算卷积输出。
5 时空卷积建模
前文定义的图卷积操作已经考虑空间因素,接下来需要考虑如何引入时间边。图的时间边由相同骨骼点在不同帧上按时间连接而成,因此可以将图卷积扩展定义到时空域上。通过扩展邻域的概念使其包含时间边,可以表示成公式(6)。
(6)
Γ称为时间域核大小,用于控制时间领域的大小。需要重新定义采样函数来实现在时间域的卷积操作。对于权重函数需要改变
的时空邻域标签映射,可以表示成公式(7)。
(7)
是在一帧上关节点
的映射,重新定义了采样函数以及权重函数实现重新定义适合于时空图的卷积操作。
6划分策略
通过设计节点的划分策略来实现邻域节点的标签映射。
(1).唯一划分:将节点和邻域划分在一起。
(2).根据距离的划分:将1邻域划分为两个子集,一个是节点本身,一个是节点的邻域。
(3).空间构型划分:将根节点和其邻域划分成3个子集。子集分别为:根节点;向心节点,即节点到重心的距离小于根节点到重心的距离;离心节点,即节点到重心的距离大于根节点到重心的距离。重心为一帧内所有关节点的平均位置。划分策略可以表示为公式(8),
是重心到所有关节点𝑖的平均距离。
(8)
图3 划分策略示意图
图3为划分策略的示意图,其中的四张图从左到右如下:
1.输入的骨骼图,其中红色正方形表示的节点的1邻域为虚线框中的节点。
2.唯一划分,节点和邻域划分在一起,用绿色三角形表示。
3.基于距离的划分,节点本身距离为0,用红色正方形表示,节点的邻域距离为1,用绿色三角形表示。
4.空间构型划分,人体骨骼重心用×表示,根节点用红色正方形表示,向心节点用绿色三角形表示,离心节点用橙色三角形表示。
7 时空图卷积网络结构
将人体骨骼关节点坐标信息输入到空间域时间域图卷积中,得到行为分类。对输入的骨骼信息进行 Batch Normalization 来标准化数据,使得输入数据的规模在不同关节点上保持一致。
本文的模型有 9 个时空图卷积单元层,每层都有 1 个 GCN 单元和 3 个 TCN(时间卷积网络)单元。网络结构说明如表 1。
表1 网络结构
层数 | 类型 | 输出通道 | ||
0 | GCN * 1 | TCN * 3 | 64 | |
1 | GCN * 1 | TCN * 3 | 64 | |
2 | GCN * 1 | TCN * 3 | 64 | |
3 | GCN * 1 | TCN * 3 | 64 | |
4 | GCN * 1 | TCN * 3 | Residual * 2 | 128 |
5 | GCN * 1 | TCN * 3 | 128 | |
6 | GCN * 1 | TCN * 3 | 128 | |
7 | GCN * 1 | TCN * 3 | Residual * 2 | 256 |
8 | GCN * 1 | TCN * 3 | 256 | |
9 | GCN * 1 | TCN * 3 | 256 |
前四层(0-3)输出 64 通道,4-6 层输出 128 通道,其中 4 层的卷积步幅为 2,7-9 层输出 256 通道,其中第 7 层的卷积步幅为 2,通过使用 1×1 卷积改变输出通道数。残差机制应用在第 4 和第 7 个单元层上。优化器选取随机梯度下降算法(Stochastic gradient descent, SGD)并且每一层的学习率为 0.01,每一层 Dropout 参数选择 0.5 来避免过拟合。对得到的张量先进行全局池化然后输入到 Softmax 中,输出动作类别,整个视频的动作类别需要“投票”决定,以取平均得分的方式决定最终的类别。
表 2 模型参数设置
模型参数 | 描述 |
训练集批大小 | 32 |
测试集批大小 | 32 |
学习率 | 起始0.1 |
训练次数 | 80epoch |
模型的默认参数设置如表 2 所示,按照以上参数进行训练得到本文的模型参数。
8 数据集分析
NTU-RGB+D数据集总共有60种人体行为动作的分类数据,一共有56880个样本数据。这些样本数据中有40类动作为日常行为动作,9类为与健康有关的动作,11类为双人互动动作。此数据集使用三个不同角度的摄像机拍摄,数据包括深度信息、3D骨骼信息、RGB帧以及红外序列。主要使用的是其中的3D骨骼信息。骨骼节点信息示意图如下所示,一帧内共有25个骨骼节点。
图 4 人体骨骼节点信息示意图
NTU-RGB+D数据集中骨骼节点信息格式如下图所示。其中第1行为视频帧数,第2行为视频中的人数,第3行共有10个数据分别代表'bodyID','clipedEdges', 'handLeftConfidence','handLeftState','handRightConfidence','handRightState','isResticted', 'leanX', 'leanY', 'trackingState',第4行为骨骼关节点个数,第5-29行为25个关节点的信息,每个关节点有12个数据,分别代表'x', 'y', 'z', 'depthX', 'depthY', 'colorX','colorY','orientationW','orientationX','orientationY','orientationZ','trackingState'。
图 5 人体骨骼节点信息文件形式
NTU数据集有两种不同的划分规则,Cross-Subject和Cross-View。Cross-Subject按照人物ID来划分训练集和测试集,划分出的训练集包括40320个样本,测试集包括16560个样本。Cross-View按相机机位来划分训练集和测试集。相机2、3获取的样本作为训练集,样本数为37920,相机1获取的样本作为测试集,样本数为18960。
9 人体行为识别实验
所搭建的时空图卷积神经网络主要在NTU-RGB+D数据集上进行人体行为识别的实验,根据NTU数据集两种不同的划分规则Cross-Subject和Cross-View,分别进行实验,观察识别准确率。此外还在Kinetics数据集上做了一次对比实验,观察不同数据集对于识别率的影响。
10 实验结果与分析
在NTU-RGB+D数据集的两种不同的划分规则 Cross-Subject 和 Cross-View 上做人体行为识别实验得到的识别准确率结果如表3所示。在Kinetics数据集上做了一次对比实验验证其他数据集对于实验准确度的影响
表3识别准确度
Mean-loss | |||
0.6566 | |||
0.3523 | |||
3.2331 |
搭建的卷积神经网络在NTU数据集上识别准确率较高,但在kinetics数据集上识别率较差。Top1表示识别结果中可能性排在第一的类别是正确结果的准确率,Top5表示识别结果中可能性排在前五的类别中有正确结果的准确率。
在NTU数据集两种不同的划分规则Cross-Subject和Cross-View上测试结果的混淆矩阵如下图6,表7,对角线表示识别结果为正确结果的数量。
图6 混淆矩阵-xsub
图7混淆矩阵-xview
时空图卷积神经网络模型在NTU-RGB+D数据集上实验得到的识别准确度和混淆矩阵显示搭建的网络模型识别人体行为的效果较好,识别准确率较高,方法可行。
上面的代码是实现“基于图卷积神经网络的人体行为识别”。
这是本科毕业设计时做的内容。
下面是对模型复现的一些说明:
首先介绍分析搭建时空图卷积神经网络所需操作步骤,构建人体骨骼时空图,定义GCN,实现时空卷积建模。具体操作流程如图1表示。
图3-1 时空图卷积神经网络搭建流程
1 构建时空图
在进行时空图卷积神经网络搭建之前首先需要根据骨架关节点信息构建一个时空图,因为ST-GCN就是在图结构上进行人体行为识别的。一些基于人体骨架的人体行为识别方法会添加人体骨架的空间信息来提高行为识别的准确度,包括一些骨骼点之间的连接关系和运动时某些关键的身体部分。人体关节点构成的人体骨架结构能很立体直观地反映人体运动情况,可以建立一个时空图,在空间连接上表现出人体骨骼点之间的相对位置,人体的运动通过时间边表现出来。
时空图的构建规则如下:
(1)在每一帧内部遵循人体骨骼的连接关系将骨骼点连接起来,构成单帧内的人体骨骼图;
(2)在相邻帧之间将同一骨骼点连接起来,构成时间边,体现人体骨骼的运动情况;
(3)全部帧中的骨骼点组成点集,全部的边组成边集,最终构成了人体骨骼时空图。
图2 人体骨骼时空图
图1为时空图示意图,图中点表示骨骼数据中的关节点,蓝色边表示空间边,构成单帧内的人体骨骼图,红色边为时间边,连接相邻帧之间同一骨骼点。
2 定义采样函数
在图像上的卷积操作最后输出的结果也是一张图像,即特征图。设定卷积核的大小为K×K,卷积层的输入图像为
,通道数为c。每个通道在位置𝑥的输出公式如下。
(1)
采样函数列出了位置𝑥的领域。在对于图像的卷积中,
,权重函数定义了滑动窗口内各个位置的权重,和采样函数相乘计算采样区域的内积。如果想在图结构上进行卷积操作就需将公式(1)扩展到图上,重新定义基于图的卷积操作。
在对图像进行卷积时,采样函数
选取的是位置𝑥的领域像素。在对图进行卷积时,可类比定义,节点
的邻居节点
,
表示从
到
的最短路径,基于图的采样函数
可以表示成公式(2),取D=1,即
的1领域。
(2)
3 定义权重函数
在对于图像的卷积中,卷积核中心点的领域是规格的,可以通过索引(C; K; K) 实现权重函数。对于图的卷积,权重函数需要重新定义。可将关节点
的邻居集
划分为K个子集,每个子集定义一个标签,就不需要将每一个邻居都单独定义一个标签了。存在映射
,将领域中的邻居关节点映射到对应的标签。权重函数
可以表示成公式(3)。
(3)
4 GCN定义
用重新定义的采样函数公式(2)和权重函数公式(3)来重新定义卷积公式(1)得到如下的图卷积公式(4)。
(4)
即
(5)
如果将图结构当作是图像,则公式(5)类似于在图像上的卷积公式。假如存在一个5×5的卷积核,图像上一个中心点的领域的像素个数为25个,将这25个像素分为25个子集,每个子集设置一个标签,最后就可以使用公式(5)计算卷积输出。
5 时空卷积建模
前文定义的图卷积操作已经考虑空间因素,接下来需要考虑如何引入时间边。图的时间边由相同骨骼点在不同帧上按时间连接而成,因此可以将图卷积扩展定义到时空域上。通过扩展邻域的概念使其包含时间边,可以表示成公式(6)。
(6)
Γ称为时间域核大小,用于控制时间领域的大小。需要重新定义采样函数来实现在时间域的卷积操作。对于权重函数需要改变
的时空邻域标签映射,可以表示成公式(7)。
(7)
是在一帧上关节点
的映射,重新定义了采样函数以及权重函数实现重新定义适合于时空图的卷积操作。
6划分策略
通过设计节点的划分策略来实现邻域节点的标签映射。
(1).唯一划分:将节点和邻域划分在一起。
(2).根据距离的划分:将1邻域划分为两个子集,一个是节点本身,一个是节点的邻域。
(3).空间构型划分:将根节点和其邻域划分成3个子集。子集分别为:根节点;向心节点,即节点到重心的距离小于根节点到重心的距离;离心节点,即节点到重心的距离大于根节点到重心的距离。重心为一帧内所有关节点的平均位置。划分策略可以表示为公式(8),
是重心到所有关节点𝑖的平均距离。
(8)
图3 划分策略示意图
图3为划分策略的示意图,其中的四张图从左到右如下:
1.输入的骨骼图,其中红色正方形表示的节点的1邻域为虚线框中的节点。
2.唯一划分,节点和邻域划分在一起,用绿色三角形表示。
3.基于距离的划分,节点本身距离为0,用红色正方形表示,节点的邻域距离为1,用绿色三角形表示。
4.空间构型划分,人体骨骼重心用×表示,根节点用红色正方形表示,向心节点用绿色三角形表示,离心节点用橙色三角形表示。
7 时空图卷积网络结构
将人体骨骼关节点坐标信息输入到空间域时间域图卷积中,得到行为分类。对输入的骨骼信息进行 Batch Normalization 来标准化数据,使得输入数据的规模在不同关节点上保持一致。
本文的模型有 9 个时空图卷积单元层,每层都有 1 个 GCN 单元和 3 个 TCN(时间卷积网络)单元。网络结构说明如表 1。
表1 网络结构
层数 | 类型 | 输出通道 | ||
0 | GCN * 1 | TCN * 3 | 64 | |
1 | GCN * 1 | TCN * 3 | 64 | |
2 | GCN * 1 | TCN * 3 | 64 | |
3 | GCN * 1 | TCN * 3 | 64 | |
4 | GCN * 1 | TCN * 3 | Residual * 2 | 128 |
5 | GCN * 1 | TCN * 3 | 128 | |
6 | GCN * 1 | TCN * 3 | 128 | |
7 | GCN * 1 | TCN * 3 | Residual * 2 | 256 |
8 | GCN * 1 | TCN * 3 | 256 | |
9 | GCN * 1 | TCN * 3 | 256 |
前四层(0-3)输出 64 通道,4-6 层输出 128 通道,其中 4 层的卷积步幅为 2,7-9 层输出 256 通道,其中第 7 层的卷积步幅为 2,通过使用 1×1 卷积改变输出通道数。残差机制应用在第 4 和第 7 个单元层上。优化器选取随机梯度下降算法(Stochastic gradient descent, SGD)并且每一层的学习率为 0.01,每一层 Dropout 参数选择 0.5 来避免过拟合。对得到的张量先进行全局池化然后输入到 Softmax 中,输出动作类别,整个视频的动作类别需要“投票”决定,以取平均得分的方式决定最终的类别。
表 2 模型参数设置
模型参数 | 描述 |
训练集批大小 | 32 |
测试集批大小 | 32 |
学习率 | 起始0.1 |
训练次数 | 80epoch |
模型的默认参数设置如表 2 所示,按照以上参数进行训练得到本文的模型参数。
8 数据集分析
NTU-RGB+D数据集总共有60种人体行为动作的分类数据,一共有56880个样本数据。这些样本数据中有40类动作为日常行为动作,9类为与健康有关的动作,11类为双人互动动作。此数据集使用三个不同角度的摄像机拍摄,数据包括深度信息、3D骨骼信息、RGB帧以及红外序列。主要使用的是其中的3D骨骼信息。骨骼节点信息示意图如下所示,一帧内共有25个骨骼节点。
图 4 人体骨骼节点信息示意图
NTU-RGB+D数据集中骨骼节点信息格式如下图所示。其中第1行为视频帧数,第2行为视频中的人数,第3行共有10个数据分别代表'bodyID','clipedEdges', 'handLeftConfidence','handLeftState','handRightConfidence','handRightState','isResticted', 'leanX', 'leanY', 'trackingState',第4行为骨骼关节点个数,第5-29行为25个关节点的信息,每个关节点有12个数据,分别代表'x', 'y', 'z', 'depthX', 'depthY', 'colorX','colorY','orientationW','orientationX','orientationY','orientationZ','trackingState'。
图 5 人体骨骼节点信息文件形式
NTU数据集有两种不同的划分规则,Cross-Subject和Cross-View。Cross-Subject按照人物ID来划分训练集和测试集,划分出的训练集包括40320个样本,测试集包括16560个样本。Cross-View按相机机位来划分训练集和测试集。相机2、3获取的样本作为训练集,样本数为37920,相机1获取的样本作为测试集,样本数为18960。
9 人体行为识别实验
所搭建的时空图卷积神经网络主要在NTU-RGB+D数据集上进行人体行为识别的实验,根据NTU数据集两种不同的划分规则Cross-Subject和Cross-View,分别进行实验,观察识别准确率。此外还在Kinetics数据集上做了一次对比实验,观察不同数据集对于识别率的影响。
10 实验结果与分析
在NTU-RGB+D数据集的两种不同的划分规则 Cross-Subject 和 Cross-View 上做人体行为识别实验得到的识别准确率结果如表3所示。在Kinetics数据集上做了一次对比实验验证其他数据集对于实验准确度的影响
表3识别准确度
Top1 | Top5 | Mean-loss | |
ntu-xsub | 81.57% | 96.85% | 0.6566 |
ntu-xview | 88.76% | 98.83% | 0.3523 |
kinetics | 31.60% | 53.68% | 3.2331 |
搭建的卷积神经网络在NTU数据集上识别准确率较高,但在kinetics数据集上识别率较差。Top1表示识别结果中可能性排在第一的类别是正确结果的准确率,Top5表示识别结果中可能性排在前五的类别中有正确结果的准确率。
在NTU数据集两种不同的划分规则Cross-Subject和Cross-View上测试结果的混淆矩阵如下图6,表7,对角线表示识别结果为正确结果的数量。
图6 混淆矩阵-xsub
图7混淆矩阵-xview
时空图卷积神经网络模型在NTU-RGB+D数据集上实验得到的识别准确度和混淆矩阵显示搭建的网络模型识别人体行为的效果较好,识别准确率较高,方法可行。
上面的代码是实现“基于图卷积神经网络的人体行为识别”。
这是本科毕业设计时做的内容。
下面是对模型复现的一些说明:
首先介绍分析搭建时空图卷积神经网络所需操作步骤,构建人体骨骼时空图,定义GCN,实现时空卷积建模。具体操作流程如图1表示。
图3-1 时空图卷积神经网络搭建流程
1 构建时空图
在进行时空图卷积神经网络搭建之前首先需要根据骨架关节点信息构建一个时空图,因为ST-GCN就是在图结构上进行人体行为识别的。一些基于人体骨架的人体行为识别方法会添加人体骨架的空间信息来提高行为识别的准确度,包括一些骨骼点之间的连接关系和运动时某些关键的身体部分。人体关节点构成的人体骨架结构能很立体直观地反映人体运动情况,可以建立一个时空图,在空间连接上表现出人体骨骼点之间的相对位置,人体的运动通过时间边表现出来。
时空图的构建规则如下:
(1)在每一帧内部遵循人体骨骼的连接关系将骨骼点连接起来,构成单帧内的人体骨骼图;
(2)在相邻帧之间将同一骨骼点连接起来,构成时间边,体现人体骨骼的运动情况;
(3)全部帧中的骨骼点组成点集,全部的边组成边集,最终构成了人体骨骼时空图。
图2 人体骨骼时空图
图1为时空图示意图,图中点表示骨骼数据中的关节点,蓝色边表示空间边,构成单帧内的人体骨骼图,红色边为时间边,连接相邻帧之间同一骨骼点。
2 定义采样函数
在图像上的卷积操作最后输出的结果也是一张图像,即特征图。设定卷积核的大小为K×K,卷积层的输入图像为
,通道数为c。每个通道在位置𝑥的输出公式如下。
(1)
采样函数列出了位置𝑥的领域。在对于图像的卷积中,
,权重函数定义了滑动窗口内各个位置的权重,和采样函数相乘计算采样区域的内积。如果想在图结构上进行卷积操作就需将公式(1)扩展到图上,重新定义基于图的卷积操作。
在对图像进行卷积时,采样函数
选取的是位置𝑥的领域像素。在对图进行卷积时,可类比定义,节点
的邻居节点
,
表示从
到
的最短路径,基于图的采样函数
可以表示成公式(2),取D=1,即
的1领域。
(2)
3 定义权重函数
在对于图像的卷积中,卷积核中心点的领域是规格的,可以通过索引(C; K; K) 实现权重函数。对于图的卷积,权重函数需要重新定义。可将关节点
的邻居集
划分为K个子集,每个子集定义一个标签,就不需要将每一个邻居都单独定义一个标签了。存在映射
,将领域中的邻居关节点映射到对应的标签。权重函数
可以表示成公式(3)。
(3)
4 GCN定义
用重新定义的采样函数公式(2)和权重函数公式(3)来重新定义卷积公式(1)得到如下的图卷积公式(4)。
(4)
即
(5)
如果将图结构当作是图像,则公式(5)类似于在图像上的卷积公式。假如存在一个5×5的卷积核,图像上一个中心点的领域的像素个数为25个,将这25个像素分为25个子集,每个子集设置一个标签,最后就可以使用公式(5)计算卷积输出。
5 时空卷积建模
前文定义的图卷积操作已经考虑空间因素,接下来需要考虑如何引入时间边。图的时间边由相同骨骼点在不同帧上按时间连接而成,因此可以将图卷积扩展定义到时空域上。通过扩展邻域的概念使其包含时间边,可以表示成公式(6)。
(6)
Γ称为时间域核大小,用于控制时间领域的大小。需要重新定义采样函数来实现在时间域的卷积操作。对于权重函数需要改变
的时空邻域标签映射,可以表示成公式(7)。
(7)
是在一帧上关节点
的映射,重新定义了采样函数以及权重函数实现重新定义适合于时空图的卷积操作。
6划分策略
通过设计节点的划分策略来实现邻域节点的标签映射。
(1).唯一划分:将节点和邻域划分在一起。
(2).根据距离的划分:将1邻域划分为两个子集,一个是节点本身,一个是节点的邻域。
(3).空间构型划分:将根节点和其邻域划分成3个子集。子集分别为:根节点;向心节点,即节点到重心的距离小于根节点到重心的距离;离心节点,即节点到重心的距离大于根节点到重心的距离。重心为一帧内所有关节点的平均位置。划分策略可以表示为公式(8),
是重心到所有关节点𝑖的平均距离。
(8)
图3 划分策略示意图
图3为划分策略的示意图,其中的四张图从左到右如下:
1.输入的骨骼图,其中红色正方形表示的节点的1邻域为虚线框中的节点。
2.唯一划分,节点和邻域划分在一起,用绿色三角形表示。
3.基于距离的划分,节点本身距离为0,用红色正方形表示,节点的邻域距离为1,用绿色三角形表示。
4.空间构型划分,人体骨骼重心用×表示,根节点用红色正方形表示,向心节点用绿色三角形表示,离心节点用橙色三角形表示。
7 时空图卷积网络结构
将人体骨骼关节点坐标信息输入到空间域时间域图卷积中,得到行为分类。对输入的骨骼信息进行 Batch Normalization 来标准化数据,使得输入数据的规模在不同关节点上保持一致。
本文的模型有 9 个时空图卷积单元层,每层都有 1 个 GCN 单元和 3 个 TCN(时间卷积网络)单元。网络结构说明如表 1。
表1 网络结构
层数 | 类型 | 输出通道 | ||
0 | GCN * 1 | TCN * 3 | 64 | |
1 | GCN * 1 | TCN * 3 | 64 | |
2 | GCN * 1 | TCN * 3 | 64 | |
3 | GCN * 1 | TCN * 3 | 64 | |
4 | GCN * 1 | TCN * 3 | Residual * 2 | 128 |
5 | GCN * 1 | TCN * 3 | 128 | |
6 | GCN * 1 | TCN * 3 | 128 | |
7 | GCN * 1 | TCN * 3 | Residual * 2 | 256 |
8 | GCN * 1 | TCN * 3 | 256 | |
9 | GCN * 1 | TCN * 3 | 256 |
前四层(0-3)输出 64 通道,4-6 层输出 128 通道,其中 4 层的卷积步幅为 2,7-9 层输出 256 通道,其中第 7 层的卷积步幅为 2,通过使用 1×1 卷积改变输出通道数。残差机制应用在第 4 和第 7 个单元层上。优化器选取随机梯度下降算法(Stochastic gradient descent, SGD)并且每一层的学习率为 0.01,每一层 Dropout 参数选择 0.5 来避免过拟合。对得到的张量先进行全局池化然后输入到 Softmax 中,输出动作类别,整个视频的动作类别需要“投票”决定,以取平均得分的方式决定最终的类别。
表 2 模型参数设置
模型参数 | 描述 |
训练集批大小 | 32 |
测试集批大小 | 32 |
学习率 | 起始0.1 |
训练次数 | 80epoch |
模型的默认参数设置如表 2 所示,按照以上参数进行训练得到本文的模型参数。
8 数据集分析
NTU-RGB+D数据集总共有60种人体行为动作的分类数据,一共有56880个样本数据。这些样本数据中有40类动作为日常行为动作,9类为与健康有关的动作,11类为双人互动动作。此数据集使用三个不同角度的摄像机拍摄,数据包括深度信息、3D骨骼信息、RGB帧以及红外序列。主要使用的是其中的3D骨骼信息。骨骼节点信息示意图如下所示,一帧内共有25个骨骼节点。
图 4 人体骨骼节点信息示意图
NTU-RGB+D数据集中骨骼节点信息格式如下图所示。其中第1行为视频帧数,第2行为视频中的人数,第3行共有10个数据分别代表'bodyID','clipedEdges', 'handLeftConfidence','handLeftState','handRightConfidence','handRightState','isResticted', 'leanX', 'leanY', 'trackingState',第4行为骨骼关节点个数,第5-29行为25个关节点的信息,每个关节点有12个数据,分别代表'x', 'y', 'z', 'depthX', 'depthY', 'colorX','colorY','orientationW','orientationX','orientationY','orientationZ','trackingState'。
图 5 人体骨骼节点信息文件形式
NTU数据集有两种不同的划分规则,Cross-Subject和Cross-View。Cross-Subject按照人物ID来划分训练集和测试集,划分出的训练集包括40320个样本,测试集包括16560个样本。Cross-View按相机机位来划分训练集和测试集。相机2、3获取的样本作为训练集,样本数为37920,相机1获取的样本作为测试集,样本数为18960。
9 人体行为识别实验
所搭建的时空图卷积神经网络主要在NTU-RGB+D数据集上进行人体行为识别的实验,根据NTU数据集两种不同的划分规则Cross-Subject和Cross-View,分别进行实验,观察识别准确率。此外还在Kinetics数据集上做了一次对比实验,观察不同数据集对于识别率的影响。
10 实验结果与分析
在NTU-RGB+D数据集的两种不同的划分规则 Cross-Subject 和 Cross-View 上做人体行为识别实验得到的识别准确率结果如表3所示。在Kinetics数据集上做了一次对比实验验证其他数据集对于实验准确度的影响
表3识别准确度
Top1 | Top5 | Mean-loss | |
ntu-xsub | 81.57% | 96.85% | 0.6566 |
ntu-xview | 88.76% | 98.83% | 0.3523 |
kinetics | 31.60% | 53.68% | 3.2331 |
搭建的卷积神经网络在NTU数据集上识别准确率较高,但在kinetics数据集上识别率较差。Top1表示识别结果中可能性排在第一的类别是正确结果的准确率,Top5表示识别结果中可能性排在前五的类别中有正确结果的准确率。
在NTU数据集两种不同的划分规则Cross-Subject和Cross-View上测试结果的混淆矩阵如下图6,表7,对角线表示识别结果为正确结果的数量。
图6 混淆矩阵-xsub
图7混淆矩阵-xview
时空图卷积神经网络模型在NTU-RGB+D数据集上实验得到的识别准确度和混淆矩阵显示搭建的网络模型识别人体行为的效果较好,识别准确率较高,方法可行。