大数跨境

NVIDIA开源LocateAnything深度解读:3B参数,比Qwen3-VL快10倍,最强3B视觉定位大模型来了

NVIDIA开源LocateAnything深度解读:3B参数,比Qwen3-VL快10倍,最强3B视觉定位大模型来了 机器学习AI算法工程
2026-05-30
58
图片

向AI转型的程序员都关注公众号 机器学习AI算法工程


💡 一句话总结:英伟达联合多所顶尖高校发布的 LocateAnything,用仅 3B 参数实现了 10× 于 Qwen3-VL 的解码速度,同时在 LVIS、DocLayNet、ScreenSpot-Pro 等多个基准上刷新 SOTA。核心秘密:Parallel Box Decoding(并行框解码)——把一个 bounding box 当作一个原子单元一步解码,而不是逐 token 一个字一个字蹦。

一、耕地保护(圈地占存)
图片
二、耕地保护(推堆动土)
图片
三、城市治理(铁皮加盖)
图片
四、城市交通基础设施(道路护栏坏损)
图片
五、城市治理(占道经营)
图片
六、城市交通基础设施(桥梁病害)
图片
七、城市治理(河道漂浮物)
图片
八、城市治理(河道瓶子)
图片
九、林业管理(森林烟火点)
图片


一、开篇:VLM 视觉定位的"速度-精度"死结

视觉语言模型(VLM)正在成为机器人、自动驾驶、GUI Agent 等具身智能系统的"眼睛"。但有一个老问题一直没解决:现有 VLM 做目标检测时,把每个 bbox 坐标拆成多个 token,然后逐个 token 自回归生成。


这带来两个核心痛点:

  • 几何不连贯:
    x₁、y₁、x₂、y₂ 四个坐标被拆成 8 个独立 token,模型把它们当作互不相关的序列来学。跨框边界的 token 可能产生错误组合,"画出"完全不合理的框。
  • 推理瓶颈:
    自回归(NTP)逐 token 生成,一个框至少需要 8 步推理。检测 100 个目标就需要 800+ 步——延迟极高,吞吐极低。

最近 Multi-Token Prediction(MTP)试图用"并行预测多个 token"来加速,但标准 MTP 是结构无关的——它把 token 流随机分块,不区分"哪些 token 属于同一个框"。这会导致模型学到跨框边界的虚假模式,既不快也不准。

LocateAnything 的回答是:把一个框当作一个原子单元,一步解码整个框。


二、论文信息

论文标题:LocateAnything: Fast and High-Quality Vision-Language Grounding with Parallel Box Decoding
arXiv:https://arxiv.org/abs/2605.27365
项目主页:https://research.nvidia.com/labs/lpr/locate-anything/
GitHub:github.com/NVlabs/Eagle/tree/main/Embodied
HF 模型:nvidia/LocateAnything-3B
HF 在线Demo:nvidia/LocateAnything (Spaces)



三、核心创新:Parallel Box Decoding(PBD)

3.1 从"逐 token 蹦字"到"一步画框"

理解 PBD 的关键在于理解现有方法的问题:

传统 NTP(Next-Token Prediction):

检测一个框需要生成: "1","0","2","4","2","5","6","7","8","9","0","1" → 12 个 token,12 步串行推理 → 每步都依赖前一步,完全无法并行

标准 MTP(Multi-Token Prediction):

随机分块并行: Token块: [1024][256][789][012] → 结构无关!块内 token 可能跨框边界 → 模型学到虚假的跨框组合模式

PBD(Parallel Box Decoding):

框对齐原子块(固定长度6): Block: [ ] [ ] [ ] [ ] [ ] [ ] → 一步解码整个框! → 所有坐标 token 在块内双向注意力 → 保持框内几何连贯性

🎯 核心洞察:Bounding box 的四个坐标 (x₁, y₁, x₂, y₂) 天然是一个强耦合的几何整体。把它们当作一个原子单元学习和解码,比拆成独立 token 效率更高,精度也更好。

