1. 引言
自2017年来,我国新生儿数量从1700万减少到900多万,对于婴儿的健康和监护成为重中之重,其中婴儿猝死综合征(Sudden Infant Death Syndrome),通常在婴儿睡眠时突然发生,这对婴儿睡眠环境尤其是睡眠姿势有着一定的要求,俯卧位睡眠极易增加猝死率,侧卧睡姿也会有同样的危险,仰卧睡眠能够减少SIDS [1] 的风险,这需要对姿势识别有着准确的判断,由于机器学习和深度学习的流行以及相关研究的进展,基于RGB图像的姿势识别在实用性和通用性方面变得更加强大,任志斌 [2] 提出一种基于模糊粗糙算法框架处理图像身体的遮挡和部分缺失,引入模糊粗糙集,采用属性约简的方法提高睡姿分类的速度,具有高效的性能;刘今越 [3] 等人提出了一种支持向量机SVM与遗传算法GA相结合解决睡姿中人体束缚和识别精度不高等问题;赵海文 [4] 等人利用柔性压力传感器采集坐卧姿势数据,使用YOLOv5对数据进行训练,实现了精确的姿势识别;杨明健 [5] 利用OpenPose姿态估计对睡眠图像进行人体关键点定位来进行睡姿判断,解决了背景复杂的问题并具有较高的识别率;周志文 [6] 基于人工神经网络(ANN)设计对应网络结构,将网络隐藏层节点数测试优化后设置网络参数训练,提高了训练与识别的准确率与效率,石用伍 [7] 等人利用心冲击图信号空间和时域的特点在深度学习睡姿检测模型引入注意力机制,完成对睡姿有效、无扰和准确的监测。
随着深度学习和卷积神经网络(CNN)的兴起,对于姿态识别的检测效果有了显著的提高,但是仍然存在一些问题。现有的模型对于监测方面,往往在准确度和实时性上不能保持平衡,通过加深网络层数提高准确性,这样导致网络复杂不能满足监测速度;通过网络剪枝和量化去加快推理速度反而检测精度大幅下降;对于监测异常睡姿任务而言,还需要较低的误报率。
针对以上问题,本文提出一种基于YOLOv5与OpenPose [8] 的双模型婴儿睡姿识别方法,该方法结合了两者的优点能兼顾快速的目标定位和精确的识别能力,提供更全面的场景理解和信息,提高系统的灵活性和适应性,通过感知机与门将两者结合,形成并联系统降低误报率。本文方法在具备较高准确性和实时性的同时能降低对婴儿监护的误报率。
2. YOLOv5与OpenPose混合模型
为了减少监护人不必要的检查和干预,在准确度一定的同时,还具备相当的低误报率。本研究提出了一种创新的方法,将两个模型结合,输入图像在分别经过改进后的YOLOv5和OpenPose得到婴儿姿态正常或异常判断,通过感知机与门,结合两者的输出,通过控制与门阈值(threshold)和权重(weight),当两者结果判断都为真则为真,其余为假,从而完成婴儿睡姿检测的任务,总的流程图如图1所示。
2.1. YOLOv5模型
YOLOv5是一种快速而有效的目标检测模型,其主要由Iuput、Backbone、Neck和Head四部分组成,图像通过输入层进行处理并发送到主干进行特征提取,Backbone获得不同大小的特征图,然后由特征融合网络(Neck)融合这些特征,生成三个特征图送入预测头(Head),使用预设的先验框对特征图中的每个像素执行置信度计算和边界框回归,以获得包括对象类别、类别置信度、框坐标、宽度和高度信息的多维数组(BBoxes),通过设置相应的阈值(confthreshold, objthreshold)来过滤阵列中的无用信息,并执行非最大值抑制(NMS)过程,可以输出最终的检测信息。
2.1.1. 主干网络
采用ShuffleNetV2 [9] 代替原本的C3网络,通过引入通道重排操作,将卷积操作的计算量大大降低,具有较高的准确性,采用分组卷积将模型参数量显著减少,降低模型复杂度,具有较高的部署和推理效率,其高速度的推理适用于对实时性要求较高的任务,如实时目标检测的视频分析,如图2所示。
在给定一个1 × 1的卷积层,其输入维度是c1,输出维度是c2,特征图(feature map)尺寸为
,其MAC值为
(1)
分组卷积(Group Convolution)可以减少模型的FLOPs,但是当FLOPs值固定时,分组g越多,MAC也会越大,分组卷积的FLOPs计算公式如下:
(2)
当FLOPs值固定,输入的特征图尺寸固定
时,MAC与分组数量g成正比,
(3)
在ShuffleNetV2使用一种新操作channel split,将原始通道拆成两部分,模型碎片化降低并行度,其中一个分支保持不变,另一个分支包含三个卷积操作,这些卷积操作使其输入输出的通道数保持一致,减少MAC,在1 × 1卷积不再分组,减少分组对MAC的影响,同时channel split操作本身就已经将通道分成两组,经过卷积之后,ShuffleNetV2会将两个分支拼接在一起(concat),而不是采用Add操作,从而减少元素级操作,最后 ShuffleNetV2再用channel shuffle混合通道。

