【CVPR 灵感落地】Jetson 上跑 Streaming Vision Agent:双 Qwen3-VL-2B + 滚动多模态记忆,边拍边问“刚才发生了什么”
2026/8/4 9:33:04 网站建设 项目流程

适合人群:玩 Jetson / VLM / 多模态 Agent、想做“实时视频问答”的开发者与研究生

阅读收益:搞清「单帧检测 vs 离线短视频理解 vs 在线滚动记忆」的差别,并拿到可跑的双 2B 部署路径

硬件验证:reComputer Mini(Jetson AGX Orin 64GB)· JetPack 7.2

完整 Wiki:https://wiki.seeedstudio.com/streaming_vision_agent_on_jetson/

开源仓库:https://github.com/xbs0325/Streaming-Vision-Agent-Orin

灵感来源:WorldMM(CVPR 2026 Highlight)多模态记忆思路 —— 本 demo 是边缘侧在线滚动窗口适配,并非论文离线 EgoLife 复现


痛点先说清楚:大多数 Jetson 视觉 Demo 其实“没有记忆”

市面上常见两类演示:

  1. 单帧检测:每一帧彼此独立,物体离开画面,历史就没了

  2. 离线短片段理解:录几秒视频,丢给 VLM 跑一遍 —— 片段结束,对话也断了

两边都很难回答这种问题:

“刚才桌上放下去的是什么?” “那个东西是什么时候消失的?” “一分钟前画面里发生了什么?”

因为系统没有跨时间的在线状态

Streaming Vision Agent要做的事是:在边缘设备上维护一段在线滚动的多模态记忆(视觉嵌入、情节事件、语义事实),摄像头还在跑的时候,你就能带着证据帧 / 片段去 Ask。

设计灵感来自 WorldMM(CVPR 2026)的动态多模态记忆思路;本文对应的是 Seeed Jetson 上的实时滚动窗口 demo,不是论文 benchmark 复刻。


架构一览:记忆在写,问答不堵

作用
Visual memoryVLM2Vec 帧嵌入 + JPEG 证据(约每 5 秒)
Episodic memoryQwen3-VL-2B#1:出现 / 移动 / 消失等事件(约每 45 秒)
Semantic facts实体状态(is_at/absent_from/usually_at)+ 时间线
Ask检索记忆 → Qwen3-VL-2B#2结合轨迹与证据作答

数据流可以记成:

Camera ──► visual @ ~5s (VLM2Vec) └──► episodic @ ~45s (Qwen3-VL-2B recognition) Ask ──► retrieve memory ──► Qwen3-VL-2B answer

浏览器打开:

http://<jetson-ip>:8790/

就能看到:实时画面、滚动记忆状态、Ask 交互。

为什么要加载两个 Qwen3-VL-2B?一个负责后台识别写记忆,一个负责前台问答。双实例 + 独立锁 / CUDA stream,避免 Ask 被 recognition 堵住。显存紧可以用--shared-2b共用一个 2B(Ask 会等 recognition)。


硬件与资源门槛(先看再下模型)