3.2 模型架构

LocateAnything 的架构基于一个原生分辨率 VLM,由三部分组成:

  • Moon-ViT 视觉编码器:
    原生分辨率提取视觉 token,保留高精度空间细节
  • Qwen2.5 语言解码器:
    强大的语言理解与生成能力
  • MLP 投影器:
    桥接视觉与语言两个模态

给定图像 𝓘 和自然语言查询 ℰ,视觉编码器提取视觉 token Z = Encoder(𝓘),语言解码器直接将视觉 token 转换为一系列框对齐的块级预测

3.3 块化输出格式

PBD 要求输出被重新组织为固定长度的块序列。坐标归一化到 [0, 1000] 后离散化为 token,然后重组为块序列 B = (b₁, b₂, ..., bₙ),每个块是固定长度 L=6 的原子单元。

论文定义了四种功能块类型:

块类型
结构
作用
Semantic Block
[类别token] + padding
编码目标的语义身份
Box Block
[box] [x₁] [y₁] [x₂] [y₂] [/box]
预测完整的边界框坐标
Negative Block
[negative] + padding
表示查询的目标不存在
End Block
[end] + padding
标记生成终止

如果一个语义标签超过单个块的容量,会跨多个连续块分割。任何未占位的位置用 <null> token 填充,保证所有块的张量形状统一。


四、训练策略:双流联合训练

直接在训练阶段并行化输出会破坏模型的因果推理能力。为解决这个问题,LocateAnything 采用了双公式联合训练策略:

x_all = x_vis ⊕ x_q ⊕ x_ntp ⊕ x_blk  其中: x_vis + x_q   → 共享上下文(视觉 + 文本查询) x_ntp        → 标准自回归序列(保留因果推理能力) x_blk        → 块级 MTP 序列(学习框对齐预测)

本质上,x_ntp 和 x_blk 代表完全相同的 ground truth,但格式不同——一个是 token 级表示,一个是块级表示。

4.1 注意力掩码设计

这是整个训练策略的精髓。注意力掩码控制三个信息流:

  • NTP 流使用因果注意力:
    共享上下文和 NTP 序列只能看到前面的 token,不能看到 x_blk 中的内容,防止数据泄漏。这与推理时的 KV Cache 完全一致。
  • MTP 块间使用因果注意力:
    当前块可以看到共享上下文和所有已提交的块,但不能看到未来的块。这让模型学到不同框预测之间的依赖关系。
  • 块内使用双向注意力:
    同一块内的所有 token 可以互相看到。这让模型能捕捉框内坐标之间的几何依赖关系,一次性解码所有坐标。

训练目标是两个交叉熵损失之和:ℒ = ℒntp + ℒmtp。


五、推理模式:三种按需选择

PBD 虽然显著加速了推理,但并行解码在复杂场景中存在固有的"探索-利用"困境。LocateAnything 设计了三种按需推理模式:

5.1 Fast Mode(MTP 快速模式)

  • 所有框一步并行解码,最大化吞吐
  • 适用于延迟敏感的场景:机器人视觉、嵌入式设备、实时 Agent
  • 吞吐量:16.9 BPS(Boxes Per Second)

5.2 Slow Mode(NTP 慢速模式)

  • 逐 token 自回归解码坐标,最大化稳定性
  • 适用于高精度场景:标注平台、离线评估、数据集构建
  • 精度上限:52.1 F1(COCO)

5.3 Hybrid Mode(混合模式,默认)

  • 默认用 Fast Mode,当检测到问题时自动切换到 Slow Mode
  • 平衡速度与鲁棒性,保留大部分加速增益
  • 吞吐量:12.7-13.2 BPS,F1 51.6

5.4 纠正式 NTP 重解码

Hybrid Mode 的核心是Corrected NTP Re-decoding机制。当并行解码遇到两种异常情况时,会触发 NTP 回退:

