三亩地 三亩地SAN MU DI · CODE DIARY
ARTICLE DETAIL

日记详情

真实记录编程学习的某一天,欢迎挑你感兴趣的翻一翻。

UniTraffic-Agent:基于FETV与PSI-VQA的交通视频智能问答系统架构解析

UniTraffic-Agent:基于FETV与PSI-VQA的交通视频智能问答系统架构解析

1. 项目背景与赛道解读:为什么交通视频推理是AI落地的硬骨头

如果你关注过近几年的AI顶会,会发现一个趋势:纯刷榜的模型研究热度在下降,而面向真实场景、解决复杂问题的“AI+行业”挑战赛正变得越来越火。AI City Challenge就是其中最具代表性的一个,它由英伟达等机构主办,直接把学术界的研究拉到真实的城市交通摄像头前进行“实战检验”。今年的Track 3赛道——“交通异常推理”,更是把难度拔高到了一个新层次。它不再仅仅是检测一辆车、识别一个人,而是要求AI系统像一位经验丰富的交警或调度员一样,看完一段交通监控视频后,能回答关于其中“异常事件”的开放式问题。

这听起来简单,实则是个系统工程。想象一下,你面对的是一个城市十字路口的半小时录像。问题可能是:“下午3点15分,东向西方向为何出现拥堵?” 要回答这个问题,AI需要:1)理解“拥堵”这个抽象概念在视频像素上的具体表现(车辆缓行、排队变长);2)精准定位到“下午3点15分”和“东向西方向”这个时空片段;3)从视频中寻找导致拥堵的“根因”(比如,是一辆抛锚的卡车,还是一次违规变道引发的连锁反应)。这要求模型同时具备细粒度的时空理解能力复杂的因果推理能力以及对交通领域知识的掌握

更“变态”的是,今年的赛题还引入了两项域外评估。这意味着,官方用来最终评判你模型好坏的测试集,其数据分布(比如摄像头角度、城市景观、天气条件、车辆类型)跟你用来训练模型的数据集可能完全不同。这直接戳中了当前很多视觉模型的软肋:在精心标注的实验室数据上表现优异,一到真实的、未曾见过的街头,性能就大幅跳水。所以,参加这个比赛,你本质上是在解决两个问题:一是如何让AI学会“思考”交通场景;二是如何让这个“思考能力”足够鲁棒,能泛化到任何一条它从未去过的街道。

我们的项目“UniTraffic-Agent”就是针对这两个核心挑战的一次尝试。它不是一个单一的模型,而是一个统一的智能体框架,旨在将视频理解、知识推理和领域适应这几个模块有机地整合在一起,端到端地处理交通视频问答任务。接下来,我会拆解我们是如何构建这个智能体,并一步步攻克上述难题的。

2. 核心架构设计:从“看”到“想”的智能体流水线

面对“视频问答”这种任务,一个常见的误区是试图用一个巨大的端到端模型吞下所有数据。这在简单QA上或许可行,但对于需要深度推理的交通异常分析,往往力不从心。我们的设计哲学是“分而治之,协同工作”,将整个系统构建为一个多模块的智能体(Agent)。这个智能体的核心工作流,模拟了人类专家分析视频的思维过程:

第一步:感知与描述(Perception & Captioning)智能体首先需要“看”懂视频。我们采用了一个强大的视频-语言基础模型作为“眼睛”,它的任务不是直接回答问题,而是为视频生成一段稠密且结构化的文本描述。这段描述不是简单的“有车,有人,有路”,而是接近于剧本:

“[00:01-00:15] 镜头视角为俯视十字路口东北角。天气晴朗,光照充足。东进口道车辆排队约5辆,缓行速度低于5km/h;西进口道畅通。行人信号灯为红色。” “[00:16-00:30] 一辆银色轿车(疑似网约车)在路口中央斑马线附近突然减速并打开双闪,后续车辆被迫变道至左侧车道……”

这种时序化的、包含实体、状态、动作和简单关系的描述,将高维的、连续的像素流,转化为了低维的、离散的符号序列,为后续的推理奠定了坚实的基础。

第二步:知识增强与上下文构建(Knowledge Augmentation & Context Building)仅有视觉描述还不够。要理解“异常”,必须知道什么是“正常”。智能体内部集成了一个轻量级的交通规则知识库常见场景模式库。例如,知识库中会定义:“在信号灯控制的交叉口,车辆在绿灯期间应有序通过,无故在通行相位内完全停止属于异常停车”。当视频描述中出现“轿车在绿灯亮起后10秒内未移动”时,智能体会自动关联这条知识,将其标记为一个潜在的异常线索。

