LocateAnything全称为LocateAnything: Fast and High-Quality Vision-Language Grounding(并行框解码视觉语言定位模型)。开源了 LocateAnything-3B(30 亿参数)。

模型定位:通用开放词汇视觉定位基座,一句话文本指令→图像自动输出目标包围框,统一开放域检测、指代定位、UI 控件拾取、OCR 文字框选四大任务,主打高速 + 高精度,面向机器人抓取、AI 智能体、工控视觉、自动 GUI 操作场景。非商用免费开源,商用需联系英伟达授权。

1.传统VLM缺陷

主流 VLMs(GPT4V、Qwen-VL)自回归逐 Token 生成坐标:框[x1,y1,x2,y2]拆成 4 组数字逐个字符解码,串行生成:

1)速度慢:单个目标 4 次解码,多物体叠加时延暴涨

2)误差累积:第一个坐标出错,整框报废、几何失真

2.模型创新:PBD(Parallel Box Decoding 并行框解码)原理

把整框 (x1,y1,x2,y2) 当做 1 个不可拆分的原子单元,一步并行全量预测,不再拆分坐标 Token:

1)视觉编码器提取图像全局特征,文本编码器解析查询指令(自然语言);

2)解码器一次性批量输出所有目标完整包围框,单步输出 4 个坐标;

3)天然保留框几何约束,不会出现坐标错位、长宽畸形。性能提升:推理吞吐量≈传统自回归模型2.5~10 倍;H100 混合模式可达12.7 框 / 秒 (BPS),满足机器人实时毫秒级定位。

3.三种推理运行模式

如下表所示:

模式 适用场景 特点
Fast 快速 机器人实时抓取、端侧工控、在线实时检测 纯 PBD 并行解码,速度最优,牺牲极少量精度
Slow 高精度 数据集标注、离线质检、高精度测量 传统自回归解码,精度拉满、速度偏低
Hybrid 混合(默认) 通用部署 默认 Fast,场景歧义 / 识别异常自动切 Slow,兼顾速度 + 精度

4.训练数据集:LocateAnything-Data(业界超大定位数据集)

自研百万级多域标注库:1200 万张独立图像 + 1.38 亿条文本查询 + 7.85 亿标注包围框

覆盖 5 大领域:通用自然物体、机器人实操场景、手机 / 电脑 GUI 界面、文档 OCR、自动驾驶路面目标

优势:开箱即用零样本,不用微调即可识别任意新词、小众工业零件。

5.支持的任务和优势

1)开放词汇通用目标检测:输入 “图里所有黑色手机”,自动框出全部手机,不限预定义类别;

2)指代表达定位:“画面右侧胶带下方的绿色方格板”,精准框选指代物体(机器人抓取刚需);

3)GUI 界面元素定位:“屏幕所有按钮 / 输入框”,AI 自动化点控、键鼠自动化;

4)OCR 文本框选:“框出图片内所有汉字”,文字区域坐标提取;

5)点提示辅助定位:配合打点 + 文本混合 Prompt,疑难物体精准框选。

相比传统的优势如下:

1)定位 AP 精度>现有开源 VLMs(Qwen-VL、LLaVA)5%~12%;

2)同等精度下推理耗时仅传统方案 1/3;

3)密集杂物堆叠场景(多零件混放)零样本鲁棒性突出,适配工业杂乱工件定位。

6.和SAM/YOLO 区别

1)YOLO 系列:闭集预定义类别,新增工件必须重新标注训练;LocateAnything开放词汇,自然语言任意新词零样本识别;

2)SAM 分割:点 / 框提示做像素分割,不能文本指令;LocateAnything纯文本输入出检测框,侧重目标定位,推理更快;

互补方案:LocateAnything 出目标包围框→框内送入 SAM 做精细像素分割,工业视觉常用组合。

7.应用部署

使用 NVIDIA 官方开源 LocateAnything-3B,支持自然语言指令检测任意物体(人、车、工件、缺陷、零件、文字、按钮… 都可以)。

1)环境要求:

Python 3.9+;PyTorch 2.0+;CUDA 11.7+(必须有 NVIDIA 显卡);显存 ≥ 10GB(推荐 16GB 以上,如 RTX 3090/4090)。

2)环境配置:pip install torch torchvision transformers pillow opencv-python

      模型下载:nvidia/LocateAnything-3B

3)目标检测:纯目标检测模式:输入图片 + 文本指令 → 输出所有目标框,代码如下:

import cv2
import torch
from PIL import Image
from transformers import AutoModel, AutoTokenizer

# ====================== 1. 加载模型 ======================
model_name = "nvidia/LocateAnything-3B"
tokenizer = AutoTokenizer.from_pretrained(model_name)
model = AutoModel.from_pretrained(
    model_name,
    torch_dtype=torch.float16,
    trust_remote_code=True
).cuda().eval()

# ====================== 2. 加载图片 ======================
image_path = "test.jpg"  # 你要检测的图片
image = Image.open(image_path).convert("RGB")

# ====================== 3. 输入检测指令 ======================
# 想检测什么就写什么!!!
prompt = "找出图中的所有杯子"
# prompt = "框出所有轴承工件"
# prompt = "找到图中的红色零件"

# ====================== 4. 推理 ======================
with torch.no_grad():
    boxes = model.predict_boxes(
        image=image,
        prompt=prompt,
        tokenizer=tokenizer,
        max_boxes=20,  # 最多检测多少个物体
        conf_thres=0.3, # 置信度阈值
        device="cuda"
    )

# ====================== 5. 绘制结果 ======================
img = cv2.imread(image_path)
for box in boxes:
    x1, y1, x2, y2 = map(int, box)
    cv2.rectangle(img, (x1, y1), (x2, y2), (0, 255, 0), 2)

cv2.imwrite("result.jpg", img)
print("检测完成!输出框坐标:", boxes)

4)检测应用技巧

(1)检测任意物体(开放词汇,不用训练):想检测什么,直接写自然语言就行

prompt = "找出图中的所有螺丝" prompt = "找到所有黑色橡胶圈" prompt = "框出所有金属工件" prompt = "找出图中的缺陷" prompt = "找到所有按钮"。

(2)控制检测数量

max_boxes=10 # 最多检测10个

conf_thres=0.5 # 置信度越高,框越少越准

(3)支持复杂描述(比 YOLO 强得多)

prompt = "找到桌子上的白色杯子"

prompt = "框出右上角的零件"

prompt = "找到图片中间最大的那个物体"

(4)支持多类别同时检测

prompt = "找出图中的杯子、瓶子、键盘"

检测效果如下图所示

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