格式不规则性(Format Irregularity):复杂场景中多个类别时,模型在类别边界犹豫,可能在同一个块内混合结构 token 和坐标 token(如 <box><211></ref><911><887></box>)。

空间模糊性(Spatial Ambiguity):密集排列的物体(如网格状排列),MTP 可能输出两个物体之间的中间坐标,导致低 IoU 预测。

触发条件(同时满足):(1) top-1 坐标 token 概率低于 0.7;(2) top-5 坐标 token 的最大-最小差值超过 80(在 [0, 1000] 归一化空间中)。

一旦检测到异常,丢弃有问题的块,回退到上一个已验证的前缀,用 NTP 自回归生成该块的 token,完成后无缝切换回 MTP。


六、LocateAnything-Data:138M 查询,785M 框

要训练一个强大的通用视觉定位模型,数据量和多样性至关重要。LocateAnything 团队构建了迄今最大规模的视觉定位数据集。

任务类别
查询占比
框占比
作用
通用目标检测
66.9%
83.1%
提供基础的框监督信号
GUI 元素定位
16.5%
-
支持具身 Agent 和 GUI 导航
指代表达理解
7.3%
-
连接复杂语言意图与视觉区域
文字定位(OCR)
3.6%
-
感知和定位图像中的文字信息
文档/场景布局
3.5%
-
增强文档和场景布局的结构推理
点定位
2.2%
-
细粒度坐标预测

数据集涵盖 12M 独特图像、138M 自然语言查询、785M 标注边界框。其中检测数据提供 83.1% 的框级监督,GUI 定位数据支持具身智能场景,指代表达理解连接复杂语义与空间区域。


七、实验结果:速度-精度双杀

7.1 核心数据一览

基准
指标
LocateAnything-3B
vs 最佳基线
解码速度
BPS (H100)
12.7
10× Qwen3-VL · 2.5× Rex-Omni
LVIS
F1@Mean
50.7
+3.8 vs. Rex-Omni
COCO
F1@Mean
54.7
+1.8 vs. Rex-Omni
Dense200
F1@Mean
58.7
+0.4 vs. Rex-Omni
VisDrone
F1@Mean
39.9
+4.1 vs. Rex-Omni
DocLayNet
F1@Mean
76.8
+6.1 vs. Rex-Omni
M6Doc
F1@Mean
70.1
+14.5 vs. Rex-Omni
TotalText (OCR)
F1@Mean
43.3
+2.7 vs. Rex-Omni
ScreenSpot-Pro
Avg
60.3
+2.3 vs. GUI-Owl-32B
HumanRef
F1@0.95
68.8
+3.4 vs. Rex-Omni
RefCOCOg val
F1@Mean
76.7
+2.0 vs. Qwen3-VL-8B
Pointing (7项)
Best on all 7

7.2 高质量多目标检测

在 LVIS(长尾分布)上,LocateAnything-3B 的 mean F1 达到 50.7,超越 Rex-Omni-3B 的 46.9(+3.8)。更值得注意的是 IoU=0.95(高精度阈值)下的表现:31.1 vs 20.7,差距高达 10.4 分。这说明 PBD 不仅能"找到"目标,还能"画得准"。

在密集检测场景 Dense200 和 VisDrone 上,LocateAnything-3B 分别达到 58.7 和 39.9 mean F1,大幅超越所有 VLM 方法。特别是在 VisDrone 上比 Rex-Omni 高出 4.1 分,展现出在高度重叠环境中的优越边界划定能力。

7.3 GUI 定位(ScreenSpot-Pro)

ScreenSpot-Pro 是评估 GUI Agent 定位能力的标杆基准。LocateAnything-3B 达到 60.3 平均 F1,超越了 30B 参数的 Qwen3-VL-30B-A3B(53.7)和 32B 的 GUI-Owl-32B(58.0)。这意味着一个 3B 模型在 GUI 交互场景中,定位精度超过了参数量 10 倍于它的对手。