同时,智能体会根据问题,从冗长的视频描述中提取出最相关的片段,并结合知识库的规则,构建一个针对当前问题的推理上下文。这个过程就像侦探在卷宗中高亮出关键证据。

第三步:推理与作答(Reasoning & Answering)这是智能体的“大脑”核心。我们采用了基于大型语言模型的推理引擎。将上一步构建的“视频描述片段 + 相关知识规则 + 用户问题”一起输入给LLM。我们通过精心设计的提示词工程,引导LLM进行多步推理(Chain-of-Thought)。例如: 问题:“东向西方向拥堵的主要原因是什么?” LLM的推理链可能被引导为:

  1. 定位时空:从描述中确认“东向西方向”在视频中对应哪个车道,拥堵的时间段。
  2. 识别异常事件:在对应时空片段中,查找所有偏离正常交通流的状态(如停车、慢行、事故)。
  3. 建立因果关系:判断哪个异常事件在时间上最先发生,并直接阻碍了后续车流的通行(例如,抛锚车是“因”,后方车辆排队是“果”)。
  4. 归纳总结:将根本原因用自然语言表述出来。

最终,LLM输出结构化的答案。整个过程中,视频基础模型、知识库和LLM各司其职,又通过统一的接口(文本)进行通信,构成了一个可迭代、可解释的推理智能体。

3. 攻克域外泛化:双策略应对“未知的街道”

域外评估是本次比赛最大的拦路虎。我们的训练数据可能来自美国某个城市的摄像头(晴天、宽阔道路、特定车型),而测试数据可能来自日本(雨天、狭窄街道、不同的车辆外观)。如果模型过拟合了训练集的表面特征(如车辆颜色、建筑风格),必将失败。

我们在UniTraffic-Agent中实施了两种核心策略来提升泛化能力:

策略一:表征层面的去偏与对齐我们意识到,让视频模型直接学习像素到答案的映射,极易学到数据偏见。因此,我们强调让模型学习任务相关的、域不变的中间表征。具体做法是:

  1. 多数据集预训练:在视频描述生成模型训练阶段,我们就混合使用了多个来源、不同城市、不同天气的交通监控数据集,迫使模型去关注“交通参与者之间的互动关系”、“运动模式”等本质特征,而不是背景细节。
  2. 对抗性领域判别:在模型的特征提取层后,引入了一个领域分类器,并采用梯度反转层进行对抗训练。这个分类器试图判断特征来自哪个数据集(域),而特征提取器则要努力“欺骗”分类器,让它无法判断。经过这种博弈,特征提取器学到的特征就会尽可能剥离掉域特有的信息。

策略二:推理层面的知识引导与提示词鲁棒性这是我们认为更关键的一环。即使视觉感知模块在陌生场景下对某些实体识别略有偏差(如把一种陌生的三轮车识别为“小型货车”),只要核心的事件逻辑和因果关系被正确捕捉,智能体依然有可能通过推理得出正确结论。

  1. 知识库作为稳定器:我们的交通规则知识是符号化的、抽象的,不依赖于具体视觉特征。“闯红灯”的定义在任何城市都适用。当感知模块输出“车辆在红色信号灯期间穿越了停车线”的描述时,无论这辆车长什么样,知识库都能将其关联到“交通违规”这一异常类别。
  2. 提示词泛化设计:我们为LLM设计的推理提示词,刻意避免使用可能具有域特定色彩的词汇。例如,我们不写“请根据典型的美国十字路口布局分析”,而是写“请根据通用的交通流原理和车辆互动关系分析”。我们还在提示词中明确要求LLM“专注于事件的时间逻辑和因果关系,对物体识别的微小偏差保持容忍”,这相当于给LLM注射了一剂“泛化镇静剂”。

实操心得:对抗训练听起来美好,但调参非常敏感。我们发现,领域分类器的学习率需要设置得比主模型小一个数量级,否则它太弱,起不到对抗作用;太强,又会破坏主任务的特征学习。一个实用的技巧是,先正常训练主模型几个epoch,再开启对抗训练,这样模型能先学到一些基础特征,稳定性更好。

4. 关键技术点深度拆解:FETV与PSI-VQA的融合之道

在实现上述框架时,我们重点集成了两类前沿技术,这也是相关热搜词所指向的核心:FETVPSI-VQA。它们并非直接替代我们的模块,而是作为强大的组件被嵌入到智能体的不同环节。

4.1 FETV:让视频描述“事无巨细”

