StableLearn Logo

搜索内容

CV 15 min read

MOSS-VL-Realtime 开源:11B 实时视频理解模型,真正开始边看边回答

MOSS-VL-Realtime 技术介绍与快速开始:OpenMOSS 开源 11B 实时视频理解模型,支持 256K 上下文、时间戳帧输入、边看边答、主动沉默和动态修正,适合连续视频流多模态理解。

Cover image for MOSS-VL-Realtime 开源:11B 实时视频理解模型,真正开始边看边回答

本文发布于 67 天前,内容可能已过时,请注意甄别。

OpenMOSS 团队正式开源 MOSS-VL-Realtime,这是 MOSS-VL 系列面向连续视频流的实时视觉语言模型。它不是传统意义上“先把视频看完,再回答问题”的离线视频理解模型,而是更接近一个会持续观察的多模态助手:视频帧不断进入,模型一边看,一边生成,一边等待新的证据。

这点很关键。过去很多视频多模态模型的交互方式更像“上传一段视频,问一个问题”;MOSS-VL-Realtime 的目标则是“视频还在发生,问题随时进来,回答也可以随着画面变化而改变”。

30 秒速览

  • 模型规模:11B 参数视觉语言模型
  • 许可证:Apache-2.0,可用于商业场景
  • 上下文长度:256K token
  • 核心能力:连续视频流理解、任意时间点提问、边看边答
  • 实时特性:支持主动沉默、动态修正、流式输出
  • 输入形式:PIL 兼容图像帧 + 绝对时间戳
  • 默认视频配置:1 FPS、最多 256 帧、BF16 权重
  • 开源版本:Realtime、Instruct、Base 均已开放
  • 适合场景:监控视频理解、直播内容分析、机器人视觉、会议/课堂视频助手、实时多模态 Agent

它和普通视频理解模型最大的不同

普通视频理解模型通常是离线模式:先抽帧、编码整段视频,再把问题和视频一起送进模型。这种方式适合总结、检索和问答,但不适合“事件正在发生”的场景。

MOSS-VL-Realtime 的设计目标正好相反:它面向的是 continuous video streams。

也就是说,模型可以在视频还没结束时就开始工作。你可以在任意时间点插入问题,模型会基于已经观察到的帧给出回答;如果新画面推翻了旧判断,它还可以修正之前的响应;如果证据不足,它也可以选择不说话,继续观察。

这个“可以不回答”的能力很有意思。对实时视频系统来说,胡乱猜测比沉默更危险。比如安防、机器人、驾驶辅助、工业质检这类场景,模型不知道就应该等更多画面,而不是为了生成而生成。

核心特点

1. 边看边答,而不是看完再答

MOSS-VL-Realtime 接收的是不断进入的帧流。每一帧可以带上时间戳,模型在实时 session 中持续积累视觉上下文,并按需输出文本。

这意味着它更适合做:

  • 直播画面解释
  • 视频监控事件提醒
  • 机器人第一视角观察
  • 实时屏幕/摄像头助手
  • 多模态 Agent 的视觉观察模块

2. 任意时间点提问

用户不必等视频结束。只要 session 还在运行,就可以通过 push_prompt() 把问题插入当前视频流。

这类交互非常接近真实场景:你不是把视频扔给模型后等答案,而是在模型持续观察时追问:“刚才发生了什么?”“这个人拿起了什么?”“画面里有没有异常变化?”

3. 主动沉默:没有证据就继续看

模型卡里特别提到,MOSS-VL-Realtime 可以输出 <|silence|>,表示当前没有足够重要的视觉更新,或者证据不足,需要继续观察。

这不是小功能。它让模型从“每次都要回答”变成“只在有意义时回答”。如果你在做实时监控、自动讲解、Agent 观察流,这个机制能显著减少噪声。

4. 动态修正:新画面可以推翻旧回答

实时视频理解的难点在于,早期帧给出的判断可能是不完整的。比如前几帧只看到一个人伸手,后几帧才看清他拿的是杯子还是手机。

MOSS-VL-Realtime 的目标不是锁死第一次判断,而是允许模型随着新帧进入修正理解。这比一次性离线问答更接近人类观看视频的过程。

