基于3D 骨骼点数据的人体动作识别算法研究

2022-02-10 12:24吕松杰祁宇明邓三鹏夏育泓
装备制造技术 2022年11期
关键词:降维骨骼准确率

吕松杰,祁宇明,邓三鹏,夏育泓,刘 浩

(1.天津职业技术师范大学机器人及智能装备研究院,天津 300222;2.天津市智能机器人技术及应用企业重点实验室,天津 300350)

0 引言

随着工业智能化的迅速发展,近年来,人机协作技术逐渐被应用于非结构化工业领域中,人机协作的提出打破了传统的人控制机器的工作模式和单一结构化的工作环境,在同一作业环境下实现了人与机器人协作完成任务[1]。感知技术是实现人机协作的前提[2]。为了更加安全高效完成人机协作任务,在复杂的工业场景下机器人需要对工人的行为意图准确识别和快速理解,因此基于视觉的人体动作识别在人机协作的场景中有着重要的应用价值。

人体动作识别作为人机协作过程中的重要一步,近年来得到了快速发展,人体动作识别的方法根据输入形式的不同主要分为2 种,分别是基于RGB数据[3,4]和基于人体骨架数据[5]。第1 种最常见的是用3D 卷积神经网络[6]和双流卷积神经网络的方法来完成动作识别。第2 种骨架数据相较于RGB 数据而言,排除了图片中复杂背景和冗余信息的干扰,单纯保留了人体动作本身的关键信息[7],在工业场景下更适合作为人体动作识别的输入数据。

随着深度学习的发展,基于人体姿态估计的算法仅通过处理图片就可以得到人体骨骼点的位置信息,但是目前大多数的人体姿态估计算法模型的参数量较大,应用在工业场景中实时性较差。BlazePose 是谷歌2020年提出的一种用于人体姿态估计的轻量级卷积神经网络模型[8],可以完成实时的检测。

使用BlazePose 处理自制的数据集得到人体三维的骨骼点位置信息,对骨骼点数据进行数据预处理后,利用主成分分析(PCA)对数据进行降维处理。采用BP 神经网络分类算法对工业场景下工人可能出现的3 种动作:正常状态下的站立或行走、搬运、操作示教器,进行动作的识别。

1 人体3D 骨骼点特征工程的构建

设计的人体动作识别模型主要包括两部分:人体3D 骨骼点特征工程的构建和分类算法的设计,整体设计流程如图1 所示。用BlazePose 算法处理得到的33个骨骼点,经过数据预处理和PCA 降维处理,将未降维和降维的数据分别输入到分类算法中完成动作分类,最后经过实验对比,选择出一种最优的动作识别算法。

图1 动作识别算法的流程

自制的数据集包括3 种工业场景下工人可能会出现的动作:搬运、操作示教器和正常状态下站立或行走。如表1 所示,筛选整理过后的3 种动作数据集一共包括2802 张图片。

表1 工业场景下动作数据集

1.1 人体姿态估计算法

BlazePose 是一种用于人体姿态估计的轻量级卷积神经网络模型,在预测的过程中,BlazePose 将输出33个3D 骨骼点位置信息(x,y,z),其中x、y、z三个坐标是在以米为单位的真实世界3D 坐标系中,原点位于臀部之间的中心。每张图片输出的骨骼点坐标不仅都以臀部中心为坐标原点,而且每次输出的数据尺度也相同,这样在比较不同样本之间的骨骼点数据时,就不需要对骨骼点数据进行归一化等处理。如图2 所示为BlazePose 处理搬运这个动作后得到的结果以及此动作33个关键点在三维空间坐标系中的可视化。

图2 BlazePose 处理后的可视化效果

1.2 特征提取

经过实验分析,仅仅使用BlazePose 输出得到的33个人体骨骼点位置信息就可以表达人体动作的语义特征。单张图像经过BlazePose 处理可以得到33个关键点的3D 坐标信息,是一个大小为(33,3)的二维数组数据,将这个二维数组数据经过维度变换之后得到一个特征维度为99 的一维数组数据,加入动作的标签后,这样就完成了一个样本数据的构建。用BlazePose 循环处理数据集中的所有图像,对数据预处理后得大小为(2802,100)的二维数组数据,将数据写入到CSV 文件中,用于后面的动作分类任务。

PCA 是最常用的降维算法,其目的在于将高维的数据映射到低维的空间中,并期望在所投影的维度上数据的信息量最大。一般用主成分所占的百分比来衡量PCA 降维后数据的好坏,也就是前k个主成分总的方差贡献率。用PCA 对预处理后的数据进行降维处理,为了找到一个较好的下降维度,输出前n个主成分占比总和,如图3 所示,当数据下降到20 维的时候,前20个主成分占比可以达到99.5%,因此可以将数据从99 维降到20 维,将降维后大小为(2802,20)的二维数组数据加入标签后写入到另外一个CSV 文件中。

