一个园区几十路摄像头全时录像,保安盯着屏幕,真出现翻越围栏、奔跑推搡、物品遗留这些事时,人眼反而最容易疲劳漏看。传统行为识别得先告诉系统"什么是异常"——可现实里异常花样百出,根本列不全。视频异常检测要解决的就是这个问题:平时只学"正常长什么样",一旦画面行为偏离常态就自动报警。
今天分享的这篇 CVPR2026 论文 EventAlert,面向监控长视频做异常事件自动发现:不需要预先标注异常类别,只从正常监控视频里学习正常行为模式,推理时对偏离正常分布的片段输出异常分数并自动告警。在 UCF-Crime 和 ShanghaiTech 两个公开异常检测基准上,曲线下面积指标优于同量级方法,适合对接现有安防监控平台做二级预警。
一、视频异常检测和行为识别有什么不一样
很多人会把它和之前讲过的行为识别搞混,先把边界划清楚。
1.1 异常事件没有固定类别,标注不全
行为识别是"考试有标准答案":预先定义好走路、摔倒、聚集等类别,模型去分类。但真实安防里,异常是无穷无尽的——翻越、躺地、奔跑、遗留包裹、异常徘徊,你列得完吗?模型只学过"摔倒",真出现"攀爬围墙"它就不认识。异常检测换个思路:不学异常长什么样,只学正常长什么样,反常的都值得看一眼。
1.2 正常行为本身就很多变
就算是"正常走路",有人快走有人慢走,有人背包有人推推车。把"正常"建得太死,模型会把大量正常行为误报成异常;建得太松,真异常又混过去。如何刻画正常行为的"分布范围"而不是"标准模板",是核心难点。
1.3 异常是一段过程,单帧看不出来
一个人正常站着是帧,连续走向围墙、攀爬、翻越,这一连串动作合起来才是异常。单看某一帧可能毫无破绽。模型必须看懂时序——把连续多帧的运动和外观连起来判断,这和只看单张图的检测任务本质不同。
1.4 误报率太敏感
监控场景里一天出几百条"异常告警",保安很快就会对所有告警免疫,真出事也被淹没。异常检测系统的价值不在"能报多少",而在"报出来的是不是真值得看",误报控制直接决定系统能不能用。
二、EventAlert 的三个核心设计
EventAlert 的整体思路:只用正常监控视频训练,让模型学会重建和预测"正常情况下接下来该看到什么",画面越不符合预期,异常分数越高。
2.1 仅正常样本的自监督建模
•训练数据全是正常片段:不收集、不标注异常样本,模型在正常视频上学习行为模式。
•未来帧预测:给模型看前面几帧,让它预测接下来该出现的画面;正常情况下它能预测得很准,遇到训练时没见过的异常行为就预测偏差大。
•偏差即异常:预测画面和真实画面差得越多,这段视频异常分数越高。
这样做的好处是不需要穷举异常类别,新出现的异常行为只要和正常模式不一样就能被捕捉。
2.2 时空双流联合特征
异常往往同时体现在"长得不一样"和"动得不一样"两方面:
•外观流:提取帧画面的静态特征,发现画面里不该出现的物体、遗留物。
•运动流:提取光流/时序运动特征,发现突然奔跑、逆行、异常轨迹。
•时序融合:用短时注意力把连续片段的外观和运动证据汇总,判断这一段是不是真异常。
2.3 帧级分数聚合为事件告警
不是每帧报警,而是:
•逐帧打异常分:每帧输出一个 0~1 的异常分数。
•连续高分段聚合成事件:异常分数连续超过阈值的若干秒,合并成一条异常事件,记录起止时间和片段。
•阈值可按场景调:不同摄像头、不同时段(夜间更敏感)用不同灵敏度,压误报。
三、技术架构拆解
模块 |
做什么 |
关键设计 |
时空特征提取 |
外观 + 运动双流特征 |
轻量主干,短时片段联合输入 |
正常模式建模 |
学习正常视频的行为分布 |
未来帧预测 / 正常分布重建,偏差度量异常 |
帧级异常评分 |
逐帧输出异常分数 |
外观偏差 + 运动偏差加权融合 |
事件聚合告警 |
连续高分段合并成事件 |
阈值自适应,输出告警时间戳与片段 |
工程要点:
•训练侧:只需收集该摄像头场景下的正常录像,标注成本远低于异常分类。
•部署侧:对每路摄像头按场景单独校准阈值,避免一刀切导致误报失控。
•对接侧:输出事件时间戳和片段,可直接接入现有监控告警平台做弹窗提示。
四、和主流方法的横向对比
在 UCF-Crime(真实犯罪监控片段)和 ShanghaiTech(校园监控)两个异常检测基准上对比(指标为 ROC-AUC,越高越好;数值为示意口径,复现以官方划分为准):
方法 |
UCF-Crime AUC↑ |
ShanghaiTech AUC↑ |
训练是否需异常样本 |
范式 |
未来帧预测类 |
70.5 |
72.3 |
否 |
仅外观流 |
重构误差类 |
72.1 |
74.0 |
否 |
仅运动流 |
两流时序融合 |
75.4 |
77.8 |
否 |
外观+运动 |
EventAlert |
78.2 |
80.6 |
否 |
时空双流+事件聚合 |
对比结论:只用单流(外观或运动)容易漏检——光看运动抓不到遗留物,光看外观抓不到异常奔跑。EventAlert 双流联合加事件级聚合,在两个数据集上都更稳,关键是全程不需要异常标注,落地时数据收集门槛低。
五、快速上手:核心推理框架
python |
落地提示:上线前一定要用该摄像头的真实正常录像重新校准阈值。不同场景(门口、通道、园区周界)活动基线不同,直接套用默认阈值误报会偏多。建议先跑一周只记录不告警,观察正常时段分数分布再定线。
六、毕设/竞赛拓展方向
6.1 周界入侵与徘徊检测
在园区围墙、敏感区域划定电子围栏,把异常检测和区域限制结合:越界、长时间徘徊、异常停留都自动告警。是安防项目里需求最明确的方向。
6.2 异常人群聚集与疏散
结合人群计数结果,发现"人群突然异常聚集"或"人群异常四散"事件,用于商圈、车站、广场的公共安全预警,和之前的 CrowdCount 可以组合成完整方案。
6.3 夜间与低照度异常检测
夜间画面噪点多、目标小,正常活动基线和白天完全不同。专门收集夜间监控数据训练,研究低照度下的异常检测鲁棒性,场景真实且有差异化。
6.4 异常检测对接告警平台
不只输出分数,还做事件级摘要、关键帧截图、自动推送值班手机。从算法研究延伸到完整报警系统设计,工程完整度高,适合做系统类毕设。
七、写在最后
视频异常检测的核心价值是"兜底":已知的威胁靠行为识别抓,未知的反常靠异常检测发现。它不追求百分百精准,而是把保安从盯屏中解放出来,只在真正反常的时候叫人。
EventAlert 给我的启发是:现实中拿不到足够多异常标注时,换个角度——只学正常,让模型用"预期落空"来发现问题。这种思路在工业、安防等异常稀缺场景里比硬做分类务实得多。
做毕设的同学建议先在 UCF-Crime 或 ShanghaiTech 上跑通一个 baseline,再结合一个真实场景(园区、教室、停车场)收集自己的正常视频做适配。异常检测的演示效果很直观——高亮异常片段——讲清楚"它为什么报警"比堆网络结构更有说服力。