5. 时间戳感知视频编码

模型支持给每个输入帧注入绝对时间戳。这样模型不仅知道“第几帧”,还可以理解“什么时候发生”“持续多久”“事件节奏如何变化”。

这对于细粒度时序任务很重要。比如:

  • 事件先后顺序判断
  • 动作持续时间估计
  • 画面变化节奏理解
  • 多轮视频追问中的时间定位

6. XRoPE:把文本和视觉 patch 放进统一坐标

MOSS-VL 使用 Cross-attention Rotary Position Embedding,也就是 XRoPE。简单理解,它把文本 token 和视觉 patch 映射到统一的三维位置空间:时间 t、高度 h、宽度 w。

这个设计的意义是统一图像、离线视频和实时视频的位置信息。对实时视频来说,模型不仅要知道画面里有什么,还要知道它在什么时候、画面哪个位置出现。

模型配置

项目配置
模型MOSS-VL-Realtime
参数量11B
权重类型BF16
上下文长度256K
视觉 patch size16
temporal patch size1
默认视频 FPS1.0
默认最大视频帧数256
实时输入格式PIL 兼容图像 + timestamp
session 限制单个模型实例支持一个 active realtime session
许可证Apache-2.0

三个开源版本怎么选?

OpenMOSS 这次不是只放了一个 checkpoint,而是把 MOSS-VL 系列分成了几个用途:

模型用途
MOSS-VL-Realtime实时视频流交互,适合边看边答
MOSS-VL-Instruct离线图像/视频多模态指令跟随,普通问答优先选它
MOSS-VL-Base继续预训练、微调和研究
MOSS-VL-Instruct-0408旧版指令模型
MOSS-VL-Base-0408旧版基础模型

如果你只是做图片理解、完整视频问答、离线批处理,MOSS-VL-Instruct 可能更合适。
如果你要接摄像头、直播流、视频帧队列、实时 Agent,才应该优先看 MOSS-VL-Realtime。

快速开始

下面是最小可跑路径。官方推荐从 MOSS-VL 仓库安装依赖,再通过 Transformers 加载 Hugging Face checkpoint。

1. 安装环境

   git clone https://github.com/OpenMOSS/MOSS-VL.git
cd MOSS-VL

conda create -n moss_vl python=3.12 pip -y
conda activate moss_vl

pip install -i https://pypi.org/simple --no-build-isolation -r requirements.txt

建议使用支持 BF16 的 NVIDIA GPU。模型规模是 11B,实际显存占用会和设备映射、FlashAttention、帧数、生成长度有关。

2. 加载模型

   import torch
from transformers import AutoModelForCausalLM, AutoProcessor

checkpoint = "OpenMOSS-Team/MOSS-VL-Realtime"

processor = AutoProcessor.from_pretrained(
    checkpoint,
    trust_remote_code=True,
    frame_extract_num_threads=1,
)

model = AutoModelForCausalLM.from_pretrained(
    checkpoint,
    trust_remote_code=True,
    device_map="auto",
    torch_dtype=torch.bfloat16,
    attn_implementation="flash_attention_2",
)

model.eval()

如果你的环境没有安装 FlashAttention,可以把加载参数改成:

   attn_implementation="eager"

3. 创建实时 session

实时能力的关键是 create_realtime_session()。你可以给它一个初始指令,让模型在视频流中只报告重要变化,不要每帧都废话。

   session = model.create_realtime_session(
    processor,
    initial_prompt=(
        "Watch the video stream frame by frame. "
        "Describe important changes only when they happen. "
        "Stay silent if there is not enough evidence."
    ),
    frame_queue_size=256,
    max_tokens_per_turn=12,
    max_new_tokens=4096,
    do_sample=False,
)

几个参数值得注意:

  • frame_queue_size=256:限制待处理帧队列,降低延迟压力
  • max_tokens_per_turn=12:控制每轮实时输出的长度,避免模型说太多
  • max_new_tokens=4096:控制 session 内可生成的总 token
  • do_sample=False:更适合实时监控和稳定输出

4. 推送视频帧

每帧需要是 PIL 兼容图像,同时带上 timestamp。

   import time
from PIL import Image