7.4 文档理解与 OCR

在文档布局分析任务上,LocateAnything 建立了新的标杆:DocLayNet 上 76.8 F1(+6.1 vs Rex-Omni),M6Doc 上 70.1 F1(+14.5 vs Rex-Omni)。在 TotalText OCR 任务上达到 43.3 F1,超越所有对比方法。

7.5 解码速度对比

这是最直观的优势。在单张 H100 GPU 上(batch size=1):

方法
吞吐量 (BPS)
相对速度
Qwen3-VL-4B
1.1
基准(1×)
Qwen3-VL-8B
1.0
0.9×
Rex-Omni-3B
5.0
4.5×
LocateAnything-3B (Hybrid) 12.7 11.5×
LocateAnything-3B (Fast) 16.9 15.4×

当目标数量从 20 增加到 300 时,NTP 方法延迟严重飙升,而 PBD 实现了 2× 到 6× 的加速,吞吐量从 12 BPS 扩展到约 25 BPS。这意味着在密集检测场景中,PBD 的速度优势会进一步放大。


7.6 消融实验亮点

对比维度
结论
坐标表示
PBD (Slow Mode) F1=52.1,优于文本坐标(49.1)和量化坐标(50.1)
MTP 公式
PBD 16.9 BPS + 49.6 F1,远优于 SDLM-B6 的 5.5 BPS + 46.1 F1
训练策略
联合训练使 Slow Mode 上限从 50.1 提升到 52.1 F1
框输出顺序
X-Y Corner Order 排序效果最佳

消融实验明确验证了:结构对齐的 MTP 公式(PBD)在速度和精度上同时优于结构无关的 MTP 方法。标准 MTP 增大块尺寸只会略微提升吞吐,但会持续降低精度。PBD 打破了这个困局。


八、实战代码

8.1 快速安装

git clone https://github.com/NVlabs/Eagle.git eagle cd eagle/Embodied pip install -e .


8.2 基础使用

import torchfrom PIL import Imagefrom locateanything_worker import LocateAnythingWorker# 加载模型worker = LocateAnythingWorker("nvidia/LocateAnything-3B")img = Image.open("example.jpg").convert("RGB")# 目标检测 —— 一次检测多个类别result = worker.detect(img, ["person""car""bicycle"])print(result["answer"])# 输出: person<123><45><678><901car<234><56><789><012> ...# 短语定位 —— 自然语言描述定位result = worker.ground_multi(img, "people wearing red shirts")print(result["answer"])# 文字检测(OCR)result = worker.detect_text(img)print(result["answer"])# GUI 元素定位(返回点坐标)result = worker.ground_gui(img, "the search button", output_type="point")print(result["answer"])# 指向(Pointing)result = worker.point(img, "the traffic light")print(result["answer"])



8.3 解析输出结果

import redef parse_boxes(answer: str, image_width: int, image_height: int):    """    解析 LocateAnything 的输出    坐标范围 [0, 1000],需要归一化    """    boxes = []    # 匹配: label    for m in re.finditer(        r'(.*?)<(\d+)><(\d+)><(\d+)><(\d+)>',        answer    ):        label = m.group(1)        x1, y1, x2, y2 = [int(g) for g in m.groups()[1:]]        boxes.append({            "label": label,            "x1": x1 / 1000 * image_width,            "y1": y1 / 1000 * image_height,            "x2": x2 / 1000 * image_width,            "y2": y2 / 1000 * image_height,        })    return boxes# 使用示例img = Image.open("test.jpg")boxes = parse_boxes(result["answer"], img.width, img.height)for b in boxes:    print(f"{b['label']}: ({b['x1']:.0f}{b['y1']:.0f}) → ({b['x2']:.0f}{b['y2']:.0f})")



