基于光流法和卷积神经网络的跌倒行为检测方法*
2021-05-10孙博文杨大为
孙博文,祁 燕,杨大为
(沈阳理工大学信息科学与工程学院,沈阳110159)
1 引 言
随着室内摄像设备的普及,人们对智能视频监控的需求越来越高。跌倒行为识别作为智能监控系统的一部分,可以在人体发生跌倒行为时及时报警来保障人身安全。目前室内人体跌倒行为检测方法可划分为两大类:第一类是基于传感器的跌倒检测方法,这类方法一般需要人体穿戴设备,设备上通常装有传感器,人体发生跌倒行为时传感器会发出警报从而实现跌倒检测。由于前一类方法需要佩戴传感器设备,极为不便,于是出现了第二类方法:基于计算机视觉的检测方法。基于计算机视觉的检测法最大优点是不需要穿戴任何传感器设备,而是从视频数据中挖掘出有用的信息并进行分析。视频数据来源于安装在室内的监控摄像机,采集人在室内的各种活动信息,然后通过一系列算法识别人体的各种行为,进而检测出跌倒行为[1]。在提取人体运动特征方面使用的方法可分为两种:第一种方法选择提取人体的3D 特征,刘李正提出了基于Kinect 相机的人体跌倒检测算法研究[2]。提取人体3D 特征的方法在人体侧向对着摄像设备时会影响检测效果,于是又出现了第二种使用计算机视觉的方法,该方法从监控摄像头拍摄的视频中提取特征。在吕艳等人提出的采用卷积神经网络的老年人跌倒检测系统设计中,提取特征的方式选用了深度神经网络加分类器的组合[3]。
基于计算机视觉的检测算法存在诸多优势,它不需要用户时刻携带设备、不受使用环境的限制,而随着当今社会的发展,在很多地方都装有监控摄像头,因此其应用场景也更加广泛[4]。
结合上述比较,在此对基于计算机视觉的检测算法提出改进,使用光流法对监控视频进行预处理,并且修改卷积神经网络结构的第一层,最后通过实验验证这一改进方法对提升模型预测准确性的效果。
2 跌倒检测方法新设计
在新设计中,将光流法和卷积神经网络相结合来实现对人体跌倒行为的检测,其整体设计如图1所示。首先监控摄像头拍摄的视频经过光流图像生成器生成光流图像;生成的光流图像放入卷积神经网络(CNN)中进行特征提取;最后由分类器给出分析结果(跌倒行为还是非跌倒行为)。
2.1 光流法
光流是描述视频序列中连续两帧之间像素相对位移的矢量场。估计该矢量场的方法即称为光流法,可用来获得对象的运动特征[5]。
使用光流图像作为模型的输入数据可以消除背景环境对于跌倒行为检测的影响。由于光流图像只反映运动信息的特性,模型在提取特征时可以忽略背景环境的影响,从而加快模型的检测速度和提升模型预测的准确率。
图2 显示了由摄像头拍摄到的人体跌倒行为动作序列,用光流图像生成器对这一动作序列图像进行处理,得到的光流图如图3 所示。如图可见,光流图像是通过灰度值的差异来反应图像中的瞬时运动速度,由此法可以消除背景环境的影响。
图2 摄像头拍摄的人体跌倒行为动作序列
图3 跌倒行为动作序列生成的光流图像
2.2 数据集
模型训练过程使用了三个数据集。其中URFD、UCF-101 为两个公共数据集,分别针对人体日常行为与跌倒行为。两者的数据量差异如表1 所示。
表1 不同数据集的数据量差异
UCF-101 数据集涵盖了13320 个视频,包含了101 种人类动作行为;URFD 仅包含30 个跌倒视频和30 个日常行为视频[6]。在训练模型的过程中由于输入数据的正例与反例数量差距过大会极大影响训练效果。故此采用迁移学习的方法,以UCF-101 数据集预训练模型,使模型具有识别日常行为的能力后再加入URFD 数据集进行跌倒行为的训练。
除了使用两个公共数据集外,在此制作了一个用于跌倒行为检测的数据集。自制数据集由三位演员拍摄而成,共包含60 段视频。其中30 段为跌倒视频,30 段视频日常行为视频。在日常行为视频中,为增加数据集的复杂性,增加了坐下、弯腰和深蹲等与跌倒行为极易混淆的日常行为,具体拍摄情况如图4 所示。
图4 自制数据集新增日常行为拍摄
2.3 跌倒行为模型训练
定义连续十张光流图片为一个动作序列,如图5 所示。这是考虑到大部分监控摄像头拍摄视频的帧率为30 帧/s,设定光流图像生成器中步长为10,即每隔10 帧生成一张光流图像,连续十张光流图像即涵盖了3 秒的人体运动时间,而跌倒行为从发生到结束的持续时间一般为2~3 秒,这样定义的运动序列可以完整地检测到跌倒行为的发生。
图5 动作序列定义
假设一段视频被划分为N 个光流图像,那么会得到N-10+1 个动作序列,作为模型的输入数据。
在损失函数方面,采用二元交叉熵函数作为模型的损失函数,该函数表示预测值与真实值之间的差值,以Lloss表示,定义如下:
新方案在原有二元交叉熵函数中增加了权值ωt与 ωp。ωt表示日常行为的权重,ωp表示跌倒行为的权重。
由于URFD 数据集跌倒行为视频与日常行为视频的数量差距不大,帮此预设ωt与ωp均为1。
在模型结构方面,采用VGG-16 作为模型的结构,但光流法的引入调整了VGG-16 的输入层。传统的VGG-16 输入层接受的是 224×224×3 的 RGB图像,新方案中的输入层调整为接受224×224×20的光流图像序列。其余各卷积层与传统的VGG-16结构一致。
在分类函数方面,跌倒检测模型输出结果为跌倒或非跌倒,使用softmax 函数,公式为:
Softmax 层可以把输入的数据映射到0~1 之间的实数,并且归一化保证和为1[7],此处设置阈值为0.5,模型预测值小于阈值分类为跌倒行为,大于阈值分类为非跌倒行为。
3 实验与结果分析
3.1 实验指标
为评价模型的准确率,此处定义以下指标:TP代表真正值,TN为真负值,FP为假正值,FN为假负值,其具体定义如表2 所示。
表2 实验用到的效果指标
定义sensitivity 为表示跌倒行为发生且被模型判定为跌倒行为的指标,以Ssen表示,公式为:
定义specificity 为没有发生跌倒行为且没有被模型判定为跌倒行为的指标,以Sspe表示,公式为:
定义precision 为准确率,即检查出的跌倒行为中有多少是准确的,以Ppre表示,公式为:
在实验结果中这一指标的数值较低,这是由于跌倒模型要对跌倒行为极其重视(即如果发生了跌倒行为,一定要检测出来否则会十分危险),模型为了达到较高的Sensitivity 值而牺牲了Precision。
定义accuracy 为模型整体上的分类效果,以Aacc表示,公式为:
3.2 实验结果
为了验证基于光流法和卷积神经网络的跌倒行为检测方法是否可准确检测人体跌倒行为,设计如下实验:
将URFD 数据集与自制数据集整合成新URFD数据集。为验证更大数据集是否可以解决模型过拟合问题,设置不同数据集下的对比实验,实验结果如表3 所示。
表3 不同数据集下各指标实验结果对比
在新数据集下的实验中,specificity、precision、accuracy 等实验指标均有所提升,大量数据集有助于模型取得更好的训练效果。模型在更大的新数据集下训练提升了模型的泛化能力,使得模型准确率得到提升。
为验证光流法是否可以提升跌倒检测模型检测的准确率,做如下实验:在使用相同数据集的条件下(均使用新数据集),对输入数据分别使用光流法处理和无光流法处理。得到的对比结果如表4 所示。
表4 有无光流法实验结果对比表
实验结果显示,使用光流图像作为卷积神经网络的输入数据可以提升模型的specificity、precision、accuracy 数值,提升模型整体的判断准确率。
实验又以新方法与Sven Kreiss 等人的PifPaf 方法[8]在URFD 数据集下做了对比试验,实验结果如表5 所示。
表5 新方法与PifPaf 法对比实验结果
由表5 可见,新方法与Sven Kreiss 等人提出的PifPaf 方法在实验结果上产生了较大差异。PifPaf 方法由两个部分组成,其中Pif(Part intensity field)方法用来定位人体躯干位置;Paf(Part association field)方法用来将身体各部分相互关联以形成完整的人体姿势,包含17 个关节,每个关节由x 和y 坐标以及置信度得分表示。Sven Kreiss 等人的方法precision达到了100%,证明其方法可以保证检查出的跌倒行为确实均为跌倒行为。而新方法在sensitivity 数值上达到了100%,证明本法可以检测出数据集中所有的跌倒行为。考虑到现实生活中的情形,一旦人体发生跌倒行为而系统没有检测到,会导致很严重的后果,故此本方法在实际应用中更加安全和可靠。
4 结 束 语
新设计一种检测方法,采用光流和卷积神经网络相结合的方式从监控摄像头拍摄的视频中准确检测人体跌倒行为。用光流法预算理数据,消除了人体行为图像的背景环境,简化了信息的获取;在卷积神经网络模型的训练策略上采用迁移学习方法,加强了训练效果;自制了跌倒行为数据集,并将其与URFD 数据集结合为新数据集,解决了模型过拟合的问题;设置三组对比试验,均显示了本方法可在日常行为中检测出跌倒行为并且有较好的准确率,在实际使用时也更加安全。然而由于光流法的使用需要满足亮度恒定不变的假设,因此在室内环境亮度变化较大时会影响检测效果,此问题在后续研究工作中有待进一步解决。