frame_paths = [
    "data/frame_0001.jpg",
    "data/frame_0002.jpg",
    "data/frame_0003.jpg",
]

try:
    session.start()

    for index, path in enumerate(frame_paths):
        image = Image.open(path).convert("RGB")
        session.push_frame(image, timestamp=float(index))

        while True:
            chunk = session.poll_output(timeout=0.0)
            if chunk is None:
                break
            print(chunk, end="", flush=True)

        time.sleep(1.0)
finally:
    session.close()

这里的 timestamp=float(index) 只是演示。真实视频流里,你应该传入来自摄像头、播放器或流媒体系统的实际时间戳。

5. 在视频流中追问

session 运行期间,可以随时插入问题:

   session.push_prompt("What changed in the latest frames?")

然后继续读取输出:

   deadline = time.monotonic() + 5.0

while time.monotonic() < deadline:
    chunk = session.poll_output(timeout=0.1)
    if chunk is not None:
        print(chunk, end="", flush=True)

注意:realtime session 会等待未来输入,所以生产代码里要有明确的 drain window 和 session.close(),不要让 session 无限制挂着。

在线推理和离线推理怎么理解?

MOSS-VL-Realtime 的核心当然是在线推理,也就是 session 风格的视频流输入。但它仍然保留了一些离线 image/video prompt API。

你可以这样理解:

  • 在线推理:适合摄像头、直播、流媒体、机器人、实时 Agent
  • 离线推理:适合完整视频问答、批量分析、图像理解

但如果你明确只做离线任务,官方也提示 MOSS-VL-Instruct 通常是更优先的 checkpoint。

应用场景

1. 实时视频监控

模型可以在画面变化时主动描述事件,在没有变化时保持沉默。比起每隔几秒固定总结一次,这种方式更适合低噪声监控。

2. 机器人视觉助手

机器人第一视角视频是持续流,动作和环境都在变化。MOSS-VL-Realtime 的时间戳帧输入和动态修正能力,天然适合做“观察模块”。

3. 直播内容理解

直播分析不是等直播结束后总结,而是边看边解释。这个模型可以用于直播讲解、异常检测、内容索引和实时字幕增强。

4. 多模态 Agent

很多 Agent 现在缺的是实时视觉感知。MOSS-VL-Realtime 可以作为视觉观察器,把视频流变成可被语言模型继续推理的文本事件流。

5. 工业和实验场景

流水线、实验室、医疗设备、屏幕录制等场景都有连续视觉流。模型的主动沉默和动态更新机制,能减少无意义输出。

局限性

MOSS-VL-Realtime 很有想象力,但不是“接上摄像头就能无脑生产”的模型。

需要注意:

  • 延迟依赖硬件:GPU、帧率、网络传输、解码速度都会影响端到端延迟
  • 一个模型实例一个 active realtime session:高并发需要多实例或服务层调度
  • 帧队列会丢弃旧帧:这是为了控制延迟,但也可能丢掉细节
  • 控制 token 需要处理:例如 <|silence|>、<|round_start|>、<|round_end|>,前端或服务端要过滤或渲染
  • 实时评测仍在发展:这类模型不能只看传统视频问答分数,还要看响应时机、沉默策略和修正质量

和现有视频多模态模型相比,真正的新东西是什么?

MOSS-VL-Realtime 最大的价值不是“又一个 11B 视频模型”,而是它把视频理解从离线任务推向了实时交互任务。

过去的问题是:模型看完视频再回答。
现在的方向是:模型持续看、及时答、必要时不答、发现新证据再改答。

这会影响很多多模态应用的形态。视频不再只是一个上传文件,而是一个持续输入源;模型不再只是问答器,而更像一个观察者。

结语

MOSS-VL-Realtime 的开源,把实时视频理解这件事向前推了一步。

它最值得关注的不是参数量,而是交互范式:timestamp-aware frame streaming + proactive silence + dynamic correction。这三个能力合在一起,才让它从普通视频问答模型变成真正面向实时视觉场景的多模态模型。

如果你正在做视频 Agent、摄像头助手、直播理解、机器人视觉或监控分析,MOSS-VL-Realtime 值得第一时间试一下。

参考来源:

分享文章

更多文章