8.4 用 OpenAI SDK 格式调用

from openai import OpenAIfrom PIL import Imageimport base64, io# 如果部署为 API 服务client = OpenAI(    base_url="http://localhost:8000/v1",    api_key="not-needed")# 编码图片img = Image.open("screenshot.png")buf = io.BytesIO()img.save(buf, format="PNG")img_b64 = base64.b64encode(buf.getvalue()).decode()response = client.chat.completions.create(    model="LocateAnything-3B",    messages=[{        "role""user",        "content": [            {"type""image_url""image_url": {"url"f"data:image/png;base64,{img_b64}"}},            {"type""text""text""Locate all buttons and text fields in this GUI screenshot"}        ]    }],    max_tokens=1024)print(response.choices[0].message.content)



8.5 训练自己的版本

# 单机 8 卡全量微调torchrun --nproc_per_node=8 \  eaglevl/train/locany_finetune_magi_stream.py \  --model_name_or_path nvidia/LocateAnything-3\  --meta_path "./locany_recipe/your_recipe.json" \  --output_dir work_dirs/my_sft \  --max_steps 25000 \  --learning_rate 2e-5 \  --bf16 True \  --block_size 6 \  --attn_implementation magi \  --max_seq_length 16384 \  --deepspeed "deepspeed_configs/zero_stage2_config.json"


💡 注意:MagiAttention 仅支持 Hopper(H100)和 Blackwell 架构的 GPU。在 A100、L40 等旧卡上,使用 --attn_implementation sdpa,但仅支持约 4K token 的序列长度。


九、应用场景全景

LocateAnything 的"一个模型做所有定位任务"设计,使其在多个领域具有落地价值:

  • 🤖 具身智能/机器人:
    Fast Mode 16.9 BPS 的速度足够实时处理机器人视觉,快速定位抓取目标、导航路标
  • 🖥️ GUI Agent:
    60.3 ScreenSpot-Pro SOTA,定位界面上的按钮、输入框、图标,驱动自动操作
  • 📄 文档理解:
    DocLayNet 76.8、M6Doc 70.1,自动解析文档布局,提取表格、标题、段落
  • 🔍 场景文字 OCR:
    TotalText 43.3 F1,精准定位自然场景中的文字
  • 🚗 无人机/监控:
    VisDrone 39.9 F1,密集小目标检测能力
  • 🏷️ 数据集标注:
    Slow Mode 高精度输出,可直接用于半自动标注流水线

十、与同类方法的对比思考

LocateAnything 的独特之处在于它同时解决了速度和精度两个问题

维度
传统 NTP
标准 MTP
PBD (LocateAnything)
解码方式
逐 token 自回归
随机分块并行
框对齐原子块并行
结构对齐
❌ 完全串行
❌ 结构无关
✅ 框对齐
几何连贯
❌ token 独立
⚠️ 可能跨框
✅ 框内双向注意力
吞吐量
1.0 BPS
5.5 BPS
12.7-16.9 BPS
COCO F1
50.1
46.1
52.1

值得注意的是,LocateAnything 是首个将 MTP 应用于 VLM 检测/定位的工作。论文明确指出,标准 MTP 是"结构无关的"——把 token 流当作通用序列处理,主要捕获共现相关性。对于 bounding box 这种强耦合结构,这种监督与训练目标不匹配。PBD 通过框对齐彻底解决了这个问题。

十一、结论与展望

LocateAnything 证明了一个重要命题:并行解码与结构化几何约束并不矛盾。通过把 bounding box 视为不可分割的原子单元,PBD 同时提升了速度和精度——这打破了传统"速度-精度"的 trade-off 认知。

从更广的视角看,LocateAnything 的成功暗示了一个重要趋势:在大模型时代,解码策略的设计可能比单纯增加参数更重要。3B 模型通过精心设计的解码方式,击败了 30B 甚至更大的通用模型。