FETV 代表“Fine-grained Event-centric Textualization of Video”,即以细粒度事件为中心的视频文本化。传统的视频描述模型可能只会说“路上有很多车”,而FETV驱动的描述生成器会输出: “一辆白色SUV(主体)从右侧车道(空间)加速(动作)超越(关系)了一辆蓝色卡车(客体),与此同时(时间),卡车司机打开了左转向灯(并发事件)。”

我们将一个开源的FETV模型作为我们智能体“感知模块”的核心引擎。它的优势在于:

  • 结构化输出:生成的描述天然带有(主体,动作,客体,时间,位置)的元组结构,这极大方便了后续程序化地抽取实体和关系,构建推理所需的语义图。
  • 事件为中心:交通场景的本质就是一系列连续事件的叠加。FETV的关注点正是动态的“事件”,而非静态的“物体”,这与异常检测的需求高度吻合。一次“碰撞”异常,就是一个由“车辆A偏离车道”、“车辆B正常行驶”、“两者空间交集”等多个子事件构成的复合事件。

4.2 PSI-VQA:将问题拆解给专业模块

PSI-VQA 代表“Program-guided Spatial-temporal Inquiry for Video Question Answering”,即程序引导的时空查询视频问答。它的核心思想是:一个复杂的视频问题,可以被分解成一系列简单的、可执行的“子程序”(Program)。

在我们的框架中,PSI-VQA的理念被应用在推理规划层。当LLM接收到原始问题时,它首先不是直接回答,而是生成一个“推理程序”。例如: 问题:“第三辆通过停止线的摩托车是否闯了红灯?” LLM生成的推理程序可能是:

  1. Find_all(“摩托车”, video)-> 找出视频中所有摩托车。
  2. Filter_by_action(step1_result, “通过停止线”)-> 筛选出有“通过停止线”动作的摩托车。
  3. Sort_by_time(step2_result)-> 按通过时间排序。
  4. Select_index(step3_result, 3)-> 选取第三辆。
  5. Check_status_at_time(step4_result, “信号灯”, “红色”)-> 检查该摩托车通过时,信号灯是否为红色。
  6. If(step5_result is True, “是”, “否”)-> 输出最终答案。

然后,这个程序会被分发给智能体内不同的“执行器”:Find_allFilter_by_action由感知模块(FETV描述)处理;Check_status_at_time需要查询知识库和视频描述的时序状态。这种“规划-执行”的范式,将复杂的推理任务分解,降低了LLM一次性生成答案的负担,提高了答案的准确性和可解释性。

4.3 我们的融合实践

在我们的UniTraffic-Agent中,FETV和PSI-VQA不是二选一,而是协同工作。FETV作为底层、通用的“视觉转文本”感知器,为整个系统提供丰富的原始素材。PSI-VQA的思想则作为高层、任务导向的“推理控制器”,指导如何高效地利用这些素材来解答特定问题。

我们做了一个重要的改进:传统的PSI-VQA其“子程序”通常是预定义好的有限集合。而在我们基于LLM的智能体中,这个“程序生成”步骤是开放域的。LLM可以根据千变万化的问题,动态生成最贴切的推理步骤链,灵活性大大增强。

踩坑实录:最初我们尝试让LLM直接生成可执行的Python代码作为“程序”,但发现其格式极不稳定,且存在安全隐患。后来我们退而求其次,设计了一套受限的、结构化的自然语言指令集作为“程序”的输出格式,再由一个轻量级的解析器将其映射到内部函数调用。虽然增加了一点复杂度,但稳定性和安全性得到了保障。

5. 实验、迭代与效果分析

任何AI项目都离不开“实验-分析-迭代”的循环。我们的开发过程充满了AB测试和消融实验。

5.1 评估指标与基线选择

比赛的核心指标是答案的准确率。但由于是开放式问答,直接判断文本是否完全匹配标准答案过于严苛。因此,官方通常会采用基于自然语言理解(如BERTScore)的语义相似度评分,或者由人工评估来打分。我们自己搭建评估管道时,除了准备标准测试集,还构建了一个**“挑战性子集”**,其中包含了大量域外场景的模拟数据(通过风格迁移、天气模拟等方式对训练集进行扰动得到)。

我们选择了几个强大的基线模型进行对比:

  1. 纯端到端VQA模型:如基于Video Swin Transformer + LLM的模型,直接输入视频片段和问题,输出答案。
  2. 模块化方法(无知识库):类似我们的框架,但去掉了交通规则知识库,仅依靠视觉描述和LLM常识推理。
  3. 大型多模态模型(LMM):直接使用GPT-4V或同类模型,输入视频关键帧和问题。