图3 下降到不同维度时PCA 总的主成分占比

2 人体动作分类算法

完成人体3D 骨骼点特征工程的构建后,得到了2 组数据,都是2802个样本数据,包括3 种动作类别。第1 组是没有进行PCA 降维的数据,特征维度为99 维,数据保留了动作姿态原始的特征;第2 组是降维后的数据,特征维度为20 维,数据量相对较小。将这2 组数据分别作为分类算法的输入,使用BP 神经网络算法进行分类,最后将动作识别算法应用在视频数据上,来验证动作识别算法的实时性。

BP 神经网络是一种按误差反向传播算法训练的多层前馈网络,训练的过程包括前向传播和反向传播,在反向传播的过程中,根据误差更新各种参数的值,使得总误差减小。对数据进行反复训练,直到误差减少到可以接受的程度。本实验中,输入层节点数将设置为99个或20个,输出层节点数为3个,设置两个隐藏层,在分类之前需要进行大量的实验来确定隐藏层节点的个数,以保证可以得到一个较好的分类结果。同时在BP 神经网络中还将加入BN(Batch Nor原malization)层,它可以很好地约束特征数据的尺度范围,让数据保持在一个良好的分布范围之内。加入BN 层不仅可以加速模型的训练,还可以提高分类的准确率。

3 实验结果与分析

实验均在Intel i5-8250U CPU 处理器、4G 内存的PC 上进行,系统环境为64 位Windows 10 操作系统,采用Python3.8 进行编程,采用Pytorch 1.10 深度学习框架完成网络模型的搭建、训练和测试。

3.1 动作分类算法分析

数据集中的图片经过BlazePose 处理会输出33个3D 骨骼点位置坐标信息,经过数据处理后得到的特征维度为99 维,再经过PCA 降维得到20 维,将降维前的数据和降维后的数据分别写入到不同的CSV文件中,这两组非结构化数据将输入到分类算法中完成动作分类。

将数据按照0.75颐0.25 的比例划分成训练集和测试集,经过大量的实验测试,最终将BP 神经网络设置为4 层,其中输入层有99个节点,第1 层有120个节点,在第2 层后面加入BN 层和激活函数RELU,第3 层有84个节点,第3 层后面也加入BN 层和激活函数RELU,输出层有3个节点。网络模型的批大小设置为112,初始学习率设置为0.01,选择交叉熵损失函数,采用随机梯度下降作为优化策略,训练周期为30 epoch,采用学习率下降策略,在15 ~ 30 epoch 学习率下降10 倍。网络模型训练时的loss 曲线和准确率曲线,训练30 epoch 之后,测试集的准确率可以达到98.37%,如图4 所示。从图4 可以看出,降维的数据用BP 神经网络模型训练后,测试集的准确率为98.86%,准确率比未降维的数据高,同时模型参数量更小,识别速度相对快点。

图4 BP 神经网络训练时的loss 曲线和准确率曲线

3.2 实时性分析

将训练好的动作分类模型应用在一段480 帧的视频数据上,计算模型识别的FPS,来验证动作识别算法的实时性,该视频数据中的动作为操作示教器。当采用不同模型时它的动作识别准确率与动作识别速度,可以看到2 种算法基本都能达到实时识别(表2)。

表2 动作识别准确率与动作识别速度

4 结语

在非结构工业场景下对人体动作识别的算法,该算法使用自制的3 种动作数据集,通过BlazePose 提取人体3D 骨骼点位置信息,经过数据预处理和PCA降维后,将未降维的数据和降维的数据分别送入到BP 神经网络中进行分类,从而完成人体动作的识别。经过实验对比,使用PCA 降维后的数据作为分类算法的输入,模型的准确率相对高一点,准确率可达到98.86%,识别速度更快,平均每秒可以运行30 帧,可完成实时的动作识别。在真实的工业场景下,分析和识别工人的动作不仅可以对工人的行为规范进行监督,还可以让机器人更加安全高效的与工人共同完成工作任务,具有良好的实际应用价值。

本研究收集到的数据集存在数量少、不够全面等缺点,对于比较相近的动作可能会出现识别错误,接下来的研究应扩大和优化数据集,寻找更好的特征提取方法,来提高人体动作识别的准确度和鲁棒性。

猜你喜欢
降维骨骼准确率
混动成为降维打击的实力 东风风神皓极
做家务的女性骨骼更强壮
三减三健全民行动——健康骨骼
乳腺超声检查诊断乳腺肿瘤的特异度及准确率分析
不同序列磁共振成像诊断脊柱损伤的临床准确率比较探讨
2015—2017 年宁夏各天气预报参考产品质量检验分析
Helicobacter pylori-induced inflammation masks the underlying presence of low-grade dysplasia on gastric lesions
降维打击
高速公路车牌识别标识站准确率验证法
骨骼和肌肉