news 2026/6/10 10:46:05

【论文阅读24】-利用大型语言模型进行免训练的视频异常检测

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
【论文阅读24】-利用大型语言模型进行免训练的视频异常检测

😊文章背景

题目:Harnessing Large Language Models for Training-Free Video Anomaly Detection

期刊:IEEE

检索情况:

作者:Luca Zanella; Willi Menapace; Massimiliano Mancini; Yiming Wang; Elisa Ricci

单位:University of Trento1 Fondazione Bruno Kessler2

发表年份: 16-22 June 2024

DOI:10.1109/CVPR52733.2024.01753

网址:Harnessing Large Language Models for Training-Free Video Anomaly Detection | IEEE Conference Publication | IEEE Xplore

❓ 研究问题

传统的视频异常检测(VAD)主要面临三个大坑:

  • 训练太麻烦:不管是有监督训练还是无监督训练都需要收集大量数据去训练模型。

  • 数据难搞:监控视频涉及隐私,而且现实中异常事件发生频率很低,很难收集全 。

  • 泛化性差:在这个场景训练好的模型,换个场景可能就废了 。

📌 研究目标

组合现成的VLM(视觉语言模型)LLM(大语言模型),提出了 LAVAD (LAnguage-based VAD) 方法 。

✨整体框架

作者设计了一个流水线,完全不需要训练,直接用现成的模型(Frozen models)来推理。

  • 第一步:看图说话 (Captioning & Cleaning)

    • 先用BLIP-2这种模型,把视频的每一帧画面转成文字描述(Caption)。
    • 问题:生成的文字有时候是瞎说的(噪声)。

    • 解决:用CLIP/ImageBind算一下图文相似度,在一段视频里挑出跟画面最匹配的那个句子,把“胡言乱语”清洗掉 。

  • 第二步:总结剧情 (Temporal Aggregation)

    • 单看一帧画面很难判断是不是异常(比如一个人在跑,是在晨练还是在逃命?)。

    • 作者把前后几秒的文字描述扔给LLM (Llama-2),让它总结这几秒内发生了什么(Temporal Summary),加上了时间维度的上下文 。
  • 第三步:让大模型打分 (Scoring)

    • 这是最骚操作的一步。直接用 Prompt(提示词)问 LLM:

    • “假设你是执法机构,请根据这段描述,给场景打个分(0-1分),0是正常,1是可疑活动。”

    • LLM 靠自己的“常识”就能判断出“持枪”或“打架”是高分异常。

  • 第四步:查漏补缺 (Refinement)

    • 为了防止大模型偶尔看走眼,作者还用视觉特征把相似的视频片段聚在一起,如果画面长得像,分数也应该接近,以此平滑最终的异常分数 。

🧠 所用方法

一、BLIP-2模型

BLIP-2 (Bootstrapping Language-Image Pre-training) 的核心思想是“借用大佬的脑子。它发现现成的大语言模型(LLM)已经很聪明了,只是看不见东西。

  • 它的创新:它设计了一个轻量级的组件叫Q-Former

  • 工作流程

    1. 用一个冻结的视觉模型(ViT)看图。

    2. Q-Former把看到的视觉特征“翻译”成 LLM 能听懂的 token(虽然人类看不懂这些中间token)。

    3. 把翻译好的 token 喂给冻结的大语言模型(LLM)。

    4. LLM 以为自己读到了一段话,于是顺势续写出:“A cat sitting on a sofa”。

二、Q-Former

1. 核心任务:信息“瓶颈” (Information Bottleneck)

Q-Former 的设计非常巧妙,它故意设计得很轻量(参数少),卡在巨大的“视觉模型”和巨大的“语言模型”中间。

  • 输入端:面对的是视觉模型(Image Encoder)输出的海量图片特征。

  • 输出端:给大语言模型(LLM)喂的是少量、精简的特征(Visual Tokens)。

Q-Former 强迫自己只提取图片里“跟文本最相关”的信息,把背景里的那些无用噪点(比如墙角的灰尘、无关的路人)都过滤掉。

2. 秘密武器:可学习查询向量 (Learnable Queries)

