{"repo":"LIU42/Surveillance","free":true,"listed":false,"github":"https://github.com/LIU42/Surveillance","clone":"git clone https://github.com/LIU42/Surveillance.git","description":"面向监控视频的异常行为检测系统设计。","language":"Vue","stars":12,"topics":["anomaly-detection","attention-mechanism","computer-vision","deep-learning","element-ui","flask","mongodb","nginx","onnxruntime","pytorch"],"license":null,"category":"machine-learning","readme_excerpt":"Surveillance 监控视频异常检测系统 v1.0.0 新变化：初次发布项目源代码。 项目简介 本项目基于对现有研究方法的改进和集成，构建了一种使用片段级标签的视频异常检测方法，同时在此基础上构建了一套面向监控视频的异常行为检测系统，实现了针对已有监控视频的异常检测和针对监控视频流的实时检测功能。 模型结构 本项目的模型结构主要参考了 这篇论文。首先将原始视频分割成 16 帧彼此不重叠的片段，使用预训练的 SlowFast 网络提取特征，随后将提取的特征序列降维后输入注意力模块进行上下文建模，最后输入时序卷积分类器模块得到每个片段的异常得分。 注意力模块利用一种可学习的相对位置编码表示不同视频片段间的相对位置信息，分别计算全局注意力矩阵和局部注意力矩阵。通过对全局注意力值和局部注意力值的加权融合，实现同时对全局和局部的上下文关系进行建模。 在模型的最后，本项目还采取了一种对于异常得分序列的平滑策略，通过抑制异常得分序列中的突变值，减弱瞬时噪声对模型预测结果的影响。 训练策略 本项目将视频异常检测任务视为时间维度上的分割问题，模型的目标是在时间轴上分割出异常行为发生的区域，采用二元交叉熵和 Dice 系数损失的组合形式构建损失函数，同时针对 Dice 系数在正常样本上损失过度放大的问题作了相应的改进。 本项目使用 ShanghaiTech 数据集训练模型，数据集按照类别平衡的准则重新划分，划分后训练集包含 238 个视频，测试集包含 199 个视频。使用片段级标签进行训练，采用 10-crops 增强策略。 系统设计 基于已有视频的异常行为检测过程首先将原始视频切分成不重叠的视频片段，对于每个片段利用特征提取器提取特征构成特征序列。随后对特征序列进行异常检测，得到序列中每个片段的异常概率。 基于实时视频流的异常行为检测分别初始化一个视频帧队列和一个视频特征队列，同时分别限制两个队列的最大容量。首先从视频流中取出当前帧添加到视频帧队列尾部。若视频帧队列已满，则使用视频特征提取器对视频帧队列构成的视频片段进行特征提取，将提取得到的特征向量添加到视频特征队列，同时清空视频帧队列。随后对视频特征队列构成的视频特征序列进行异常检测，取最后一个片段的输出作为当前的异常概率。 本项目异常行为检测模型使用 ONNX Runtime 部署推理。数据库基于 MongoDB，用于持久化存储视频异常检测结果记录和实时异常检测会话信息。服务端基于 Flask 构建，负责处理来自客户端的异常检测请求并运行实时异常检测会话。客户端基于 Vue3 和 Element-Plus 构建，使用 Nginx 进行服务端和客户端的反向代理。 效果展示 性能评估 检测精度指标 本项目采用 ROC 曲线下面积 (AUC) 和 P-R 曲线下面积 (AP) 作为模型性能的评估指标。下面给出当前训练得到的最优模型检测精度指标。 数据集 AUC (%) AP (%) :----------------------------------------------------------------------: :-------: :------: ShanghaiTech 97.49 74.35 下面展示模型在 ShanghaiTech 数据集下的 ROC 曲线图和 PR 曲线图。 此外，本项目在正常视频样本上引入不同阈值下的误报率 (FAR) ，在异常视频样本上引入不同阈值下预测异常区间和真实异常区间的交并比 (IoU) 作为额外的评估指标。 数据集 FAR @ 0.2 (%) FAR @ ","default_branch":null,"files":null,"tree":[],"storefront":"/r/LIU42","claimed":false,"request_supported":{"post":"https://gitbuyer.com/r/LIU42/Surveillance/request-supported","requests":0},"note":"indexed from public GitHub; nothing is for sale on this page. Clone it from GitHub. Paid listings live at /search."}