Figure 2. ShuffleNetV2 network structure
图2. ShuffleNetV2网络结构
2.1.2. 注意力机制
为了使网络更加关注重要的特征,比如婴儿的头部、身躯、手脚等等,在复杂的环境中也能使网络抑制不重要的特征,使网络对噪声和干扰更加鲁棒,加快模型的收敛速度。
CA [10] 注意力机制(如图3所示)对输入的特征图进行平均池化,得到每个通道的全局平均值,获得宽度和高度两个方向的特征图:
(4)
(5)
将上方的全局平均池化结果输入到一个全连接层中,进行特征的映射和变换,然后将特征图批量归一化通过Sigmoid激活函数得到形如
的特征图
:
(6)
接着将特征图
进行1 × 1的卷积得到特征图
和
,再经Sigmoid激活函数得到特征图在高度和宽度上注意力权重:
(7)
(8)
最后CA注意力机制的输出公式为
(9)
2.2. 基于OpenPose的骨架分类
OpenPose通过输入图像或视频,经主干网络VGG-19前10层初始化并进行微调,生成一组特征映射F作为下一阶段的输入,在这一阶段会产生一组关节点置信度映射PCM (Part Confidence Maps)和部位亲和场PAF (Part Affinity Fields),其中PCM表示像素在关节点的高斯响应,即
,PAF表示像素点在骨架中的走向,即
,其中
和
为第一阶段推理的CNNs,在随后每一个阶段,都会将前一阶段的预测与特征F相结合,产生精细的预测。在前后传播的过程中,OpenPose会输出一个特征图,每一个像素对应一个可能的关节点,通过对特征图进行解码和阈值处理,得出关节点的粗略位置,根据关节点之间的空间关系,OpenPose输出表示人体姿态的关节点坐标,每一个关节点都由一个二维坐标(x, y)表示,
通过关节点之间的连接,可以形成人体的姿态骨架,本文模型中用24个关节点,如图4所示,0-鼻子,1-脖子,2-右肩,3-右肘,4-右手腕,5-左肩,6-左肘,7-左手腕,8-胯中心,9-右臀,10-右膝,11-右踝,12-左胯,13-左膝,14-左踝,15-右眼,16-左眼,17-右耳,18-左耳,19-左脚内,20-左脚外,21-左脚跟,22-右脚内,23-右脚外,24-右脚跟。
2.3. 感知机与门
感知机(perceptron)可接受多个输入信号,本文将两个模型输出的结果作为输入,输出一个信号,如图5所示,x1、x2是输入信号,y是输出信号,w1、w2是权重,输入信号被送往神经元分别乘以固定的权重,计算传送过来的信号总和,只有当总和超过阈值
(threshold)才会输出1,确定一分类超平面,其感知机数学过程亦可定义为:
(10)
与门表现两个输入均为1时输出为1,其他情况输出为0,根据式(10)训练一个感知机求解超平面方程来表示与门,根据输出y值将结果分为“0”和“1”两类,来代表婴儿睡姿正常和异常的状态,如图6所示。
3. 实验
本文使用的计算机硬件设备有:Intel®CoreTMi5—8300CPU,NVIDIA GeForce GTX 1060 GPU,8GB内存。在64位Windows 11的实验环境下进行实验。
3.1. 数据集和评价标准
由于没有公开的婴儿睡姿数据集,本文使用网络爬虫技术爬取婴儿睡姿图片,经过筛选、过滤与整理,通过数据增强将自制数据集扩充到数千张,以提高模型的泛化性,将收集的图片分成三类,分别为仰卧、侧卧和俯卧,如图7所示,共有3075多张,以7:3的比例划分为训练集和测试集,其中趴卧侧卧共有2100张,俯卧共有975张,将其2153张作为训练集,922张作为测试集。
本文使用准确率P (Precision)、帧率FPS(frame per second)以及误报率FPR (False Positive Rate)指标进行性能评估,表达式为P = TP/(TP + FP),FPR = FP/(FP + TN),其中TP (True Positive)模型正确检测异常睡姿,FP (False Positive)模型错误将正常睡姿误分类为异常睡姿,TN (True Negative)模型正确检测正常睡姿。
3.2. 基于YOLOv5的婴儿睡姿检测
将YOLOv5与其他主流目标检测算法如YOLOv4、SSD和Faster RCNN进行了对比,通过表1的综合性能评估可发现YOLOv5在多个关键指标上表现出色。相较于Faster RCNN和SSD,虽然它们在准确率方面较优,但无法满足实时监测的需求,而YOLOv5在保持高准确率的同时实现了更为出色的检测速率。虽然YOLOv4在准确率、召回率、平均精度和实时性方面表现稳定,但相较于YOLOv5仍存在一些性能上的差距。因此,YOLOv5在综合性能和实时性方面都取得了显著的优势,其设计理念和算法架构在目标检测领域展现了独特的特色。