这是 Q-Former 最天才的地方。它不被动地接收图片信息,而是主动去“查”

  • 设定:Q-Former 内部初始化了一组固定的向量(比如 32 个),我们叫它Learnable Queries(可学习的查询)。

  • 比喻:你可以把这 32 个 Queries 想象成32 个拿着空白笔记本的记者

  • 工作流程

    1. 进入现场:这 32 个记者进入“图片特征空间”。

    2. 交叉注意力 (Cross-Attention):它们通过 Cross-Attention 机制,在图片特征里到处看。有的记者专门负责记录“颜色”,有的负责记录“动作”,有的负责“物体”。

    3. 填满笔记:记者们把看到的信息填进自己的向量里。

    4. 交作业:最后,这 32 个填满信息的向量(Visual Tokens),就是 Q-Former 的输出。

结果:原本巨大的图片数据,被压缩成了这 32 个精华向量。LLM 只要读懂这 32 个向量,就能知道图里有啥。

3. 三大训练任务

为了让 Q-Former 能够精准地“翻译”图片,BLIP-2 让它在预训练时做了三份试卷:

  1. 图文对比 (Contrastive Learning):让 Q-Former 判断这张图和这句话是不是一对。(这就给了它类似 CLIP 的能力,能算相似度)

  2. 图文生成 (Image-grounded Text Generation):给一张图,让 Q-Former 辅助生成对应的描述文本。

  3. 图文匹配 (Image-Text Matching):更细粒度的二分类任务,判断图文是否匹配。

4.对本论文意义?

LAVAD 这篇论文之所以能成,全靠 Q-Former 的两个特性:

  1. 生成能力:它能把视频帧变成文字,让后面的 LLM 有东西可读 。

  2. 对齐能力 (Alignment):论文中清洗字幕 (Caption Cleaning)分数修正 (Refinement)两个步骤,都需要计算“画面”和“文字”像不像 4。因为 Q-Former 已经把视觉特征映射到了和文本一致的空间,所以可以直接算余弦相似度(Cosine Similarity)。

✅ 启示

  • Pipeline 思维:现在的趋势不是非要自己从头炼一个网,而是如何巧妙地串联现成的大模型(VLM + LLM)来解决特定问题。

  • Prompt Engineering:注意文中是怎么问 LLM 的(角色扮演:“你是个警察”),这能显著提高模型输出的准确性 。

  • 清洗数据很重要:直接用多模态模型的输出通常会有噪声,文中设计的“图文匹配清洗”步骤是提分的关键 (Ablation Study 证明如果不清洗,性能掉很多)。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/6/10 2:00:30

Vim高效光标移动方案:EasyMotion与Sneak插件深度对比

Vim高效光标移动方案:EasyMotion与Sneak插件深度对比 【免费下载链接】vim-galore :mortar_board: All things Vim! 项目地址: https://gitcode.com/gh_mirrors/vi/vim-galore 你是否曾因在长代码文件中频繁使用方向键而打断编程思路?是否在调试时…

作者头像 李华
网站建设 2026/6/10 12:06:01

200React-Query基础

一、导入使用 pnpm add tanstack/react-query二、以往请求接口 import {useEffect, useState} from react import { fetchDate } from ../helper import { List} from ../Listfunction Demo(){const [data, setData] useState([]);const initialDate async() >{try {steDa…

作者头像 李华
网站建设 2026/6/10 12:08:23

小白大模型课程30分钟:从认知到进阶之路

建立对大模型的正确认知,分清 “神话” 与 “现实”,掌握核心概念; 理解大模型的基本工作原理,不用代码也能搞懂 “为什么它能对话”; 熟练使用主流大模型工具(ChatGPT、DeepSeek等)&#xff0c…

作者头像 李华
网站建设 2026/6/10 13:56:39

14、编程中的条件判断、循环及相关命令详解

编程中的条件判断、循环及相关命令详解 在编程过程中,条件判断和循环是非常重要的部分,它们能让程序根据不同的情况执行不同的操作,或者重复执行某些操作。下面将详细介绍一些相关的命令和技巧。 1. 字符分类程序 ctype ctype 程序用于对输入的字符进行分类,判断其是…

作者头像 李华
网站建设 2026/6/10 1:25:00

Rust UI框架终极对比:GPUI Component vs Iced vs egui

Rust UI框架终极对比:GPUI Component vs Iced vs egui 【免费下载链接】gpui-component UI components for building fantastic desktop application by using GPUI. 项目地址: https://gitcode.com/GitHub_Trending/gp/gpui-component 在当今软件开发领域&a…

作者头像 李华