om-ai-lab/VLX-Seek

VLX-Seek is a device-native vision-language model that enables machines to see, understand, and reason about the visual world with high precision.

TL;DR

VLX‑Seek 是一个开源视觉-语言模型(VLM),使边缘设备代理(无人机、机器人、摄像头等)能够理解图像中 有什么 以及 在哪里 。与要求模型输出原始边界框数值不同,VLX‑Seek 首先生成一组候选区域,将每个区域转换为特殊的“区域令牌”(region token),然后让语言模型选择或引用这些令牌。结果是紧凑、基于令牌的输出,可用于检测、指代表达理解、OCR、计数和其它细粒度感知任务的映射。


仓库内容

项目 描述
inference.py 命令行演示,加载 10 B VLX‑Seek 检查点,运行可选的区域检测器(WeDetect),并打印检测或 VQA 的 JSON 和视觉结果。
vlx_seek/vlx_seek 包) 模型架构、混合细粒度区域编码器(HFRE)、令牌到区域的映射,以及 VLXSeekWorker Python 包装器。
requirements.txt Python‑3.10+ 依赖项(PyTorch、transformers 等)。
docs/ 详细的推理指南、支持的任务和 API 参考。
demo/ README 中使用的示例图像。
assets/ 标志、示例结果截图和社区二维码。
resources/(可选) 存放下载的 VLX‑Seek 检查点和 WeDetect 检测器权重的位置。

核心思想

  1. 区域优先流水线 – 轻量级检测器提出框;每个框变为一个 区域令牌<obj0><obj1>、…)。
  2. 混合细粒度区域编码器(HFRE) – 将高层语义路径(基础 VLM)与细节丰富的局部路径融合,生成与 LLM 令牌处于同一空间的嵌入。
  3. 基于令牌的推理 – 语言模型接收图像令牌、文本查询和区域令牌,然后通过输出区域 ID(例如 <obj2><obj5>)而非数值坐标来回答。这更短、更易解析,且与 LLM 自然选择实体的方式一致。
  4. 开放词汇与拒绝 – 当无区域匹配时,模型可回答“none”,减少幻觉检测。

可实现的功能

  • 开放词汇检测 – 询问任意对象(例如:"orange; apple")。
  • 指代表达理解 – 定位自然语言描述的特定实例。
  • 区域 OCR / 描述生成 – 读取选定框中的文本或生成详细描述。
  • 计数 – 返回匹配区域的数量。
  • 通用 VQA – 在无需任何提议的情况下回答关于整张图像的问题。
  • 多步视觉推理 – 由于区域令牌是普通语言令牌,模型可以比较、对比并解释其选择。

快速入门

# 1. 克隆并安装
git clone https://github.com/om-ai-lab/VLX-Seek.git
cd VLX-Seek
pip install -r requirements.txt

# 2. 运行检测(提案自动生成)
python inference.py \
  --image-path demo/demo_image.jpg \
  --task detection \
  --text "orange; apple"

# 3. 运行 VQA(无需提案)
python inference.py \
  --image-path demo/demo_image.jpg \
  --task vqa \
  --text "What fruits are in the image?"

首次运行将从 Hugging Face 下载 10 B 检查点(omlab/VLX-Seek-1.5-10B)和 WeDetect 检测器(wedetect_base_uni.pth)。结果以 JSON 格式打印,并保存为 <image>_result.png

Python API(开发者用)

from vlx_seek_worker import VLXSeekWorker

worker = VLXSeekWorker("omlab/VLX-Seek-1.5-10B", device="cuda")

# 检测 – 使用内置检测器生成框
out = worker.run(
    image_path="demo/demo_image.jpg",
    task="detection",
    text="orange; apple"
)
print(out["region_refs"])   # 例如:["<obj2>", "<obj5>"]
print(out["boxes"])        # 实际的 [x1,y1,x2,y2] 坐标

run 方法也接受预计算的 bbox_list,如果您想提供自己的提议。

模型大小与性能

  • VLX‑Seek 1.5‑10B – 10 B 参数,随推理代码发布。计划推出更小的 0.6 B 和 3 B 变体。
  • 更快的推理 – 线性注意力层和简化的提案流水线降低了边缘 GPU 上的延迟。
  • 减少幻觉 – 硬负样本训练和显式的 None 输出格式提升了模型“未找到目标”的判断能力。

更多信息


总结

VLX‑Seek 将视觉区域转化为一等语言令牌,使大型语言模型能够 推理 对象,而不仅仅是 输出 坐标字符串。这种设计特别适用于低功耗、实时的具身系统,它们需要可靠、细粒度的定位,同时保持推理快速且可解析。

相关

  • 项目
  • 项目
  • 项目
  • 项目