Table 1. Comparison between YOLOv5 and different detection algorithms
表1. YOLOv5与不同检测算法对比
3.3. 基于OpenPose的婴儿检测
在基于OpenPose的婴儿检测中,将婴儿提取骨骼特征输入GoogLeNet [11] 网络模型进行训练,经过300次迭代训练,模型的准确性达到92.8%,与其他AlexNet [12] 、VggNet [13] 与ResNet [14] 相比,具有高效的准确性,且参数量不大,计算复杂度较低,模型总体性能比其他网络更好,如下表2。

Table 2. Comparison of four different models based on OpenPose
表2. 基于OpenPose四个不同模型对比
3.4. 消融实验
为了进一步提高YOLOv5的准确性和检测速率,在自建的数据集上做了消融实验,如下表3,在YOLOv5中将主干网络C3替换成轻量型ShuffleNetV2网络,或者在网络添加CA注意力机制模块。实验中设置相同的学习率、批量大小和迭代次数等参数,当更换轻量型ShuffleNetV2网络后可以看出模型在监测速度上提升了16个点,而添加注意力机制使得模型提高了准确率3.1个百分点,同时更改这两方面,改进后的YOLOv5相比原模型提高准确率3.5%和帧率5 fps。

Table 3. Ablation results of YOLOv5
表3. YOLOv5消融实验结果
在同一条件下,将本文的算法模型分别和原型YOLOv5、改进后的YOLOv5和OpenPose算法进行对比,如下表4所示,本文算法通过感知机与门结合改进YOLOv5和OpenPose,相比较其他三个模型,提高一定的准确性的同时降低监测的误报率,也能满足实时监测的要求,图8为部分婴儿睡姿检测结果和混淆矩阵的可视化,可见本文算法在婴儿睡姿识别方面有着出色的表现,由混淆矩阵可得在误报率上仅为2%,意味着在监测过程中,仅有极少数误报事件,几乎不会发生虚警。这一结果反映了本文监测系统的综合性能得到显著提高。

Table 4. Results of different mixed models on infant sleeping position recognition
表4. 不同混合模型对婴儿睡姿识别结果
4. 结束语
本文基于YOLOv5和OpenPose双模型结构成功构建了婴儿睡姿识别模型,并在自制婴儿睡姿数据集实验中取得了显著的成果。采用了轻量型ShuffleNetV2作为YOLOv5主干网络,同时引入了CA注意力模块,以及对OpenPose人体姿态骨骼图的GoogleNet网络训练,为了进一步提高系统的准确性和减少误报率,引入了感知机与门,将两个模型的信息有效融合,为系统决策提供了更加综合和可靠的依据。
实验结果表明,本文模型在婴儿睡姿检测中达到了94.7%的准确率,仅有2.0%的误报率。而且,监测速度足以满足实时检测的需求,婴儿睡姿监测系统的性能和可靠性也得到了有效的提升。未来,我们将进一步优化和拓展这一模型,以更好地满足婴儿护理和监测的需求,为社会健康事业做出更多贡献。