项目配置
设备reComputer J501 Mini
已验证J501 Mini ·JetPack 7.2(L4T 39.2.0)
内存 / 磁盘建议 64 GB RAM· ≥50 GB 可用磁盘(模型 + venv)
摄像头USB UVC / V4L2(/dev/video0

这套默认是双 2B 实时链路,资源胃口不小;Orin 64GB 级别会舒服很多。


部署步骤(按顺序来)

1. 克隆仓库

git clone https://github.com/xbs0325/Streaming-Vision-Agent-Orin.git cd Streaming-Vision-Agent-Orin

2. 创建 Jetson Python 环境

bash script/jetson_setup.sh

默认 venv:~/leucus/.venv-worldmm(可用环境变量WORLDMM_VENV覆盖)。

激活并导出关键变量:

source "${WORLDMM_VENV:-$HOME/leucus/.venv-worldmm}/bin/activate" export PYTHONPATH="$PWD/src:$PWD:$PYTHONPATH" export WORLDMM_ATTN_IMPL=sdpa export WORLDMM_QWEN_DEVICE_MAP=cuda:0 export WORLDMM_DTYPE=bfloat16 export WORLDMM_MODELS="${WORLDMM_MODELS:-$HOME/leucus/models/worldmm}" export HF_HOME="$WORLDMM_MODELS/hf_home" unset HF_ENDPOINT

3. 下载模型

bash script/jetson_download_models.sh
模型默认双 2B 直播是否必需
Qwen3-VL-2B-Instruct是(加载两次:recognition + Ask)
Qwen3-Embedding-4B
Qwen2-VL-2B-Instruct + VLM2Vec-V2.0是(视觉记忆)
Qwen3-VL-8B-Instruct可选(WORLDMM_DOWNLOAD_8B=1--episodic-model 8b

Qwen 权重走 ModelScope;VLM2Vec 走 Hugging Face。首次下载视网络而定,建议提前留足磁盘和时间。


启动实时 Demo

接好 USB 摄像头后:

bash run.sh # 或: python script/orin_live.py --ui-port 8790 --window-min 8 \ --visual-interval 5 --episodic-interval 45

浏览器访问:

http://<jetson-ip>:8790/

默认就是dual 2B。常用可选参数:

参数含义
--episodic-model 8b用 Qwen3-VL-8B 加强识别
--shared-2b单 2B 兼任两角(省显存;Ask 会等 recognition)
--window-min 10拉长滚动记忆窗口

可选冒烟测试:

python script/orin_smoke.py --vlm qwen3vl-2b --seconds 20 \ --vlm2vec-base "$WORLDMM_MODELS/Qwen2-VL-2B-Instruct"

演示效果:你应该观察到什么

Wiki 上提供了三段 CDN 演示视频(建议直接点开看滚动记忆 + Ask):

  • https://files.seeedstudio.com/wiki/Jetson_AGX_Orin/streaming_vision_agent_demo_01.mp4

  • https://files.seeedstudio.com/wiki/Jetson_AGX_Orin/streaming_vision_agent_demo_02.mp4

  • https://files.seeedstudio.com/wiki/Jetson_AGX_Orin/streaming_vision_agent_demo_03.mp4

场景预期:

场景预期行为
稳定视角实时帧 + 状态 pill;episodic / visual 计数随时间增加
在画面中心放置/拿走物体(或其他操作)确认后出现 episodic 事件;可问 “刚才放下了什么?”
Ask:“What was just put down?”回答引用时间线 / 事实,并可附带证据 JPEG 或片段

识别侧用了中心偏置触发,以及 FULL + CENTER crop,减轻边缘手部 / 鼠标干扰。

使用心态:短窗口双 2B demo 里,个别 Ask 回合可能出现「文字说的是 A,检索到的证据图是稍早的 B」——检索会贴最近视觉证据,不一定是完美身份对齐。交互时尽量居中、一次一个物体,结果会干净很多。


本 Demo 默认模型一览

角色默认模型
Episodic recognitionQwen3-VL-2B-Instruct(实例 #1)
Ask / answerQwen3-VL-2B-Instruct(实例 #2)
文本嵌入Qwen3-Embedding-4B
视觉嵌入Qwen2-VL-2B-Instruct + VLM2Vec-V2.0 LoRA

故障排查

问题处理
打不开/dev/video0ls /dev/video*;试--device /dev/video1
huggingface_hubFileMetadataErrorunset HF_ENDPOINT;别用 hf-mirror
hub / transformers 冲突保持huggingface_hub>=0.34,<1jetson_setup.sh已钉)
OOM / 极慢别并行跑其他重 GPU 任务;试--shared-2b或加大--episodic-interval
Ask 感觉被堵住确认没有--shared-2b;默认 dual-2B 应走独立 stream
端口占用fuser -k 8790/tcp后重开

项目地址:GitHub - xbs0325/Streaming-Vision-Agent-Orin: Streaming Vision Agent for Jetson AGX Orin (JP7). Dual Qwen3-VL-2B rolling memory. Inspired by WorldMM. · GitHub


边缘侧 VLM 正从「跑通一张图」走向「跑通一段时间」。Streaming Vision Agent 把视觉 / 情节 / 语义三层记忆压进 Jetson 的滚动窗口,并拆成双 2B 避免问答与写记忆互抢——这比再贴一张 YOLO 框,更接近「能对话的现场视觉 Agent」。

如果你已经在 Orin 上跑过 Qwen-VL,下一步不妨试试:让模型记住过去几十秒,而不是只看当前帧。

评论区欢迎聊聊:你更想用它做桌面助手产线追溯,还是安防回放提问


致谢(论文引用)

本边缘 demo 灵感来自WorldMM— Dynamic Multimodal Memory Agent for Long Video Reasoning(CVPR 2026 Highlight),将 visual / episodic / semantic 三层记忆思路适配到 Jetson 实时滚动窗口。

@inproceedings{yeo2026worldmm, title = {WorldMM: Dynamic Multimodal Memory Agent for Long Video Reasoning}, author = {Yeo, Woongyeong and Kim, Kangsan and Yoon, Jaehong and Hwang, Sung Ju}, booktitle = {Proceedings of the IEEE/CVF Conference on Computer Vision and Pattern Recognition (CVPR)}, month = {June}, year = {2026}, pages = {25599-25609} }

同时感谢 HippoRAG、VLM2Vec 以及上游 WorldMM 实现(Apache-2.0)。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询