对于关注机器人、GUI Agent、自动化标注等领域的从业者,LocateAnything 提供了一个即插即用的工业级视觉定位解决方案。3B 参数、开源代码、HuggingFace 在线 Demo——三者结合,让任何人都能在几分钟内跑起来。

📎 资源汇总
📄 论文:arXiv:2605.27365
🌐 项目主页:research.nvidia.com/labs/lpr/locate-anything/
💻 GitHub:github.com/NVlabs/Eagle/tree/main/Embodied
🤗 HuggingFace 模型:nvidia/LocateAnything-3B
⚡ HuggingFace Demo:nvidia/LocateAnything (Spaces)

机器学习算法AI大数据技术

 搜索公众号添加: datanlp

图片

长按图片,识别二维码


阅读过本文的人还看了以下文章:


98%准确率!这个双分支AI模型,精准识别木薯叶病害(附代码)
2026论文解读,ASAHI:自适应切片助力小目标检测,速度提升25%、精度创新高
TexMS-YOLO:纹理感知特征融合 + 多尺度交互实现工业缺陷检测91.99% mAP
14.7M参数,小目标AP达到13.9%!FSDETR用频空融合重新定义目标检测
skill刚开源就斩获 1.7K Star!web-access让AI真正"上网"
Qwen3.5实战教程:从0到1掌握本地部署与微调
引入小目标注意力模块改进YOLO12用于无人机视角下的岸边人员玩水检测
pdf2skill:让计算机视觉初学者把PDF文档变成AI技能包
next-ai-draw-io 用这款AI 画图几十秒就搞定了
10 万文档 RAG 落地实战:从 Demo 到生产,我踩过的所有坑
最强一键抠图19Kstar 的 Rembg 开源神器
YOLO12改进引入DINOv3少样本目标检测精度飙升,分享训练自定义数据集代码
基于DINOv2和SAM2改进的U-Net模型
Ultralytics & lightly-train:简化计算机视觉模型训练,无需标签
最新视觉大模型 DINOv3论文精读(逐段解析)
医学影像数据集汇总(持续更新)150个
【医学影像分割】UN-SAM:一种高效且通用的细胞核分割模型
小目标检测难点分析和解决策略

【模型高效部署】tensorrtx 深度解读,yolov11高性能推理实战案例

实时语义分割ENet算法,提取书本/票据边缘


整理开源的中文大语言模型,以规模较小、可私有化部署、训练成本较低的模型为主


《大语言模型》PDF下载


动手学深度学习-(李沐)PyTorch版本


基于40万表格数据集TableBank,用MaskRCNN做表格检测


《基于深度学习的自然语言处理》中/英PDF


Deep Learning 中文版初版-周志华团队


【全套视频课】最全的目标检测算法系列讲解,通俗易懂!


《深度学习入门:基于Python的理论与实现》高清中文PDF+源码


python就业班学习视频,从入门到实战项目


2019最新《PyTorch自然语言处理》英、中文版PDF+源码


《21个项目玩转深度学习:基于TensorFlow的实践详解》完整版PDF+附书代码


《深度学习之pytorch》pdf+附书源码


《Python数据分析与挖掘实战》PDF+完整源码



不断更新资源

深度学习、机器学习、数据分析、python

 搜索公众号添加: datayx  

图片

【声明】内容源于网络
0
0
机器学习AI算法工程
计算机视觉、自然语言处理、推荐系统、人工智能、大模型、深度学习、机器学习、大数据技术社区,分享各类算法原理与源码、数据处理、可视化、爬虫、竞赛开源代码等资源。
内容 1552
粉丝 1
机器学习AI算法工程 计算机视觉、自然语言处理、推荐系统、人工智能、大模型、深度学习、机器学习、大数据技术社区,分享各类算法原理与源码、数据处理、可视化、爬虫、竞赛开源代码等资源。
总阅读18.3k
粉丝1
内容1.6k