基于OpenPose的坐姿识别

Sitting Posture Recognition Based on OpenPose

简单说,就是提取18个身体关节和17条连接关节的线,作为提取到的坐姿特征。

介绍

坐姿识别方法可以分为两类:基于传感器的方法和基于图像的方法

构建数据集

一个提取人体姿势的工具是OpenPose。OpenPose人体姿态识别项目是卡内基梅隆大学(Carnegie Mellon University, CMU)基于卷积神经网络和监督学习开发的一个开源库,在caffe[14]框架下开发。
姿态估计,如人体运动,面部表情,手指运动。适用于单人和多人,具有极佳的鲁棒性[15]。OpenPose提供了一种自下而上的方法来实时估计多人手势,而不需要任何字符检测器。
加载OpenPose预训练模型,算法将提取18个身体关节和17条连接关节的线。图1和图2是使用OpenPose提取关节点信息特征后的部分数据集。
在这里插入图片描述
在这里插入图片描述

算法

由于人体姿态的变化会导致人体关节位置的变化,因此在构建数据集时,只保留x和y的最小和最大坐标范围内的图信息。背景设置为黑色,冗余数据减少。整个数据集在应用到训练过程之前进行处理。程序如下所示。
(a)将所有图像切割为(60,60)像素,其中边缘部分填充黑色像素。
(b)正确坐姿图像用“0”标记,错误坐姿图像用“1”标记。
©应用数据增强扩大数据集。由于实验条件的限制,构建的数据集不够大。因此,数据增强对于扩展用于训练的数据集是必要的。
(d)对图像进行归一化,使像素在0到1的范围内。
CNN模型由19层组成,输入层用于输入处理过的(64,64)像素的图像。输出层是使用SoftMax分类器的分类层。激活层应用ReLU函数,池化层的步长为(2,2)。
SGD +动量优化器用于训练。由于采用了categorical_crossentropy作为损失函数,因此有必要根据分类次数对具有一热编码的分类标签进行矢量化。只有两个类别,所以标签是二维的。
将数据增强过程中图像的随机旋转范围设置为20。图像的水平移动范围设置为0.2(移动前后的宽度比),图像可以随机进行水平翻转。数据集分为训练集、验证集和测试集,分别占80%、10%和10%。构建的数据集用于训练模型以优化参数,并存储在TensorBoard的每日记录中。

结论

本文开发了一种基于计算机视觉的课堂学生坐姿识别系统,用于发现和纠正学生的不良坐姿。该算法利用OpenCV对监视器捕捉到的视频信息进行提取。然后利用OpenPose提取学生的姿态特征。利用Keras深度学习框架建立卷积神经网络来训练数据集。最后,利用训练后的网络模型来识别学生的坐姿。实验表明,通过100历元训练,测试集和验证集的准确率达到90%以上。经过实际测试,可以有效识别学生在课堂上的坐姿,帮助青少年养成良好的坐姿习惯,促进其健康成长。

Logo

瓜分20万奖金 获得内推名额 丰厚实物奖励 易参与易上手

更多推荐