1. 引言
公共场合中存在很多道路隔离设施,对这些围栏进行重点监视,以便保护公民的生命财产安全,以及规范公共场所秩序。例如,在校园封闭管理下,可以避免学生翻越围栏、偷取外卖等现象 [1] ;在交通护栏、绿化隔离带等交通安全隔离设施是为实现人车分道、车车分道而设置的物理设施,若发生行人翻越,容易造成交通隐患;在展览馆、博物馆等展览设施为避免游客进入展览区,造成不必要的人员财产安全损失。相较于传统的人工监视,通过监控设备可以更全面更持久地对这些地方进行监测。
对于异常行为检测,一般分为特征提取和分类器识别两个部分。特征提取是指在原始信息中,提取关键信息,以便后续的行为分类;分类器识别是指,训练分类识别器后,针对特征提取到的关键信息对行人行为进行识别。针对异常行为问题,众多学者对此进行了研究,文献 [2] 中对异常行为中的各种方法进行了总结,基于CNN提取视频中的时空特征方法融合了外观和运动特征,能捕获到更多的正常和异常行为高级特征的差异,从而提升了检测效果;基于隐藏特征表示学习方法认为正常行为数据的潜在特征分布符合一定的规律,而异常行为的潜在特征则不符合该规律;基于联合生成器鉴别器检测异常的方法可以在广泛的训练步骤中产生稳定的结果,提高了算法的鲁棒性。文献 [3] 提出一种基于改进SSD (Single Shot Multi-box Detector)的人群异常行为检测算法,能够捕获空间位置之间的远程依赖关系,从而可以较好处理重叠遮挡问题。
针对异常行为的不均衡问题,文献 [4] 利用数据分布不均衡条件下的少数类过抽样算法处理不均衡数据集内少数类样本,算法将少数类样本作为中心,利用新生成的虚拟少数类样本改善不平衡数据集内数据不均匀分布情况;文献 [5] 提出了动态非线性惯性权重对PSO进行优化和一种非线性多分类均衡支持向量机BSVM,以减小由于样本量不均衡引起的误差;文献 [6] 使用改进的K-means聚类算法将原始数据集划分为不同的聚类簇,在聚类簇中使用改进的SMOTE算法对小类样本过采样,对聚类簇内的大类样本欠采样,使数据集平衡。然而,异常行为识别问题具有非线性和不均衡性的特点,这给传统模型存在以下技术缺陷:1) 异常行为通常表现出高度复杂的非线性模式,这种复杂性很难被传统线性模型所捕捉和描述。此外,对于基于核映射的方法,如何选择合适的核函数和核参数捕获异常行为判别潜在的判别信息也是一个较为棘手的问题。2) 类别不平衡问题方面:由于异常行为的数据往往相对较少,远远少于正常行为数据,因此在实际的异常检测任务中,会存在异常数据类别所占比例较小的情形,即训练数据存在着类别不平衡性。这一类别不平衡性问题,会导致异常行为检测模型偏向于捕捉到正常行为类别,从而容易导致误判或漏判异常行为数据。
为此,本文提出了一个基于间隔损失的神经网络模型,简称MarginNet模型。首先,为了捕捉数据中的非线性特征,采用神经网络来逼近数据的潜在分布。其次,引入间隔损失函数作为模型的损失函数,以提高模型的泛化能力。此外,为解决异常行为存在的不均衡性问题,引入不均衡因子,通过加权不同类别样本的损失值来平衡数据集,从而提高对异常行为的识别能力。在此基础上,构建了一个翻栏异常行为检测系统,用于实时监测和识别翻栏行为中的异常情况。
本文的组织结构如下:在第2节中,详细阐述了关键点特征提取与数据集构建的方法和过程。第3节中,提出了一种基于间隔损失神经网络MarginNet模型。在第4节中,描述了翻栏异常行为检测系统的设计流程,包括系统的架构和关键步骤。接着,在第5节中,展示了对本文所提出方法的实验结果进行的分析和讨论。最后,在总结和展望部分,对本文的研究内容进行了总结,并提出了未来的研究方向和改进的建议。
2. 人体姿势关键点特征提取与数据集构建
本文中,采用文件传输或摄像头获取视频流作为数据源,旨在进行人体行为检测。首先,利用OpenCV对视频进行处理,提取其中的关键图像帧。接下来,借助mediapipe人体姿势估计模块,对每个图像帧中的人体进行骨骼关键点的提取。这些骨骼关键点将被用于后续模型的行为分析和异常检测。通过这一流程,本文能够获取视频中的人体姿势信息,并为进一步的行为识别和异常检测提供基础数据。
Mediapipe模块原始关键点特征的总共33个位置。为了减少冗余信息,本文选择了与翻栏异常行为最相关的9个关键点位置作为人体姿势特征。图1展示了这些关键点,包括鼻子N、左肩膀LS、右肩膀RS、左胯LH、右胯RH、左膝LK、右膝RK、左脚踝LA和右脚踝RA。这些关键点在正常行为和异常行为(如翻越围栏)中具有显著的差异,提高后续模型对正常行为和异常行为的判别能力。
Figure 1. Skeleton map of human key point detection
图1. 人体关键点检测骨骼图
根据获得的人体姿势关键点特征,本文进行了人体异常行为数据集的构建,以用于模型的训练。数据集构建过程描述为:首先,对于每一个关键帧图像k,通过提取人体姿势关键点,构建样本特征向量
。这样的特征向量包含了关键点的位置信息,用来表示人体的姿势状态,特征构造如下
(1)
然后,根据关键帧图像k中人体行为是否异常,为样本
标注相应的输出标签
。在本文中,将正常行为标记为−1,异常翻栏行为标记为+1。最后,将场景中的所有关键帧图像进行处理,提取关键点特征并标注输出标签,构建完整的数据集
。其中,
表示样本的特征向量,
表示样本的输出标签,n表示总样本数量,
表示正常行为样本数量,
表示异常行为样本数量。
3. 基于间隔损失神经网络MarginNet模型
异常行为的复杂性和非线性特征使得传统的线性模型无法有效处理。为了解决这一问题,本文采用神经网络来捕捉数据中的非线性特征,并引入间隔损失函数以提高模型的泛化能力。进一步,提出了一个基于间隔损失的神经网络模型,简称MarginNet模型。接下来,将从网络非线性映射、损失函数与训练和决策输出阐述。
3.1. 网络非线性映射
MarginNet模型利用神经网络的非线性映射能力,能够有效地捕捉数据中的复杂关系和模式。通过神经网络的多层连接和激活函数的作用,MarginNet模型拥有学习和表示数据中非线性特征的能力,从而更加准确地识别异常行为。这种非线性映射能够将原始输入数据转化为高维特征空间中的新表示,使得MarginNet模型能够更好地探索数据中的内在模式和结构。
Figure 2. The network structure of MarginNet
图2. MarginNet模型网络结构
本文的神经网络采用全连接结构包括输入层、隐藏层和输出层,网络结构如图2所示。具体的网络结构描述如下:
输入层:为了将数据集中的样本特征应用于神经网络模型,本文将9个骨骼点的坐标信息作为输入层的特征向量。为了确保输入层的维度与特征向量一致,设置了9个神经元。
隐藏层:设计了一个包含三个隐藏层的神经网络结构,每个隐藏层由15个节点组成。在正向传播过程中,输入样本通过输入层进入隐藏层,并使用Relu函数作为激活函数进行非线性转换。具体地,样本通过输入层进入隐藏层,通过式(2)进行正向传播
(2)
其中,
是第
层的神经元输出,也是第
层的输入;
是第
层的权重系数;下标k为隐藏层的输入索引,下标l为隐藏层的输出索引;Relu激活函数
。
输出层:样本经过隐藏层后传向了输出层,本文在输出层设置了2个神经元,分别为正常行为和异常行为的预测置信度。这样,样本特征就完成了非线性到线性的映射。同时,样本完成了一次在神经网络的正向传播,输出可以作为预测值,计算得到和真实值的误差。
3.2. 损失函数和训练模型
与传统的交叉熵损失函数不同,MarginNet模型采用间隔损失函数作为优化目标,旨在增加正负样本之间的间隔,并使得模型对异常行为的分类更具鲁棒性。通过最小化间隔损失函数,MarginNet模型能够更好地划分正常行为和异常行为之间的决策边界,提高模型的泛化能力和异常行为的识别准确性。此外,由于异常行为的数据远远少于正常行为样本,导致训练数据存在类别不平衡性。本文将构造类别权重函数和加权最大间隔损失函数,来降低不均衡性对模型造成的影响。
为计算多数类(即正常行为类)和少数类(即异常行为类)的类内权重,通过式(3)构造类别权重函数
(3)
当类别为
时,为多数类的正常样本,那么样本权重
设置为1;当
时,为少数类的异常行为样本,那么样本权重
为设置为
,即所有样本数n除以少数类样本数
,少数类样本越少,那么该权重会越大。
由于异常行为识别中存在数据的不均衡性,为了缓解由此导致的训练偏差问题,本文可以使用加权间隔损失函数来解决。具体构造加权间隔损失函数构造如下
(4)
其中,
为神经网络输出层的正常行为预测置信度,
为异常行为预测置信度,
为真实标签值。当样本为正常行为样本,若神经网络的正常结点输出值和异常结点输出值的差值相差不到1,将会产生损失值;同理,当样本为异常行为样本,神经网络的异常结点输出值到正常结点输出值的差值相差不到1,也将会产生损失值。
根据损失函数(5)构造MarginNet优化目标函数
(5)
其中,
为模型参数,第一项优化目标为正则项,用于控制模型复杂度;第二项为加权间隔损失函数,用于让模型拟合学习数据潜在的判别信息。优化目标(5)使用随机梯度下降法(Stochastic Gradient Descent, SGD)进行优化。通过反向传播算法计算损失函数对模型参数的梯度,然后根据梯度方向调整模型参数,以最小化损失函数。通过不断迭代、正向传播和反向传播的过程,模型参数逐渐优化,使得损失值降低,最终完成模型训练。在本模型中,本文使用PyTorch深度学习框架的自动梯度机制来优化问题(5)。PyTorch的自动梯度机制可以自动计算模型参数对损失函数的梯度,无需手动编写反向传播算法。通过将优化器与损失函数和模型参数关联起来,可以轻松地进行模型参数的更新和优化过程。具体而言,可以使用PyTorch提供的优化器类(如torch.optim.SGD)将模型参数传递给优化器,并在每次迭代中调用优化器的step方法来更新模型参数。
3.3. 模型翻栏异常行为检测
当MarginNet模型训练后,可以使用得到的最优模型参数来构建异常翻栏行为预测决策函数。对于给定的待检测视频图像,首先使用OpenCV实时捕获视频流,然后使用mediapipe模块提取人体姿势关键点信息。最后,将样本特征
输入到MarginNet模型中,分别得到正常行为节点输出
和异常行为节点输出
,构建行为检测的决策函数如下:
(6)
具体描述如下:当
时,表示样本
的正常行为置信度大于翻栏异常行为置信度,因此样本
的标签预测为正常行为。当
时,表示样本
的翻栏异常行为置信度大于正常行为置信度,此时样本预测为异常行为,同时系统可根据监控区域给予预警。
4. 翻栏异常行为检测系统流程
1) 信息采集模块:构建系统,对系统进行初始化,通过摄像头或视频文件获取视频流,之后调用mediapipe对视频流中的人像进行关键点检测。
2) 数据集构造模块:先从网络上或者自行拍摄获取足够的视频资源,对视频资源中的人物进行关键点检测获取坐标信息,将坐标信息整合到样本特征内,对样本特征进行标签标注,完成数据集构造。
3) 行为识别模块:构造神经网络的翻栏异常行为检测系统的流程如图3所示。首先,系统进行关键区域视频的采集,并利用mediapipe进行人体姿势特征点的提取。接下来,通过训练MarginNet行为识别模型,系统可以对提取的特征点进行分类和识别。最后,系统进行翻栏异常行为的检测与预警,及时发出警报以提高安全性和防范潜在的危险。核心步骤描述如下:
步骤一:关键区域视频采集。系统初始化后,通过摄像头或视频文件获取关键区域的视频流,并利用OpenCV模块对视频流进行关键帧提取,用于后续的训练与检测。
步骤二:人体姿势特征点提取。对于关键帧图像,使用mediapipe模块进行人体姿势的关键骨骼点检测,提取与翻栏行为最相关的9个关键点作为模型的样本点,将这9个关键点作为样本特征,根据当前帧中的人进行标签标注。
步骤三:MarginNet行为识别模型训练。构建神经网络模型,包括输入层、隐藏层和输出层。同时构造类别权重函数和加权最大间隔损失函数,用于优化网络模型的权重参数。通过使用数据集对网络模型进行训练,以最小化损失函数为目标,获得最优参数,得到MarginNet翻栏行为模型。在行为识别模块中,将信息采集模块获取的特征输入到MarginNet模型中进行行为分类和识别。
步骤四:翻栏异常行为检测与预警。利用训练好的MarginNet翻栏行为模型对每个图像帧中的人像进行判断。如果翻栏行为被检测到,则系统输出相应的警报信息,例如“翻越栏杆”,以提醒相关人员注意异常行为的发生。
输入层、隐藏层和输出层,构造损失函数,输入数据集对网络模型进行训练,从而获得最优参数,得到MarginNet翻栏行为模型。将信息采集模块中获取的特征输入到模型中。
4) 异常反馈模块:调用MarginNet翻栏行为模型对图像帧中的人像进行判断,若发生翻栏行为,则输出“翻越栏杆”的警报。
Figure 3. The procedure of anomaly fence-climbing detection system
图3. 翻栏异常行为检测系统流程
5. 实验结果分析
5.1. 数据集构建
本文通过采集关键监控区域的视频,首先提取视频的关键帧。然后,利用Mediapipe提取人体在场景中的关键点坐标信息,作为模型训练的特征向量
。根据关键帧中行人是否处于翻栏状态,对其进行人工标注分类y。具体的标注方式如下:当关键帧中的行人表现正常行为时,将标签标注为−1;当关键帧中的行人表现异常行为时,将标签标注为+1。在整个数据采集过程中,本文共收集了1494个样本。
5.2. 实验环境和评价标准
1) 实验环境配置和参数配置
实验环境的硬件配置采用GPU为RTX 3050,CPU为AMD Ryzen7 5800H,内存为16G DDR4;软件配置采用Windows 11操作系统,选择VS Code作为开发环境,使用Python 3.9.7作为编程语言,PyTorch作为深度学习框架,Qt作为UI界面设计。实验中,MarginNet模型的迭代参数epochs设为1000,并采用随机梯度下降法作为优化算法,学习率为0.01。
2) 评价准则
为验证模型的不均衡性,本文使用几何平均Gmean作为评价指标,它基于真正例率(True Positive Rate)和真负例率(True Negative Rate)的几何平均值来衡量分类模型的综合性能。计算公式如下:
(7)
其中,TPR表示真正例率,即真正例数除以真正例数加假负例数。TNR表示真负例率,即真负例数除以真负例数加假正例数。计算公式如下:
(8)
(9)
其中,TP为正确预测正类样本的样本个数,TN为正确预测负类样本的样本个数,FP为负类样本预测为正类的样本个数,FN为正类样本预测为负类的样本个数。
5.3. 结果分析
为验证本文所提模型在不均衡学习上的有效性,实验将数据集的异常和正常行为比例分别设置为0.2、0.25和0.3。此外,为了避免数据分布不均衡或随机划分而引起的评估误差,本文采用采用十折交叉验证来验证模型有效性。具体如下:将翻栏数据集按类别不均衡度随机分成十个等份,每次选取其中一份作为验证集,其余九份作为训练集。重复进行十次,每次选择不同的验证集,确保每个样本都被用于验证一次。最后,将十次评估的结果计算平均和方差,作为模型的性能指标。
本文的MarginNet模型与ROS [7] 、SMOTE [8] 、BSMOTE [9] 、ADASYN [10] 和SMOTEENN [11] 进行交叉验证性能。如表1和表2,结果表明,在这三种类别比例下,MarginNet模型在分类准确率和方差上均优于其他五种算法模型。随着类别不均衡比例的升高,各模型的分类准确率都有不同程度的升高,方差都有不同程度的降低。类别不均衡比例从0.2提升到0.25相较于0.25提升到0.3,各算法的分类准确率出现较大程度的优化,除本文模型外,其他五个算法的方差也都出现了较大程度的减小。通过本次实验证明,本文的模型在处理类别不平衡情况下具有一定的优越性和稳定性。
Table 1. Comparison of classification performance in mean
表1. 分类性能均值比较
Table 2. Comparison of classification performance in standard deviation
表2. 分类性能标准差比较
本文在预测集中抽取了六张关键帧对图像进行预测,预测结果如图4所示。
Figure 4. Illustration of the fence-climbing detection
图4. 翻栏行为检测可视化
5.4. 系统UI演示与分析
为了实现翻越围栏检测可视化,本文构建了翻越围栏异常行为检测系统如图5和图6所示。系统界面主要分为视频窗口,控制栏和状态栏。控制栏在右上半部分,可以在下拉选项框中选择本地摄像头或外部摄像头,也可以直接点击打开视频文件按钮;在选择完毕视频源后可以点击开始检测按钮,检测系统开始运行;点击停止按钮回归软件主界面。在视频窗口显示摄像头的实时画面或者本地视频画面若系统在视频流中检测到人物,则会在人物身上显示关键点并连线,如果检测到翻越栏杆的行为,则会在屏幕中显示“across”,并在右下半部分的状态栏中输出“跨越”,若未发生跨越行为,则屏幕上显示“OK”,当下状态栏中无内容输出。
6. 总结和展望
本文提出了一个基于姿势特征和神经网络的异常翻栏检测系统,简称MarginNet模型。通过Opencv模块获取视频流,并提取关键帧作为输入数据。利用mediapipe模块提取人物的关键骨骼点坐标,并构建了一个数据集用于训练模型。我们设计了一个非线性映射网络模块,并构造了类别权重函数和加权最大间隔损失函数,通过反向传播训练模型。实验结果表明,在处理类别不平衡情况下,本文所提的MarginNet模型拥有较好的分类性能。
Figure 5. Illustration of the fence-climbing detection
图5. 翻越栏杆状态可视化
Figure 6. Illustration of the standing status
图6. 站立图像状态可视化
未来的工作可以在两个方面展开。首先,可以改进网络模型的结构或优化算法,以提高异常行为的识别率和实时性。其次,可以将该模型应用于其他异常行为检测任务,如老年人摔倒检测、暴力斗殴行为检测以及疲劳驾驶检测等。这些领域中,异常行为的准确检测对于人身安全和社会秩序至关重要,因此将MarginNet模型推广到这些领域具有重要的实际应用意义。
基金项目
受《浙江省大学生科技创新活动计划(新苗人才计划)》资助、国家级大学生创新创业训练项目(项目编号:202213275004)。