英伟达近日开源的视觉定位模型 LocateAnything,把「定位」这件事拆成了五种可直接调用的能力:目标检测、指代定位、文字检测、界面定位和点定位。它没有追求更大的参数规模,而是通过改变坐标生成方式,让一个 3B 模型在单卡环境下即可完成部署,并尝试解决开放词汇定位任务中长期存在的速度与稳定性问题。
五种定位接口,对应不同落地场景
从官方给出的调用方式看,LocateAnything 的 API 设计相当直接。开发者加载 nvidia/LocateAnything-3B 模型后,可以对同一张图片发起不同类型的定位请求。
detect:传入类别列表,完成常规目标检测,例如找出图片中的「person」和「car」。ground_multi:接收自然语言描述,用于指代定位,例如找出「穿红衣服的人」。detect_text:检测图像中的文字区域。ground_gui:面向图形界面理解,例如定位「搜索按钮」,并可输出点坐标。point:根据描述输出单个点位,例如定位「交通灯」。
这五种能力共用同一个模型和同一套接口,而不是由通用大模型再外挂多个专业检测器组合完成。对于需要做视觉检索、界面操作、图像问答或机器人感知的团队来说,这种统一接口可以减少模型切换和工程拼接成本。
速度关键:从逐个吐坐标,变成整框一次输出
LocateAnything 最值得关注的改进,是它改变了定位框的生成方式。传统多模态模型通常把检测框拆成 x1、y1、x2、y2 四个数字,再按照逐字生成的方式依次输出。每个数字相互独立,任何一个数字出现偏差,都会导致最终框选结果偏移。
这种问题在密集场景中会被进一步放大。画面中人物、车辆或其他目标彼此靠近时,一个坐标偏差可能让框选结果覆盖多个相邻目标,影响后续识别和检索。
LocateAnything 提出了 Parallel Box Decoding,即平行框解码。坐标不再被拆成四个步骤生成,而是作为一个整体一次输出。这样做的直接结果是减少了生成步数,也保留了坐标之间的几何关系。
为了兼顾稳定性,模型默认采用 Hybrid 模式。当并行解码出现格式异常或坐标不明确时,系统会回退到上一个可靠节点,用传统逐字模式重新生成该框,随后再切回并行模式。这种机制让模型在追求速度的同时保留纠错能力。
3B 参数和单卡部署,降低工程门槛
从架构上看,LocateAnything 采用较为清晰的三段式结构:视觉编码器、MLP 投影层和语言解码器。视觉部分使用 MoonViT-SO-400M,语言部分基于 Qwen2.5-3B,最终输出带特殊标记的坐标结果。
模型输出的坐标以 0 到 1000 的归一化整数表示,开发者只需将数值除以 1000,再乘以图片宽高,即可还原为像素坐标。官方代码中提供了 parse_boxes 方法,可直接完成这一转换。
训练数据方面,素材提到该模型使用了 1200 万张图像、1.38 亿条查询和 7.85 亿个标注框。这些查询和标注框为开放词汇定位提供了基础,使模型不必局限于固定类别。
部署门槛也是其工程价值的一部分。3B 参数规模意味着它不需要多卡集群即可运行。官方建议 24G 显存起步;如果批量运行时使用 la_flash 后端,在 A100 上处理 4K 图像的峰值显存约为 12G,这也让部分消费级显卡具备运行可能。
对视觉定位与检索的工程意义
与 YOLO 这类传统检测器相比,LocateAnything 的差异不在单纯的检测速度,而在开放词汇能力。YOLO 通常只能识别训练阶段预设的类别,而 LocateAnything 允许开发者用自然语言指定目标。类别不需要重新训练,模型根据描述寻找对应对象。
这使它更适合复杂检索和交互场景。例如,在图像搜索中定位「左侧的男人」,在 GUI 自动化中找到「搜索按钮」,或在街景图片中定位特定交通设施。这类任务的共同点是目标描述灵活,难以提前用固定类别覆盖。
从实测路径看,官方也给出了较低成本的上手方式。开发者克隆 GitHub 上的 Eagle 仓库,进入 eagle/Embodied 目录,安装依赖后即可运行。首次运行时模型会自动下载。测试时可先用目标检测验证框的数量和位置,再尝试自然语言指代定位,最后测试点定位精度。
LocateAnything 的核心思路并不复杂:把检测框当成一个整体来建模,而不是拆成四个彼此独立的数字。这个改动看起来只涉及解码方式,却同时影响了速度、稳定性和小模型的可用性。对于需要开放词汇定位能力的开发者来说,它提供了一个更轻量、更容易部署的开源选择。
原创文章,作者:点点,如若转载,请注明出处:https://www.dian8dian.com/ying-wei-da-locateanything-shi-ce-yi-ge-3b-mo-xing-wei-he