智慧校园 13 类视频异常检测:数据集与预训练模型全攻略
文章目录
- [智慧校园 13 类视频异常检测:数据集与预训练模型全攻略](#智慧校园 13 类视频异常检测:数据集与预训练模型全攻略)
-
- 前言
- [一、13 类异常行为定义](#一、13 类异常行为定义)
- [二、按类别:数据集 + 预训练模型](#二、按类别:数据集 + 预训练模型)
-
- [2.1 fight / brawl(打架 / 群殴)](#2.1 fight / brawl(打架 / 群殴))
- [2.2 fall_down / ground_fall(跌倒 / 倒地)](#2.2 fall_down / ground_fall(跌倒 / 倒地))
- [2.3 climb / climb_over(攀爬 / 翻越)](#2.3 climb / climb_over(攀爬 / 翻越))
- [2.4 intrude / illegal_breakin(入侵 / 非法闯入)](#2.4 intrude / illegal_breakin(入侵 / 非法闯入))
- [2.5 fire_smoke(烟火)](#2.5 fire_smoke(烟火))
- [2.6 chase / gather / run / throw_object(追逐 / 聚集 / 奔跑 / 投物)](#2.6 chase / gather / run / throw_object(追逐 / 聚集 / 奔跑 / 投物))
-
- [可用数据集(视频级 / 弱监督)](#可用数据集(视频级 / 弱监督))
- 推荐方案
- 三、综合型视频异常数据集(多类覆盖)
- 四、推荐落地路线
-
- [4.1 路线对比](#4.1 路线对比)
- [4.2 短期方案(1--2 天):组合现有模型](#4.2 短期方案(1–2 天):组合现有模型)
- [4.3 中期方案(1--2 周):微调统一 13 类模型](#4.3 中期方案(1–2 周):微调统一 13 类模型)
- [4.4 标签合并映射示例(label_merge.yaml)](#4.4 标签合并映射示例(label_merge.yaml))
- [4.5 数据来源优先级](#4.5 数据来源优先级)
- [五、YOLO 训练配置要点](#五、YOLO 训练配置要点)
-
- [5.1 anomaly_video.yaml 配置](#5.1 anomaly_video.yaml 配置)
- [5.2 训练超参建议](#5.2 训练超参建议)
- [5.3 模型导出与部署](#5.3 模型导出与部署)
- 六、数据集获取注意事项
- 七、架构设计建议
- 八、总结
- 参考资料
前言
在智慧校园、周界安防等场景中,视频异常检测(Video Anomaly Detection, VAD)是核心能力之一。不同于通用目标检测,安防场景往往需要对打架、跌倒、攀爬、入侵、烟火等十余类异常行为进行实时识别与告警。
本文系统梳理 13 类完全一致的单一预训练模型 所需的数据集与预训练权重资源,覆盖从「快速落地」到「统一微调」的完整技术路线,并给出可直接用于 Ultralytics YOLO 训练的配置方案。无论你是算法工程师还是平台开发者,都能从中找到可复用的资源与落地路径。

一、13 类异常行为定义
以下 13 类与常见智慧校园/周界安防标注体系对齐,可直接映射为 YOLO 多类检测任务的类别 ID:
| ID | 类名 | 中文含义 | 检测难度 |
|---|---|---|---|
| 0 | fight |
打架 | ★★☆ |
| 1 | fall_down |
跌倒(进行中) | ★★☆ |
| 2 | climb_over |
翻越 | ★★☆ |
| 3 | chase |
追逐 | ★★★★ |
| 4 | gather |
聚集 | ★★★ |
| 5 | intrude |
入侵 | ★★★ |
| 6 | run |
奔跑 | ★★★ |
| 7 | throw_object |
投掷 | ★★★★★ |
| 8 | fire_smoke |
烟火 | ★★☆ |
| 9 | ground_fall |
倒地(已躺平) | ★★☆ |
| 10 | brawl |
群殴 | ★★☆ |
| 11 | climb |
攀爬 | ★★☆ |
| 12 | illegal_breakin |
非法闯入 | ★★★ |
关键认知:公开数据里几乎没有「13 类一体」的现成权重。可行路径有三条:
- 分任务组合多个专用模型(最快落地,1--2 天)
- 用相近数据集微调后合并为多类模型(中期方案,1--2 周)
- 行为类(chase/gather/run)采用「检测 + 跟踪 + 轨迹规则」,而非纯 YOLO 单帧分类
二、按类别:数据集 + 预训练模型
2.1 fight / brawl(打架 / 群殴)
打架与群殴在公开数据集中通常合并为 violence / fighting 类别,训练时建议合并标注,或让 brawl 作为 fight 的子类。
推荐数据集
| 名称 | 规模与说明 | 获取链接 |
|---|---|---|
| UBI-Fights | 1000 段视频,216 段含打斗,帧级标注 | OpenDataLab |
| Hockey Fight Detection | 1000 段,fight / non-fight 二分类 | Papers With Code |
| 校园异常行为 5 类 | 7000+ 张图像,含「暴力斗殴」 | 阿里云开发者社区 |
| firc-dataset 6 类 | 2266 张,含 fight、Fall-person | 面包多 |
推荐预训练模型
| 名称 | 架构 | 说明 | 链接 |
|---|---|---|---|
| Musawer14/fight_detection_yolov8 | YOLOv8 | Violence / NoViolence 二分类 | Hugging Face |
| CrimeNet-ViT | ViT | UBI-Fights 上训练 | GitHub |
| VideoMAE (UCF-Crime) | VideoMAE | 视频级异常分类,含 Fighting | Hugging Face |
| sec-fight-nano / sec-fight-small | YOLO | violence / non_violence,项目内置 ONNX | 项目内置 |
快速调用示例:
python
from ultralytics import YOLO
model_fight = YOLO("Musawer14/fight_detection_yolov8")
results = model_fight.predict("test_video.mp4", save=True)
2.2 fall_down / ground_fall(跌倒 / 倒地)
fall_down 偏「正在跌倒」的过程态,ground_fall 偏「已躺地」的结果态。LE2I 数据集提供起止帧标注,可拆分为两类分别训练。
推荐数据集
| 名称 | 规模与说明 | 获取链接 |
|---|---|---|
| LE2I Fall Detection | 经典跌倒基准,4 场景 | Kaggle |
| LE2I (Roboflow) | YOLO 格式,191 段视频 | Roboflow Universe |
| 校园 5 类安防 | 含「人员跌倒」 | 技术栈 |
推荐预训练模型
| 名称 | 架构 | 说明 | 链接 |
|---|---|---|---|
| Real-Time Fall Detection (YOLOv11) | YOLOv11 | LE2I 微调,约 95% 准确率 | GitHub |
| fall-detection-stcf | YOLOv8m + 时序 | 时序确认机制,降低误报 | GitHub |
| sec-fall-yolo11n | YOLO11n | fall/sit/sleep/standing/Violence 等 7 类 | 项目内置 ONNX |
进阶方案 :姿态估计 + 规则判定(如 /ai/fall 四指标判定)比纯 YOLO 单帧检测更稳定,适合生产环境。
2.3 climb / climb_over(攀爬 / 翻越)
climb 与 climb_over 可共用攀爬数据集,通过不同标注粒度区分「正在攀爬」与「翻越完成」。
推荐数据集
| 名称 | 规模与说明 | 获取链接 |
|---|---|---|
| 翻墙/攀爬 10,000 张 | climb / no_climb 二分类,YOLO 格式 | 魔乐社区 |
| A2Seek 无人机视角 | 含 climbing over walls | Hugging Face |
推荐预训练模型与论文
| 名称 | 说明 | 链接 |
|---|---|---|
| YOLOv8 翻越围栏项目 | 含数据集 + 权重 + 检测程序 | SegmentFault |
| ban-YOLOv11 翻越检测 | mAP 98.0%,80.6 FPS | IJEH 论文 |
2.4 intrude / illegal_breakin(入侵 / 非法闯入)
周界入侵场景的核心难点在于:人形检测 + 区域/越线规则 往往比纯分类模型更合适。
推荐数据集
| 名称 | 规模与说明 | 获取链接 |
|---|---|---|
| UCF-Crime | 13 类犯罪异常,含 Burglary | Papers With Code |
| MSAD | 14 场景,含 Assault、Robbery 等 | 官网 |
| 校园 6 类 firc | 含 thief、breaking | 面包多 |
推荐预训练模型
| 名称 | 说明 | 链接 |
|---|---|---|
| VadCLIP | UCF-Crime 弱监督 VAD,含预训练权重 | GitHub |
| AnomalyCLIP | 异常检测 CLIP 变体 | GitHub |
落地建议:YOLO 检测人形 + 平台越线/区域告警规则,比端到端分类模型更易调试和维护。
2.5 fire_smoke(烟火)
烟火检测是公开资源最丰富的类别之一,多个高质量 YOLO 格式数据集可直接用于训练。
推荐数据集
| 名称 | 规模与说明 | 获取链接 |
|---|---|---|
| Fire & Smoke 40K | 40900 张,Fire/Smoke,YOLO 格式 | Hugging Face |
| Fire SM | 2717 张真实场景 | IMEKO ACTA |
| GWFP 野火 | 大规模开源野火图像/视频 | arXiv |
推荐预训练模型
| 名称 | 架构 | 说明 | 链接 |
|---|---|---|---|
| jojomoi-meme/YOLO_fire_detection | YOLOv8s | Fire/Smoke 二分类 | Hugging Face |
| thalos-fire-safety-v1 | YOLO | 工业/工地烟火场景 | Hugging Face |
| sec-fire-yolov8n | YOLOv8n | fire/smoke 及 88 类灾害扩展 | 项目内置 ONNX |
快速调用示例:
python
from ultralytics import YOLO
model_fire = YOLO("jojomoi-meme/YOLO_fire_detection")
results = model_fire.predict("camera_feed.jpg", conf=0.5)
2.6 chase / gather / run / throw_object(追逐 / 聚集 / 奔跑 / 投物)
这类行为在公开 YOLO 数据集中极少作为独立检测类出现。业界更常见的做法是:
YOLO 检测人形 + ByteTrack 跟踪 + 速度/方向/人数规则
可用数据集(视频级 / 弱监督)
| 名称 | 规模与说明 | 获取链接 |
|---|---|---|
| XD-Violence | 217 小时,4754 段,含追逐等暴力 | 官网 |
| A2Seek | 20+ 异常类型,含聚集、奔跑等 | Hugging Face |
| Crowd-Behaviour | 行走/徘徊/恐慌/聚集等 | 论文引用较多 |
| ShanghaiTech Campus | 13 场景校园异常 | 经典 VAD 基准 |
推荐方案
| 方案 | 适用类别 | 说明 |
|---|---|---|
| VadCLIP / TrCLIP-VAD | chase、run | XD-Violence / UCF-Crime 微调 |
| YOLO + ByteTrack + 规则 | run、chase、gather | 速度、方向、人数阈值 |
| crowd-gathering 告警规则 | gather | 平台内置规则可复用 |
throw_object公开数据极少,建议参考 Sports/action recognition 数据集或自采标注。
三、综合型视频异常数据集(多类覆盖)
若希望一次性获取多类异常样本,以下综合数据集值得优先关注:
| 数据集 | 规模 | 与 13 类的重合 | 获取方式 |
|---|---|---|---|
| UCF-Crime | 1900 段,13 类犯罪 | fight、intrude 相关 | 需申请 |
| XD-Violence | 4754 段,217h | fight、chase 等暴力 | GitHub |
| MSAD | 720 段,14 场景 | fight、fall、fire | 官网下载 |
| A2Seek | 542 段 4K | fight、fall、climb_over | Hugging Face |
| UBI-Fights | 1000 段 | fight/brawl | OpenDataLab |
| 校园 5/6 类 YOLO 数据集 | 2266--7000+ 张 | fight、fall、fire、thief | 阿里云/面包多 |
四、推荐落地路线
4.1 路线对比
| 方案 | 是否有现成 13 类权重 | 实施周期 | 适用场景 |
|---|---|---|---|
| 分任务挂 sec-* ONNX | 部分类别有 | 1--2 天 | 快速上线、验证业务 |
| 分任务微调 YOLO | 需逐类微调 | 1--2 周 | 精度要求较高 |
| YOLO 检测 + 跟踪 + 规则 | 无需专用权重 | 3--5 天 | chase/gather/run 等行为类 |
| 统一 13 类微调 | 需自采 + 合并 | 2--4 周 | 长期维护、单模型部署 |
4.2 短期方案(1--2 天):组合现有模型
| 异常类别 | 建议模型/方案 |
|---|---|
| fight, brawl | sec-fight-nano / sec-fight-small |
| fall_down, ground_fall | sec-fall-yolo11n 或 /ai/fall 姿态规则 |
| fire_smoke | sec-fire-yolov8n |
| gather | 平台 crowd-gathering 告警规则 |
| intrude, illegal_breakin | COCO/YOLO 人形检测 + 区域/越线 |
| run, chase, throw_object | 人形检测 + ByteTrack + 速度/轨迹规则 |
4.3 中期方案(1--2 周):微调统一 13 类模型
步骤概览:
- 合并上述 YOLO 格式数据集,通过
label_merge.yaml统一映射到 13 类 - 以
yolo11m.pt为基座进行微调 - 通过平台 pt → onnx 转换后入库部署
训练目录结构:
anomaly_video/
├── images/train/
├── labels/train/
├── images/val/
└── labels/val/
训练命令:
bash
yolo detect train \
data=docs/datasets/anomaly_video/anomaly_video.yaml \
model=yolo11m.pt \
epochs=200 \
imgsz=640 \
batch=16
4.4 标签合并映射示例(label_merge.yaml)
多源数据合并时,将外部标签映射到统一 13 类 ID:
| 外部数据集标签 | 映射到 13 类 |
|---|---|
校园 5 类 Violence |
0 fight |
Fire&Smoke 40K Fire/Smoke |
8 fire_smoke |
翻墙数据集 climb |
2 climb_over |
firc thief/breaking |
12 illegal_breakin |
LE2I fall(过程帧) |
1 fall_down |
LE2I fall(结束帧) |
9 ground_fall |
4.5 数据来源优先级
| 阶段 | 类别 | 说明 |
|---|---|---|
| 阶段 A(可立即开训) | fire_smoke、fight、fall_down、climb_over | 公开 YOLO 数据充足 |
| 阶段 B(需抽帧/remap) | brawl、ground_fall、illegal_breakin、climb | 需从视频数据集抽帧并重映射 |
| 阶段 C(需自标或规则) | chase、gather、run、throw_object、intrude | 公开数据稀缺,建议规则引擎辅助 |
五、YOLO 训练配置要点
5.1 anomaly_video.yaml 配置
13 类配置兼容 Ultralytics 与平台「YOLO 原生」导入格式:
yaml
# anomaly_video.yaml
path: ./anomaly_video
train: images/train
val: images/val
names:
0: fight
1: fall_down
2: climb_over
3: chase
4: gather
5: intrude
6: run
7: throw_object
8: fire_smoke
9: ground_fall
10: brawl
11: climb
12: illegal_breakin
5.2 训练超参建议
| 参数 | 推荐值 | 说明 |
|---|---|---|
model |
yolo11m.pt | 精度与速度平衡 |
epochs |
200 | 多类任务建议充分训练 |
imgsz |
640 | 标准输入尺寸 |
batch |
16(视 GPU 显存调整) | RTX 3090 可参考 |
patience |
50 | 早停耐心值 |
augment |
默认 | Mosaic、MixUp 等 |
5.3 模型导出与部署
python
from ultralytics import YOLO
# 加载训练好的权重
model = YOLO("runs/detect/train/weights/best.pt")
# 导出 ONNX(平台部署常用格式)
model.export(format="onnx", imgsz=640, simplify=True)
六、数据集获取注意事项
- UCF-Crime、XD-Violence:学术用途,需遵守各自许可协议与引用要求,部分需邮件申请
- 面包多/阿里云数据集:多为付费或社区分享,标注精度与许可范围需自行验证
- Hugging Face / GitHub 社区模型:建议先在目标场景做冒烟测试,社区权重泛化能力参差不齐
- 13 类一体模型 :公开资源无法一次性覆盖全部类别,阶段 C 类别需自采标注或规则引擎兜底
- 数据合规:校园场景涉及隐私,采集与使用需符合当地法规与校内规定
七、架构设计建议
对于生产级智慧校园安防平台,推荐采用「多模型 + 规则引擎」的混合架构:
┌─────────────────────────────────────────────────────────┐
│ 视频流接入层 │
└─────────────────────────┬───────────────────────────────┘
│
┌───────────────┼───────────────┐
▼ ▼ ▼
┌─────────────┐ ┌─────────────┐ ┌─────────────┐
│ sec-fight │ │ sec-fall │ │ sec-fire │
│ YOLO 模型 │ │ YOLO 模型 │ │ YOLO 模型 │
└──────┬──────┘ └──────┬──────┘ └──────┬──────┘
│ │ │
└───────────────┼───────────────┘
▼
┌───────────────────────┐
│ ByteTrack 多目标跟踪 │
└───────────┬───────────┘
▼
┌───────────────────────┐
│ 规则引擎层 │
│ · 越线/区域入侵 │
│ · 聚集人数阈值 │
│ · 速度/轨迹异常 │
│ · 跌倒姿态四指标 │
└───────────┬───────────┘
▼
┌───────────────────────┐
│ 告警推送层 │
└───────────────────────┘
设计原则:
- 能检测的用 YOLO:fight、fall、fire、climb 等有充足训练数据的类别
- 能规则的用规则:gather(人数)、intrude(越线)、run/chase(速度轨迹)
- 模型与规则互补:降低误报率,提升可解释性
八、总结
智慧校园 13 类视频异常检测没有「一键下载、直接部署」的万能模型,但通过合理组合公开数据集、社区预训练权重与平台规则引擎,可以在 1--2 天内完成基础能力上线 ,并在 1--2 周内 通过多源数据合并微调出统一 13 类模型。
核心要点回顾:
| 要点 | 说明 |
|---|---|
| 资源最丰富 | fire_smoke、fight、fall_down |
| 需规则兜底 | chase、gather、run、throw_object |
| 最快落地 | 分任务挂 sec-* ONNX + 平台规则 |
| 长期方案 | 多源数据合并 + yolo11m 统一微调 |
| 关键配置 | anomaly_video.yaml + label_merge.yaml |
如果你有具体的场景需求(如某类精度不达标、某数据集下载遇到问题),欢迎在评论区交流,我可以进一步提供数据合并脚本或告警编排方案的设计思路。
参考资料
标签 :YOLO 视频异常检测 智慧校园 安防AI 目标检测 深度学习 数据集 预训练模型 跌倒检测 烟火检测