5.2 迭代过程中的关键发现

  • 消融实验结论

    • 知识库至关重要:在“判断某行为是否违规”这类问题上,引入知识库的版本比纯视觉+LLM常识的版本准确率高出超过15%。LLM的常识有时是模糊的,而交通规则是精确的。
    • FETV描述的质量是瓶颈:我们发现,最终答案的错误,有超过60%可以追溯到FETV生成的描述中遗漏了关键事件或关系。因此,我们投入大量精力对FETV模型进行交通场景的微调,用高质量的数据反复“喂养”它。
    • 提示词工程的价值不亚于模型调优:为LLM设计一个逻辑清晰、角色明确(“你是一个经验丰富的交通分析师…”)、且包含少样本示例的提示词模板,其带来的性能提升有时相当于将LLM的参数量扩大一倍。我们为此专门建立了一个提示词版本管理系统。
  • 应对域外评估的策略有效性分析: 我们在自建的“挑战性子集”上测试了不同策略。结果显示,“表征去偏+知识引导”的双策略组合效果最好。单独使用对抗训练,在严重域外数据上(如从白天到黑夜)仍有较大性能衰减;而单独依赖知识引导,当感知模块错误太严重时(如把行人误识别为车辆),推理也会被带偏。两者结合,形成了互补的鲁棒性。

5.3 性能表现与局限

最终,我们的UniTraffic-Agent在内部测试中,相较于强大的基线模型(如GPT-4V),在交通专属的推理问题上展现出显著优势,特别是在因果分析规则应用类问题上。我们的框架在答案的可解释性上得分最高,因为整个推理链是透明的。

当然,系统仍有明显局限:

  1. 实时性不足:由于涉及多个大型模型串行处理,目前的流水线无法达到实时分析,更适合事后复盘。
  2. 对描述错误的容错仍有提升空间:虽然我们通过推理进行了一定纠偏,但如果FETV在关键物体识别上完全失败(如没看到那辆抛锚车),后续推理就无从谈起。
  3. 知识库的构建与更新是长期负担:交通规则、地方性交规、甚至新的交通现象(如电动滑板车)都需要持续更新知识库。

6. 从比赛到落地:项目价值的再思考

完成这样一个比赛项目,其意义远不止于提交一份结果和争取名次。UniTraffic-Agent的探索,为我们揭示了AI在复杂现实场景中落地的一条可能路径:

价值一:验证了“感知-知识-推理”分层架构的可行性。在工业界,直接堆砌大模型往往成本高昂且效果不稳定。我们的实践表明,将问题分解,让合适的工具(专业视觉模型、领域知识库、通用LLM)做合适的事,并通过清晰接口串联,能够构建出既强大又相对可控的系统。这种架构思想可以平移到安防、工业质检、医疗影像分析等多个需要深度推理的领域。

价值二:强调了领域知识在专业AI中的核心地位。在通用视觉-语言模型如火如荼的今天,我们的项目是一个清醒的提醒:在垂直领域,注入精准的领域知识,其性价比可能远高于盲目扩大基础模型的参数。一个轻量级的、结构化的知识库,能起到“四两拨千斤”的作用。这对于很多资源有限但业务逻辑明确的企业来说,是更具操作性的AI落地方式。

价值三:提供了应对数据域迁移问题的组合拳思路。纯粹依赖数据增强和模型正则化来应对域外场景,成本高且上限可见。我们结合“表征学习”和“符号推理”两种范式的思路,为提升AI系统的泛化能力提供了一个新的视角:一方面在特征层面“去伪存真”,另一方面在推理层面“以不变应万变”。

个人体会与后续方向

在实际构建UniTraffic-Agent的几个月里,最深切的体会是:解决现实世界的AI问题,工程设计和系统思维的重要性,常常不亚于甚至超过算法本身的创新。如何设计模块间的数据流转协议?如何管理不同模型的推理延迟?如何构建一个能够自动评估答案质量的流水线?这些“脏活累活”决定了系统最终能否跑通、跑稳。

如果这个项目要继续深入,我会优先做两件事:一是探索更轻量化的多模态模型来替代部分重型模块,向实时推理迈进;二是设计一个知识库的半自动构建与更新机制,也许可以利用LLM从海量的交通法规文本和事故报告中自动抽取、结构化知识,减轻人工维护的负担。交通世界的复杂性是无穷的,让AI真正理解并驾驭这种复杂性,我们才刚刚上路。

← 返回列表