发明内容
本申请实施例的目的在于提供一种异常行为识别方法、装置、电子设备及存储介质,用于改善异常行为识别的正确率较低的问题。
本申请实施例提供了一种异常行为识别方法,包括:获得针对人体采集的视频流,并从视频流中提取出人体关键点,人体关键点表征人体的骨骼和关节;对人体关键点进行降维处理,获得降维后的特征值,特征值表征人体的动态特征;使用训练后的单类支持向量机对降维后的特征值进行分类,获得分类结果,分类结果表征视频流中的人体是否存在异常行为。在上述的实现过程中,从视频流中提取出人体关键点,并使用单类支持向量机对人体关键点降维处理后的特征值进行分类,由于单类支持向量机是使用超球面对特征值进行分类的,更容易找到特征空间数据的球面边界,从而降低了正负样本不均衡所带来的影响,有效地提高了异常行为识别的正确率。
可选地,在本申请实施例中,对人体关键点进行降维处理,包括:使用主成分分析算法或者动态模型分解算法对人体关键点进行降维处理。在上述的实现过程中,通过使用主成分分析算法或者动态模型分解算法对人体关键点进行降维处理,从而减少了获取特征值和特征向量的计算量,有效地提高了异常行为识别的速度。
可选地,在本申请实施例中,对人体关键点进行降维处理,包括:判断人体关键点的矩阵维度是否大于预设维度;若是,则使用奇异值分解对人体关键点进行降维处理。在上述的实现过程中,通过在人体关键点的矩阵维度是否大于预设维度时,才使用奇异值分解对人体关键点进行降维处理,从而减少获取特征值和特征向量的计算量的同时,增加了灵活性,针对矩阵维度较小的关键点数据可以直接计算,保证了对矩阵维度较小的关键点数据进行异常行为识别的准确率,同时也有效地提高了异常行为识别的速度。
可选地,在本申请实施例中,从视频流中提取出人体关键点,包括:从视频流中提取出视频图像;使用神经网络模型从视频图像提取出人体关键点。
可选地,在本申请实施例中,在使用神经网络模型从视频图像提取出人体关键点之前,还包括:获得多个样本视频和多个人体模型,人体模型中包括与样本视频对应的人体关键点;以多个样本视频为训练数据,以多个人体模型中的人体关键点为训练标签,对神经网络进行训练,获得神经网络模型。
可选地,在本申请实施例中,在使用训练后的单类支持向量机对降维后的特征值进行分类之前,还包括:获得样本视频对应的分类标签,并使用主成分分析算法或者动态模型分解算法对样本视频对应的人体关键点进行降维处理,获得样本视频对应的特征值;以样本视频对应的特征值为训练数据,以样本视频对应的分类标签为训练标签,对单类支持向量机进行训练,获得训练后的单类支持向量机。
可选地,在本申请实施例中,在获得分类结果之后,还包括:判断分类结果是否为视频流中的人体存在异常行为;若是,则生成并输出预警信号。在上述的实现过程中,通过在分类结果为视频流中的人体存在异常行为时,才生成并输出预警信号,从而有效地减少了在异常情况发生时,无法采取相应的救助措施的概率。
本申请实施例还提供了一种异常行为识别装置,包括:人体关键提取模块,用于获得针对人体采集的视频流,并从视频流中提取出人体关键点,人体关键点表征人体的骨骼和关节;降维特征获得模块,用于对人体关键点进行降维处理,获得降维后的特征值,特征值表征人体的动态特征;分类结果获得模块,用于使用训练后的单类支持向量机对降维后的特征值进行分类,获得分类结果,分类结果表征视频流中的人体是否存在异常行为。
可选地,在本申请实施例中,降维特征获得模块,包括:第一降维处理模块,用于使用主成分分析算法或者动态模型分解算法对人体关键点进行降维处理。
可选地,在本申请实施例中,降维特征获得模块,包括:矩阵维度判断模块,用于判断人体关键点的矩阵维度是否大于预设维度;第二降维处理模块,用于若人体关键点的矩阵维度大于预设维度,则使用奇异值分解对人体关键点进行降维处理。
可选地,在本申请实施例中,人体关键提取模块,包括:视频图像提取模块,用于从视频流中提取出视频图像;关键点提取模块,用于使用神经网络模型从视频图像提取出人体关键点。
可选地,在本申请实施例中,异常行为识别装置,还包括:视频模型获得模块,用于获得多个样本视频和多个人体模型,人体模型中包括与样本视频对应的人体关键点;网络模型获得模块,用于以多个样本视频为训练数据,以多个人体模型中的人体关键点为训练标签,对神经网络进行训练,获得神经网络模型。
可选地,在本申请实施例中,异常行为识别装置,还包括:特征值获得模块,用于获得样本视频对应的分类标签,并使用主成分分析算法或者动态模型分解算法对样本视频对应的人体关键点进行降维处理,获得样本视频对应的特征值;向量机训练模块,用于以样本视频对应的特征值为训练数据,以样本视频对应的分类标签为训练标签,对单类支持向量机进行训练,获得训练后的单类支持向量机。
可选地,在本申请实施例中,异常行为识别装置,还包括:分类结果判断模块,用于判断分类结果是否为视频流中的人体存在异常行为;信号生成输出模块,用于若分类结果是视频流中的人体存在异常行为,则生成并输出预警信号。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整的描述。
在介绍本申请实施例提供的异常行为识别方法之前,先介绍本申请实施例中所涉及的一些概念:
视频流(Video Streaming),又可以称为视频流数据,是指以流媒体的方式进行传输的视频数据,具体例如:视频文件以视频流的方式在网络上传输,以使该视频文件能够被作为一个稳定和连续的流处理,终端设备上的浏览器或浏览器插件能够在整个视频文件被传输完成前显示多媒体数据。
目标检测网络,是指对图像中的目标对象进行检测的神经网络,即检测出图像中的目标对象,并给出目标对象在图像中的位置范围、分类和概率,位置范围具体可以为检测框的形式标注,分类是指目标对象的具体类别,概率是指检测框中的目标对象为具体类别的概率。
区域卷积神经网络(Region Convolutional Neural Network,RCNN),是第一个成功将深度学习应用到目标检测上的算法;RCNN基于卷积神经网络、线性回归和支持向量机等算法实现目标检测。
奇异值分解(Singular Value Decomposition,SVD),是指线性代数中一种重要的矩阵分解,奇异值分解在某些方面与对称矩阵或厄米矩阵基于特征向量的对角化类似,然而这两种矩阵分解尽管有其相关性,但还是有明显的不同,对称阵特征向量分解的基础是谱分析,而奇异值分解则是谱分析理论在任意矩阵上的推广。
支持向量机(Support Vector Machine,SVM),是指一种监督式的机器学***面,从而实现对样本进行分类或回归分析,那些在间隔区边缘的训练样本点即为支持向量。SVM在高维或无限维空间中构造超平面或超平面集合,SVM可以用于分类、回归或其他任务;直观来说,分类边界距离最近的训练数据点越远越好,因为这样可以缩小分类器的泛化误差。
需要说明的是,本申请实施例提供的异常行为识别方法可以被电子设备执行,这里的电子设备是指具有执行计算机程序功能的设备终端或者服务器;服务器是指通过网络提供计算服务的设备,服务器例如:x86服务器以及非x86服务器,非x86服务器包括:大型机、小型机和UNIX服务器。
在介绍本申请实施例提供的异常行为识别方法之前,先介绍该异常行为识别方法适用的应用场景,这里的应用场景包括但不限于:通过公共场所摄像头拍摄的视频来识别人群中是否有异常行为,例如:通过医院或者养老院中的监控拍摄的视频来识别老人们是否有摔倒或者跌落等等。
请参见图1示出的本申请实施例提供的异常行为识别方法的流程示意图;该异常行为识别方法的主要思路是,从视频流中提取出人体关键点,并使用单类支持向量机对人体关键点降维处理后的特征值进行分类,由于单类支持向量机是使用超球面对特征值进行分类的,更容易找到特征空间数据的球面边界,从而降低了正负样本不均衡所带来的影响,有效地提高了异常行为识别的正确率;上述的异常行为识别方法可以包括:
步骤S110:获得针对人体采集的视频流,并从视频流中提取出人体关键点。
人体关键点可以表征人体的骨骼和关节,此处的人体关键点例如:视频流的视频帧中标识出头、颈、肩、肘、手、臀、膝、脚等关键部位的点。
上述步骤S110中的获得针对人体采集的视频流的实施方式有很多种,包括但不限于:第一种获得方式,使用摄像机、录像机或彩色照相机等采集设备对目标对象进行拍摄,获得视频流数据;然后该采集设备向电子设备发送视频流数据,然后电子设备接收采集设备发送的视频流数据;第二种获得方式,从视频服务器的文件***、数据库或者移动存储设备中获取视频流数据。
上述步骤S110中的从视频流中提取出人体关键点的实施方式有很多种,包括但不限于如下几种:第一种实施方式,直接从视频流中提取出每个视频帧,并将视频帧作为视频图像,使用关键点检测神经网络从视频帧的完整视频图像中提取出人体关键点;其中,可以使用的关键点检测神经网络包括:OpenPose网络和级联金字塔网络(Cascaded PyramidNetwork,CPN)等等。第二种实施方式,先使用目标检测网络从视频流的每个视频帧中检测出包括人体区域的视频图像,其中,可以使用的目标检测网络包括:RCNN、fast RCNN和faster RCNN等网络;然后再使用关键点检测神经网络从人体区域的视频图像中提取出人体关键点;该实施方式具体例如:从视频流的每个视频帧中提取出包括人体区域的视频图像,再使用神经网络模型从视频图像提取出人体关键点;此处的神经网络模型可以采用深度神经网络(Deep Neural Network,DNN),该DNN具体可以包括:VGG16、VGG19、ResNet12、ResNet18、ResNet50、ResNet101、Wide ResNet-28-10网络、Inception v1、Inception v2或者Inception v3等等网络。
可以理解的是,在使用上述的神经网络模型之前,还需要训练该神经网络模型,由于该神经网络模型的具体训练与下面的单类支持向量机训练过程联系较为紧密,因此,该神经网络模型和单类支持向量机的训练方式将在后面详细地描述。
在步骤S110之后,执行步骤S120:对人体关键点进行降维处理,获得降维后的特征值,该特征值表征人体的动态特征。
请参见图2示出的本申请实施例提供的视频处理过程的示意图;在具体的实践过程中,可以使用算法运行软件工具包来实现图2中的视频处理过程,具体可以使用的算法运行软件工具包括:PyCharm软件、Anaconda软件、OpenCV程序库、开源的深度学习框架Pytorch和可视化工具等等,当然还可以使用python-sklearn库中的支持向量分类函数等等。上述步骤S120的实施方式有很多种,包括但不限于如下几种:
第一种实施方式,使用降维算法对人体关键点进行降维处理,可以使用的降维算法包括:主成分分析算法或者动态模型分解算法等等;该实施方式可以包括:
步骤S121:使用主成分分析(Principal Component Analysis,PCA)算法或者动态模型分解(Dynamic Mode Decomposition,DMD)算法对人体关键点进行降维处理,获得降维后的特征值。
上述步骤S121的实施方式例如:可以将从视频流中提取出的一系列连续的人体关键点看作是一个类似于或者接近于线性动力***的动态***;该动态***中的一系列连续的人体关键点是包含有频率信息的,PCA算法和DMD算法在本质上是相同的,都能够对线性动力***进行降维,然而,使用PCA算法是难以从一系列连续的人体关键点中提取出频率信息的,而使用DMD算法能够很好地提取出一系列连续的人体关键点中的频率信息;由于提取的特征值中包括频率信息,能够有效地提高对特征值分类的预测精确度,使用单类支持向量机对包括频率信息的特征值进行分类的准确率会更高。
下面对上述的DMD算法进行详细地介绍,DMD算法又被称为动态模式分解,是用来对线性***进行降维的一种算法,可以利用随时间增长、衰减和振荡的相干结构来求解或近似动力学***;可以将相干结构称为DMD模式。换句话说,DMD将动力学***转换为模式的叠加,每个模式的强度由特征值控制。假设人体关键点共有M个,对这M个特征点(即人体关键点)采样N次(即N个视频帧),可以得到一个尺寸为M×N的矩阵,这个M×N的矩阵可以理解为时间序列矩阵。该时间序列矩阵可以使用X表示,在X矩阵基础上构建两个子矩阵X (n-1)和Xn,并且这两个子矩阵的关系可以表示为Xn=AXn-1;其中,A是从时间tn-1到tn的变换系数。
第二种实施方式,在人体关键点的矩阵维度大于预设维度(例如:20、30或者50)时,才使用奇异值分解进行降维处理,该实施方式可以包括:
步骤S122:判断人体关键点的矩阵维度是否大于预设维度。
上述步骤S122的实施方式例如:上面提取出的人体关键点的数据可以使用矩阵的形式表示,如果人体关键点的矩阵维度非常大,那么计算人体关键点的数据矩阵的特征值和特征向量就会非常困难,其计算成本也会非常高。因此,可以先判断人体关键点的矩阵维度是否大于预设维度,如果人体关键点的矩阵维度是否大于预设维度,再对人体关键点进行降维处理,从而有效地减少获取特征值和特征向量的计算量。其中,上述的预设维度可以根据具体情况进行设置,例如将预设维度设置为20、30或者50等。
步骤S123:若人体关键点的矩阵维度大于预设维度,则使用奇异值分解对人体关键点进行降维处理,获得降维后的特征值。
上述步骤S123的实施方式例如:当人体关键点对应的时间序列矩阵X的矩阵维度非常大时,即人体关键点的矩阵维度大于预设维度,计算该矩阵的特征值和特征向量会十分困难,此时可以采用奇异值分解(SVD)对人体关键点进行降维处理,并且保留头r个序列,这样计算特征值和特征向量会变得非常迅速,从而获得降维后的特征值。上述过程使用公式可以表示为:
其中,是A矩阵的近似矩阵,特征值是特征向量的动态特性,实部代表增长率,虚部表示它的频率,/>矩阵和A矩阵的前r个序列的特征值和特征向量是相同的,但是这两个矩阵的尺寸大小有很大差异,所以计算速度得到大幅提升。
在步骤S120之后,执行步骤S130:使用训练后的单类支持向量机对降维后的特征值进行分类,获得分类结果,分类结果表征视频流中的人体是否存在异常行为。
上述步骤S130的实施方式例如:如果训练数据集只包括正样本数据(例如只包括老人躺着睡觉或者休息的视频),或者包括负样本数据的数量非常少(例如只有一两个老人摔倒或者跌倒的视频),此时可以使用单类支持向量机对降维后的特征值进行分类,获得分类结果。单类支持向量机能够找到特征空间数据的球面边界,使超球面的体积最小,使得异常数据的影响降到最小,从而有效提高对降维后的特征值进行分类的正确率。当然在具体的实践过程中,如果正样本数据和负样本数据的数量大于相等,也可以使用支持向量机对降维后的特征值进行分类,获得分类结果。
在上述的实现过程中,首先从视频流中提取出人体关键点,并对人体关键点进行降维处理,获得降维后的特征值,然后使用单类支持向量机对人体关键点降维处理后的特征值进行分类,获得表征视频流中的人体是否存在异常行为的分类结果。也就是说,由于单类支持向量机(One class SVM)是使用超球面对特征值进行分类的,使用单类支持向量机对人体关键点降维处理后的特征值进行分类,更容易找到特征空间数据的球面边界,从而降低了正负样本不均衡所带来的影响,有效地提高了异常行为识别的正确率。可以理解的是,在上述的异常行为识别方法中,通过使用动态模型分解(DMD)算法充分地提取了视频流的连续视频帧中体现时序信息和空间信息的人体关键点,再使用单类支持向量机将体现时序信息和空间信息的人体关键点进行分类,有效地结合了动态模型分解算法和单类支持向量机,从而进一步地提高了异常行为识别的正确率。
可选地,在本申请实施例中,在获得分类结果之后,还可以根据分类结果进行预警,该实施方式可以包括:判断分类结果是否为视频流中的人体存在异常行为;若分类结果是视频流中的人体存在异常行为,则生成并输出预警信号;具体例如:若分类结果为通过监控视频流中识别出老人在房间里跌倒,那么老人的行为就被认为是超出正常范围的异常行为,此时需要发出预警信息以便及时救治。在上述的实现过程中,通过在分类结果为视频流中的人体存在异常行为时,才生成并输出预警信号,从而有效地减少了在异常情况发生时,无法采取相应的救助措施的概率。
请参见图3示出的本申请实施例提供的训练神经网络模型和单类支持向量机的流程示意图;可选地,上面提到,在使用神经网络模型和单类支持向量机之前,还需要训练上述的神经网络模型和单类支持向量机,具体的训练方式可以包括:
步骤S210:获得多个样本视频和多个人体模型,人体模型中包括与样本视频对应的人体关键点。
上述步骤S210的实施方式包括:上述的多个样本视频和多个人体模型均是对神经网络进行训练的,因此,上述的多个样本视频和多个人体模型可以被称作训练数据集;该训练数据集可以采用现有的数据集,具体例如:使用的训练数据集是卡内基梅隆大学公开的数据集含有2235个视频序列,其子集含有664个视频序列分为8个动作类别,上述选取的数据集包含四种行为类型模式文件,其中,每个人体模型均包含29个关键点。当然,在具体的实施过程中,也可以人工采集样本视频,并使用程序提取样本视频中的人体关键点;其中,从样本视频中提取人体关键点的实施原理与上面步骤S110的实施原理类似,因此,这里不再说明其实施原理和实施方式,如有不清楚的地方,可以参考对步骤S110的描述。
步骤S220:以多个样本视频为训练数据,以多个人体模型中的人体关键点为训练标签,对神经网络进行训练,获得神经网络模型。
上述步骤S220的实施方式例如:使用神经网络预测样本视频中的人体关键点,获得预测关键点;然后计算预测关键点和人体关键点之间的损失值,再根据该损失值更新神经网络的网络权重参数,直到损失值小于预设比例或者训练批次(epoch)数量大于预设阈值时,即可获得训练后的神经网络模型。其中,上述的预设比例和预设阈值可以根据具体情况进行设置,例如设置为0.1、0.5、1或者10等等。
可选地,在本申请实施例中,在使用单类支持向量机之前,还需要训练单类支持向量机,该单类支持向量机的具体训练方式可以包括:
步骤S230:获得样本视频对应的分类标签,该分类标签表示该样本视频中的人体行为是否存在异常的类别。
其中,该步骤S230的实施原理和实施方式与步骤S210的实施原理和实施方式是类似的,因此,这里不再说明其实施原理和实施方式,如有不清楚的地方,可以参考对步骤S210的描述。
步骤S240:使用主成分分析算法或者动态模型分解算法对样本视频对应的人体关键点进行降维处理,获得样本视频对应的特征值。
其中,该步骤S240的实施原理和实施方式与步骤S121的实施原理和实施方式是类似的,因此,这里不再说明其实施原理和实施方式,如有不清楚的地方,可以参考对步骤S121的描述。
步骤S250:以样本视频对应的特征值为训练数据,以样本视频对应的分类标签为训练标签,对单类支持向量机进行训练,获得训练后的单类支持向量机。
上述步骤S250的实施方式例如:使用单类支持向量机计算特征值对应的预测类别,并计算预测类别与分类标签之间的损失值,再根据该损失值更新单类支持向量机的网络权重参数,直到损失值小于预设比例或者训练批次(epoch)数量大于预设阈值时,即可获得训练后的单类支持向量机;同上,上述的预设比例和预设阈值也可以根据具体情况进行设置。
请参见图4示出的本申请实施例提供的异常行为识别装置的结构示意图;本申请实施例提供了一种异常行为识别装置300,包括:
人体关键提取模块310,用于获得针对人体采集的视频流,并从视频流中提取出人体关键点,人体关键点表征人体的骨骼和关节。
降维特征获得模块320,用于对人体关键点进行降维处理,获得降维后的特征值,特征值表征人体的动态特征。
分类结果获得模块330,用于使用训练后的单类支持向量机对降维后的特征值进行分类,获得分类结果,分类结果表征视频流中的人体是否存在异常行为。
可选地,在本申请实施例中,降维特征获得模块,包括:
第一降维处理模块,用于使用主成分分析算法或者动态模型分解算法对人体关键点进行降维处理。
可选地,在本申请实施例中,降维特征获得模块,包括:
矩阵维度判断模块,用于判断人体关键点的矩阵维度是否大于预设维度。
第二降维处理模块,用于若人体关键点的矩阵维度大于预设维度,则使用奇异值分解对人体关键点进行降维处理。
可选地,在本申请实施例中,人体关键提取模块,包括:
视频图像提取模块,用于从视频流中提取出视频图像。
关键点提取模块,用于使用神经网络模型从视频图像提取出人体关键点。
可选地,在本申请实施例中,异常行为识别装置,还包括:
视频模型获得模块,用于获得多个样本视频和多个人体模型,人体模型中包括与样本视频对应的人体关键点。
网络模型获得模块,用于以多个样本视频为训练数据,以多个人体模型中的人体关键点为训练标签,对神经网络进行训练,获得神经网络模型。
可选地,在本申请实施例中,异常行为识别装置,还可以包括:
特征值获得模块,用于获得样本视频对应的分类标签,并使用主成分分析算法或者动态模型分解算法对样本视频对应的人体关键点进行降维处理,获得样本视频对应的特征值。
向量机训练模块,用于以样本视频对应的特征值为训练数据,以样本视频对应的分类标签为训练标签,对单类支持向量机进行训练,获得训练后的单类支持向量机。
可选地,在本申请实施例中,该异常行为识别装置,还可以包括:
分类结果判断模块,用于判断分类结果是否为视频流中的人体存在异常行为。
信号生成输出模块,用于若分类结果是视频流中的人体存在异常行为,则生成并输出预警信号。
应理解的是,该装置与上述的异常行为识别方法实施例对应,能够执行上述方法实施例涉及的各个步骤,该装置具体的功能可以参见上文中的描述,为避免重复,此处适当省略详细描述。
请参见图5示出的本申请实施例提供的电子设备的结构示意图。本申请实施例提供的一种电子设备400,包括:处理器410和存储器420,存储器420存储有处理器410可执行的机器可读指令,机器可读指令被处理器410执行时执行如上的方法。
本申请实施例还提供了一种存储介质430,该存储介质430上存储有计算机程序,该计算机程序被处理器410运行时执行如上的方法。
其中,存储介质430可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器,电可擦除可编程只读存储器,可擦除可编程只读存储器,可编程只读存储器,只读存储器,磁存储器,快闪存储器,磁盘或光盘。
以上的描述,仅为本申请实施例的可选实施方式,但本申请实施例的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请实施例揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本申请实施例的保护范围之内。