治安冲突视频分析(打架/斗殴 T3 长尾专项):疑似肢体冲突告警 + 强制人审 + 告警预算 + 以图搜人取证。语义降格、合规红线全部代码化。
English | 简体中文
图:管线五拍(判定字段为真实管道输出)——真实街头冲突检出经白名单/消歧闸后进入复合分级,产出 behavior/brawl risk4 线索"疑似群体冲突 (卷入约9人)",全链路措辞"疑似"、定性权在人审与公安。
酒吧街、夜市、KTV、校园周边、交通枢纽的夜间安保,长期存在四项结构性 空白:
| 挑战 | 现状描述 |
|---|---|
| "打架"语义不可达 | "打"是意图不是像素——端到端 RGB 大模型对真实斗殴的判别不具备可验收性,强行承诺"识别打架"的方案都过不了审计 |
| 摆拍→真实域差 | 真实样本极稀缺、标注主观、剧烈遮挡;拿什么训练、怎么验收,是长尾事件的第一难题 |
| 告警疲劳 | 安保第 3 次误报后就会忽视第 10 次真报——把真系统变成噪音发生器只需一个周末 |
| 夜间低照 | 斗殴高发在夜间,普通相机在主战场时段底座先失明 |
| 原则 | 落地 |
|---|---|
| 承诺降级 | 不承诺"识别打架",承诺"剧烈肢体冲突动作的疑似告警 + 强制人审";全链路措辞"疑似肢体冲突",确认前不出现定性词(措辞纪律有单测) |
| 特征三取二 | ①接触交互(<0.5m ∧ 相对速度>1.5m/s 持续≥2s,地面标定)+②动作模式(骨架识别命中挥击/踢击/拉拽/缠斗)+③场景激化(聚集/倒地);单特征不触发推送 |
| 人审是主流程 | 每条推送级告警必经 10s 短片人审(≤30s 达标、60s 超时升级);reject 原因枚举即飞轮负样本标注 |
| 告警预算制 | 每点位 ≤8 条/夜,超预算自动降敏(仅 risk4 紧急级透传)+ 运维提示,次日自动恢复;台账持久化,重启不清零 |
| 高危点位限定 | 星光级相机为点位准入,布防窗按营业时段(跨午夜、站点时区);时段外零告警(有准出用例) |
帧源(布防闸) → 健康门控 → 人形+跟踪+姿态(行为域底座) → 骨架动作识别(注入契约)
→ 白名单闸(舞蹈/健身区) → 打闹消歧(play抑制/uncertain直推人审)
→ 复合分级(r2推搡/r3冲突/r4群体) → 预算闸(≤8条/夜, risk4透传)
→ 强制人审(10s短片) → 确认: 联动处置+倒地合并+跨点位串联+以图搜人取证
→ 误报: 原因枚举 → 数据飞轮负样本
三道消歧闸各司其职:白名单(时段内"对抗动作"应有完全不同的解释—— 广场舞整体剔除,真实检出 × 最坏对抗注入实测 22/22 零泄漏); 打闹消歧(对抗朝向/肢体末端速度/交替进攻三特征,play 证据充分才 抑制、uncertain 一律直推人审不硬判);告警预算(最后闸门:宁可 少报,不造疲劳)。
| 模型 | 职责 | 回答的问题 |
|---|---|---|
| AI-Detect(开放词汇检测) | L1 人形检出 | "夜里这条街上有人吗?几个人、在地面标定坐标的哪里?" |
| AI-Recognize(免提示提议 + 区域嵌入) | L2 取证语义 | "这名已确认的涉事人员,还出现在哪些点位、什么时间?(以图搜人路径回溯)" |
| AI-Reference(Qwen3VL grounding) | 预筛裁决 | "这段片段是肢体冲突——还是广场舞/嬉戏打闹/拥抱搀扶?" |
三件套是流水线,不是三个孤岛——但本域的大脑是规则引擎,三模型是感官: AI-Detect 只回答"人在哪","是不是冲突"由特征三取二复合评分判定(接触 交互/动作模式/场景激化,单特征永不触发);时序特征与语义判读互补而非 冗余——打闹与斗殴在单帧上语义近似(都是肢体接触),区分点在时序对抗 张力(骨架动作序列 + 消歧三特征),这正是骨架动作识别以注入契约接入 的原因;AI-Reference 对主观冲突判读诚实降级为预筛——只过滤显著 误报族(舞蹈/嬉戏/拥抱,设计口径 30~40%),存疑不硬判、直推强制人审, 不承担最终判定;AI-Recognize 只收人审确认事件的人框 crop(合规 红线),嵌入驱动涉事人员到达/离开路径回溯。
- 复合分级引擎 + 首告优先——Episode 内同级别静默、升级才追加
(
source_id带:u{level}后缀稳定可幂等);冷却防连发但 risk4 永远透传(与预算降敏纪律一致——修复前冷却内群体斗殴被 静默 10 秒零告警,回归测试固化)。 - 前兆监视器——口角对峙/奔跑聚集产出 risk1 提示级(不推送不占 预算),持续期只提示一次防逐轮刷屏;为升级判定提供时间上下文。
- 数据飞轮——人审 confirm=正样本 / reject+原因枚举=负样本, 全量落审计可导出,季度微调只依赖审计导出(§4.2 ③ 落地形态)。
- 涉事取证链——确认事件人框入索引、以图搜人 Top-N 路径回溯; 取证包导出双人审批(请求人与审批人不得同一,自批拒绝有测试)、 校园等未成年人场景须主管审批;索引仅存影像嵌入+时间+点位, 不做身份识别。
- 工程纪律——模型全部注入式(GPL 隔离,分析后端由部署 entrypoint
注入
FrameAnalysis产出器);SQLite 三张审计台账(人审/预算/取证)- outbox at-least-once HMAC 推送;缺持久化路径配置即 fail-loud (禁止静默落内存库"审计失忆")。
- 332 张真实图门禁——242 张标注语料(11 类 × 22,百度图片检索, MD5 跨批次去重)+ 90 张历史语料;11 类全量人形召回门禁按实测校准; 检测缓存 + 设备自选(CUDA 空闲显存检查,不足降级 CPU),共享 GPU 环境不假失败。
以下标注均为真实管道输出(人形检测框与置信度取自 detections.json,
未经手工修改)。
正例(高危场景底座检出):
| 街头冲突 | 群体冲突 | 夜市点位 |
|---|---|---|
![]() |
![]() |
![]() |
负样本(检出但正确不告警 = 系统的另一半能力):
| 广场舞(白名单) | 拥抱 | 醉酒互搀 |
|---|---|---|
![]() |
![]() |
![]() |
| 口角对峙(前兆) | 嬉戏打闹(消歧) | 体育对抗(白名单) |
|---|---|---|
![]() |
![]() |
![]() |
总览:
以一个周五夜为例(时间为示意,判定与路由为真实逻辑):
| 时刻 | 环节 | 说明 |
|---|---|---|
| 20:00 | 布防生效 | 布防窗 20:00~次日 02:00(站点时区,跨午夜);时段外零告警 |
| 22:31 | 前兆提示 | 两人口角对峙 20s(<1m、静止、相向)→ risk1 提示,不推送不占预算 |
| 22:47 | 特征满足 | 两 track 近距对冲持续 ≥2s + 动作识别命中 → 复合分级 risk3 |
| 22:47+2s | 预算闸 | 当夜第 3 条推送级告警,预算内放行(≤8 条/夜) |
| 22:47+3s | 强制人审 | 10s 短片推安保值班终端;18s 判读〔冲突〕→ 联动处置(MTTD 口径:模式满足即产出) |
| 22:49 | 升级 | 第 3 人卷入 + 围观聚集 → risk4 群体冲突,多点位关联检查 |
| 23:10 | 倒地联动 | 同点位 fall 告警合并 → 医疗呼叫 + 优先级提升 |
| 案后 | 取证包 | 双人审批导出:时间线 + 片段 + 涉事人框索引(不含身份识别) |
| 次日 | 飞轮 | confirm/reject 全量入审计 → 季度微调数据源 |
基准口径:332 张真实图片门禁语料(242 张标注:11 类 × 22 + 90 张 历史)+ 92 项单元/门禁测试,详见 CHANGELOG 与 measure_report.json。
图片门禁 16/16 通过(2026-09-18 实测):
| 门禁 | 准出 | 实测 |
|---|---|---|
| 白名单闸零泄漏(真实检出 × 最坏对抗注入) | 0 | 0/22 ✓ |
| 白名单对照组(去白名单必须告警) | ≥83% | ✓ |
| 人形底座召回(11 类全量,实测校准) | 见 manifest | 11/11 类过 ✓ |
| 全链(线索→outbox→契约→路由→人审→飞轮→取证双审批) | 通过 | ✓ |
| 语料完整性(332 张解码 + MD5 唯一) | 通过 | ✓ |
| 指标 | 数值 | 口径 |
|---|---|---|
| 人形底座召回(第一梯队) | 广场舞/体育 100% · 夜市/街头/群体/舞台 91~95% | AI-Detect,score≥0.5 |
| 人形底座召回(中间档) | 对峙 18/22 · 醉酒互搀 17/22 | 同为底座改进输入 |
| 人形底座召回(域差梯队) | 拥抱 7/22 · 嬉戏 9/22 · 拉拽 13/22 | 近距框合并/儿童/特写——诚实公开 |
| MTTD | 持续窗满足即产出(单测 mttd_s<0.2s) | 设计口径 ≤5s(帧时间戳起算) |
| 人审 SLA | ≤30s 达标率统计 · 60s 无操作二次提醒 | FR-COM-04 |
| 告警预算 | ≤8 条/点位/夜 · 超预算降敏 · risk4 透传 | FR-COM-05 |
| 工程质量 | 92 项测试全绿(含 16 项图片门禁) | 共享 GPU 环境可复现(设备自选+检测缓存) |
诚实口径:图片门禁覆盖底座召回/白名单消歧/管线全链/取证链, 不冒充语义门禁——冲突语义 R/P(设计目标 ≥85%/≥65%)需要时序 轨迹,由 §8.2 受控摆拍视频集 + 骨架动作识别评测承担,尚未建设 (动作识别模型经
TrackObs.action注入契约接入,规则桩先行)。 语义维度的验收承诺当前不可声明。
import time
from conflict_guard import (ConflictPipeline, PointConfig,
SceneObs, TrackObs)
pipe = ConflictPipeline(PointConfig(point_id="NM-1",
scene_type="bar_street",
night_budget=8))
tracks = [TrackObs(track_id=1, cx=10.0, cy=10.0, speed_mps=3.0,
action="swing", action_conf=0.9, facing=(1, 0),
limb_tip_speed=4.0),
TrackObs(track_id=2, cx=10.3, cy=10.0, speed_mps=-0.5,
action="kick", action_conf=0.85, facing=(-1, 0),
limb_tip_speed=4.5)]
ts = time.time()
for k in range(5): # 0.5s 节拍 ×5 → 喂满 2s 接触持续窗
result = pipe.process(tracks, SceneObs(), ts=ts + k * 0.5)
# result.pushed_alerts → 强制人审队列 (10s 短片)# 单元 + 图片门禁 (检测缓存使 332 张语料门禁秒级可复现)
python -m pytest conflict_guard/tests -q
# §8.4 轨迹口径验收报告
python -m conflict_guard.acceptance
# 运行时部署 (布防闸+健康门控+outbox 推送; 分析后端由部署 entrypoint 注入)
python -m conflict_guard.runner --config conflict_guard/deploy/runner.example.json- 语义判定模型未上线:动作模式(特征②)依赖骨架序列动作识别 (设计选型 ST-GCN 级,双人/多人骨架图拓扑),当前为注入契约 + 规则桩;三层数据引擎(受控摆拍/授权素材/运行时飞轮)冷启动未开始。
- §8.2 验收数据集未建设:摆拍正例 ≥400 组、负样本 ≥300 段、 试点实采 ≥60 夜——R≥85%/P≥65% 的验收承诺在数据集建成前不可声明。
- 图片门禁是底座/链路门禁,不是语义门禁:运动维按"最坏对抗注入" 构造(静态图没有时间维)。
- 底座域差已知:近距接触族(拥抱/嬉戏/拉拽)人形召回显著低于 人群场景,夜间实采底座衰减需 §8.3 Gate-0 现场实测。
- 高危点位限定是精度前提:只在夜市/酒吧街/校园周边等高危点位 部署(星光级相机准入),不做全城铺开——点位密度换精度。
代码为商业软件(Commercial Software),未经授权不得复制、修改、分发
或商用。门禁语料图片来自百度图片搜索,不随仓库分发(仓库提供
抓取脚本 fetch_conflict_images*.py、manifest.json、
measure_report.json 与检测缓存,可复现重建;标注仅供研究)。
系统全链路措辞为"疑似肢体冲突",确认权在人审、定性权在公安;
未成年人场景(校园)推送对象限校保卫处、取证包导出双审批加严。
本方案的检测底座、流式推理运行时与导出链路由开源框架 AutoVision 提供(pip install autovision-framework);接入设计见《行业方案接入》。










