赵海文, 王佳阔, 齐德瑄, 郭士杰
(1.河北工业大学 机械工程学院,天津 300401; 2.河北省机器人感知与人机融合重点实验室,天津 300401)
通常,患者在床上停留的时间会较久,患者在床上的坐卧姿势会影响其健康状况。睡姿是卧姿的主要组成部分,是睡眠质量监测的重要指标之一,在睡眠阶段可通过睡姿诊断睡眠呼吸暂停综合征(sleep apnea syndrome,SAS)以及心血管疾病等症状,对于医疗诊断十分关键。在智能无人护理系统中,利用睡姿和坐姿信息,对患者的健康监测显得尤为重要。
传统的睡姿识别系统如,叶荫球等人[1]提出的通过计算机视觉,采用目标分割和神经网络结合的算法进行人体睡姿识别,该系统受光线影响会降低识别准确率,且使用视频也会带来隐私问题;杨明健等人[2]提出了一种基于OpenPose的姿态估计算法,通过对人体各个关节点的定位来判断人体姿态,但对环境的要求较高。近年来,无束缚睡姿识别逐渐成为该领域的主要研究方向[3]。张艺超等人[4]提出一种使用多压电薄膜传感器采集人体局部细微震动信号的睡姿识别方法,该方法识别精度受信号去噪效果的影响大,鲁棒性差;耿读艳等人[5]设计一种多压电薄膜传感器的床垫,制作工艺繁琐,成本高;任志斌等人[6]使用压力传感器,定义睡姿图像特征,采用粗糙模糊集算法对图像特征属性高效约简,实现睡姿类别合理分类,但识别准确率有待提高。
高精度的无束缚识别是目前姿势识别领域里的主要挑战。本文利用自主研发的床单式柔性压力传感器设计了姿势数据采集系统,根据英国咨询服务和睡眠评估机构主任克里斯·依季科夫斯基教授的分析结论,采集了6种睡姿的静态数据,分别为仰卧型、俯卧型、左侧胎儿型、左侧树干型、右侧胎儿型和右侧树干型;采集了4种坐姿的静态数据,分别为直腿坐于床上、盘腿坐于床上、双腿坐于床边、单腿坐于床边。将这10种姿势分别定义为姿势1~姿势10,使用了基于卷积神经网络YOLOv5作为姿势识别方法,并用训练完成的网络模型验证了该方法识别的准确率。
本文的人体姿势压力分布数据均利用大面积床单式柔性压力传感器采集获得,其结构原理如图1所示。传感器采用阵列式布局,上下电极层分别有64条和32条平行电极,在空间上相互垂直均布,中间为离子凝胶电解质介电层,整个传感器形成“夹心”结构。两个电极层上的平行电极在相互交错处,形成了一个电容传感单元。整个传感器分布着64×32共2 048个电容传感单元。在压力作用下,电极层与离子凝胶介电层接触面积发生改变,相应区域传感单元的电容值会随之变化,通过检测电容值可获取该区域的压力数据。
图1 柔性压力传感器结构
通过测试,本文所用的传感器电容灵敏度约135.9(nF/cm2)/kPa,可感知的压强范围为0~50 kPa,两者关系于文献[7]中给出。
本文根据床单式柔性压力传感器的结构,自主研发了姿势数据的采集系统。采集系统由数据采集卡、床单式柔性压力传感器以及上位机组成。数据采集卡由分压电路、放大滤波、数据处理以及串口通信4个部分组成。传感器的检测区域大小为1 900 mm×950 mm,可获取通常人的坐卧姿势数据。实验时,将传感器置于床褥上,采集卡通过USB连接上位机,受试人员躺在床上,便可实现无干扰、无束缚的人体姿势数据采集。图2所示为姿势数据采集系统。
图2 姿势数据采集系统
系统工作过程如下:接入传感器后,传感器单元与采样电容形成分压电路,将传感器单元的电容值变化转换为对应的电压变化;在采集端将采集到的电压信号进行放大滤波处理;通过ARM架构MCU自带的8位A/D模块将传感器输出的电压转换为数字量,进行软件滤波处理并排序;最后通过串行通信按帧(传感器有64行、32列,共2 048个电容单元,所有电容单元输出值按顺序排列为1帧数据)将数据传输到上位机进行储存、处理与展示。
上位机将每帧数据按顺序排列,使传感器的电容传感单元与其压力值坐标对应,保证图像显示时人体姿势的方向和位置与实际相同,并在图3(a)采集系统界面中同步显现出完整的睡姿图像,为加强系统界面直观性,系统显示图像为RGB图像。同时,将传感器的数据转换为64×32的矩阵形式。图3(b)为10种姿势的上位机显示图像。
图3 上位机界面
本文实验遵守伦理原则和《赫尔辛基宣言》,受试者均无身体缺陷,在仔细阅读了解本实验流程和目的后自愿签署知情同意书,在测试人员的指引下完成数据采集。数据采集于30名受试人员,年龄21~40岁,身高155~194 cm,体重45~100 kg(男性25名,女性5名),身体质量指数(body mass index,BMI)为(25.1±7.7)kg/m2。共计采集“卧”和“坐”10种姿势,9 000组数据,其中,卧姿5 400组,坐姿3 600组。图4为姿势1~姿势10的采集示例。
图4 姿势数据采集示例
在图像识别领域中,图像质量会影响图像识别的准确率。由于采集到的压力数据为64×32的矩阵数据,将其转换成灰度图后,在对静态的压力图像进行姿势分类时,图像因噪声和滤波处理导致身体躯干与上肢连接处的不稳定性和孤立点都会导致识别姿势特征的准确率变低。因此,在对图像进行标注前,需对姿势灰度图进行预处理以提高识别准确率,同时,图像标准化可降低图像分类的难度。本文采用了双线性插值处理,使轮廓边缘自然过渡。对双线性插值处理后的图像进行归一化,消除受试人员体重差异对压力图像造成的影响,加快神经网络学习收敛。图5为姿势3、姿势5、姿势7和姿势8图像预处理的效果对比。
图5 姿势图像预处理
预处理完成后,使用LabelImg标注软件对数据集手动框选图片中的人体姿势得到VOC格式文件后,需要将其转化为YOLO格式标记文件,具体公式如下所示
x=(xmin+xmax)/dw
(1)
y=(ymin+ymax)/dh
(2)
w=(xmax-xmin)/dw
(3)
z=(ymax-ymin)/dh
(4)
式中xmin,ymin,xmax,ymax为VOC格式文件中所标记物体位置的对角线坐标,分别表示左上角坐标以及右下角坐标的值。dw和dh为图片的宽和高。将已框选好的新数据集按类型以8︰2随机划分为训练集和测试集,为接下来的神经网络训练作准备。
YOLO系列算法是一种基于整个图片进行预测,所有的检测结果一次性给出的目标检测算法。新的YOLOv5算法[8,9]已是高性能的实现目标检测的模型之一,基于准确率和计算速率的综合考量[10],本文选取YOLOv5s网络模型。
实验使用的计算机硬件设备为:Intel®CoreTMi5—8400 CPU,NVIDIA GeForce GTX 1060 GPU,12GB内存。在Windows 10系统上使用PyTorch框架搭建深度学习框架。在训练过程中,网络模型训练参数设置为:批大小(batch size)设为4,总训练轮次(epoch)为200。
YOLOv5模型训练完成后,其结果如图6所示。
图6 YOLOv5训练结果
本文选用平均精度均值(mean average precision,mAP)、精度(precision,P)、召回率(recall,R)作为模型的评估标准,来衡量算法检测精度。其计算公式中,TP表示姿势被网络正确识别的数量,FP表示姿势被网络错误识别的数量,FN表示姿势没有被网络识别出的数量。
精度P公式如下所示
P=TP/(TP+FP)×100%
(5)
召回率R公式如下所示
R=TP/(TP+FN)×100%
(6)
平均精度AP(average precision)公式如下所示
(7)
mAP公式如下所示
(8)
如图7所示为实验结果mAP图。
图7 YOLOv5模型mAP图
在训练完成后,在测试集上得到性能指标P为 99.2%,R为98.7 %,mAP为99 %。
姿势识别效果如图8所示。
图8 姿势识别效果示例
将本文实验结果与近年来国内外学者提出的几种方法结果进行比较,如表1所示,文献[11]和文献[12]的姿势分类准确率较高,但识别的姿势类型较少,多姿势识别的可靠性有待进一步验证。文献[12]准确率高达99.7 %,但需要在患者躯干和四肢绑缚加速度传感器,患者会感到不适。文献[13]的稀疏分类算法用32个特征对6种睡姿姿势来进行分类,但准确率仅有83.2 %。文献[14]使用了遗传算法优化支持向量机(support vector machine,SVM)关键参数的姿势识别方法,准确率为93.3 %。与上述算法相比,本文算法在多姿势识别情况下准确率可达到99.2 %,在识别姿势数量和准确率上具有优势。
表1 各算法对比
因此,在与其他算法进行比较后得出结论,使用YOLOv5算法对坐卧姿势可进行可靠识别。
为使医护人员能及时掌握患者在病床上的姿势,利用睡姿和坐姿信息对患者健康进行监测,设计了一种基于床单式柔性压力传感器的姿势数据采集系统,实现了对人体姿势进行无干扰、无束缚的采集与识别。采集了10种姿势数据,使用基于卷积神经网络的YOLOv5算法来对人体姿势进行识别。实验结果表明:该方法人体识别准确率达到了99.2 %,实现了人体坐卧姿势的精准识别,为智能无人护理系统中实现姿势动态识别奠定了基础。