笔记
北京邮电大学 - 2024 - CVPR
名词缩写
-
VAU - Video anomaly understanding
-
what - what anomaly occurred?
-
why - why did it happen?
-
how - how severe is this abnormal event?
-
CUVA - Causation Understanding of Video Anomaly
-
A-Guardian - Anomaly Guardian
-
NLG - Natural Language Generation
问题
之前的数据集主要关注的是异常检测和定位,但是对异常的原因和影响缺乏探索。
-
缺乏原因和影响的解释
-
缺乏合适的评估指标
-
视频长度不够
之前的评价指标仅关注单模态。
创新
三种标注:
-
异常类型 - 起始、结束帧以及时间描述
-
原因、影响 - 解释为什么发生和造成的影响
-
严重性 - 重要性曲线
新指标: MMEval - 更好的对齐人类偏好,同时评估视频和文本中的异常事件(多模态)
baseline: prompt-based method based on VLM
挑战:
-
在长视频中捕获关键线索
-
构建因果逻辑链
数据集(CUVA)
重要性曲线
重要性曲线是注释how的
-
首先标注者根据之前的任务和视频内容生成3~6个简短句子来描述视频中的各个时刻的事件
-
使用ChatGPT对这些句子评分
-
对视频帧采样(每秒1帧),使用CLIP对这些帧编码,然后对之前的句子编码,计算每个句子与帧的相似度
-
相似度分数与每个句子的异常分数相乘得到每一帧的value,形成初始的曲线
重要性曲线为什么能在同一框架下统一各种视频时间定位标签和任务?
这里结合附录中的3个例子进行解释:
片段检索任务中,重要性曲线可以通过设定阈值来筛选出视频中异常程度较高的时间段,并提取出与这些时间段对应的关键句子。这样可以实现基于文本的片段检索,将原始视频与文本内容关联起来。
亮点检测的目标是找到视频中最值得关注的片段。重要性曲线的最高点天然地表示了最突出的异常事件,通过定位这个最高点,就能轻松找到视频的亮点,简化了任务流程。
视频摘要任务是要提取视频中的关键镜头进行概括。重要性曲线中的局部最大值可以用来标识视频中的关键时刻,通过这些时间点可以提取对应的镜头,确保摘要包含最具代表性的异常片段。
数据是从b站和油管上收集的。
数据集构建流程
-
预处理:手工剪辑以去掉不道德内容
-
人工打标:Kappa机制训练标注者;两轮
-
后处理重要性曲线:利用三种任务优化,并使用投票机制精确识别句子对应的时间段
后处理的时候呢还是使用的之前生成初始重要性曲线时的关键句子,就是更精确的去找与关键句子匹配的时间段,降低那些不太相关的时间段
方法(A-Guardian)
-
Hard Prompts: 不同任务有不同的system message;用gpt4改进自己的prompt;添加示例避免误解;使用多轮对话
-
Soft Prompts: 使用MIST的选择器(跨模态时序注意力和Top-K选择机制)获得与问题最相关的时空特征
消融实验表明hard prompt更加有效
这篇论文的计算相似度就是dot product看谁大
按照[21]中的方法将hard prompts和soft prompts拼到一起,训练时还使用gpt生成候选答案和数据增强
仅使用cross entropy微调了选择器
评估指标(MMEval)
使用Video-ChatGPT作为基础模型,设计了三种prompts来引导模型评估任务类型,并通过设置阈值从曲线标签中提取重要事件发生的时间段,对这些时间段进行密采样以引导VLM更加关注视频中的关键部分。
这个Video-ChatGPT和MMEval到底是什么关系?其实就是让Video-ChatGPT来根据模型的回答给出分数,具体可以看附录图A8
结果讨论
-
对于自由文本任务,大多数模型对异常描述还可以,但是因果分析不行,因为这需要它有一定的推理能力来构建因果逻辑链
-
大多数模型对粗粒度(异常检测、分类)任务表现还可以,但对细粒度(时间段)不行,因为帧之间的时空关系太简单
使用GPT-4来优化prompt(这里明确的告诉了gpt数据集中的异常类型),其他的还是开源模型,感觉很省钱呀
系统信息很重要啊感觉,这篇对系统信息设计的很好,但是呢感觉这个系统信息和先前的身份模拟一个东西呀