技术趋势(Technology Trends)
从效率、能力、安全、应用四个维度,梳理 2025-2026 年 AI 与大模型的前沿发展方向。
用自然语言告诉 AI 要找什么物体,AI 在图像中定位并框出它们,无需预定义类别。
内容摘要
视觉定位与检测(Visual Grounding & Detection)是一种将自然语言理解和目标检测结合起来的技术。简单说,你用文字告诉 AI "找出图中的红色汽车",AI 就能在图像中把红色汽车的位置框出来,并告诉你它有多大把握。
视觉定位与检测(Visual Grounding & Detection)是一种将自然语言理解和目标检测结合起来的技术。简单说,你用文字告诉 AI "找出图中的红色汽车",AI 就能在图像中把红色汽车的位置框出来,并告诉你它有多大把握。
传统的目标检测器(如 YOLO、Faster R-CNN)属于"闭集检测"(Closed-Set Detection):训练时定义了 80 个类别(比如 COCO 数据集里的"人、车、猫、狗"),模型就只能识别这 80 类。遇到训练集里没有的物体(比如"无人机"),模型束手无策,必须重新收集数据、标注、训练,成本很高。
视觉定位与检测解决了这个问题:它不再依赖固定的类别列表,而是把"你想找什么"这件事交给自然语言来表达。模型同时理解图像内容和文字含义,通过跨模态匹配(Cross-Modal Matching,即让视觉信息和语言信息互相对齐)来定位物体。这就是所谓的"开放集检测"(Open-Set Detection)或"开放词汇检测"(Open-Vocabulary Detection, OVD)。这项技术在 Agent 系统中可以充当"视觉感知模块",让 Agent 按照用户的自然语言指令去图像或视频中找到特定物体。
视觉定位系统由四个核心组件协同工作:
| 结构 | 作用 | 说明 |
|---|---|---|
| 图像编码器 | 从图像中提取视觉特征 | 常用 Swin Transformer 或 ResNet |
| 文本编码器 | 将自然语言查询转成语义向量 | 常用 BERT 或 CLIP 文本编码器 |
| 跨模态融合模块 | 让视觉特征和语言特征互相"交流" | 通过交叉注意力机制实现 |
| 检测头 | 输出检测框坐标和置信度 | 端到端输出,不需手工规则 |
图像编码器负责把一张图片变成一组"视觉特征"。可以理解为:把图像切成很多小块,每一块都生成一个向量来描述"这里有什么"。常见选择包括 Swin Transformer(窗口化的视觉 Transformer,兼顾效率和精度)和 ConvNeXt(改进的卷积网络)。关键是要输出多尺度特征,既能看到大物体的全貌,也能捕捉小物体的细节。
文本编码器把用户输入的自然语言(如"红色汽车. 自行车. 行人")转成语义向量。BERT 是最常用的选择,它能理解同义词("汽车"和"轿车"指同一类物体)、属性修饰("红色的大卡车")等语义信息。文本编码器的质量直接决定了模型能理解多复杂的查询。
这是整个系统最关键的部分。与传统方法在最后才把视觉和文本信息拼在一起不同,现代方法(如 Grounding DINO)从一开始就让两种信息互相影响:视觉特征去"问"文本特征"我这个区域是不是你要找的东西?",文本特征去"问"视觉特征"你描述的这个概念在图里哪个位置?"。这种双向交叉注意力(Bidirectional Cross-Attention)在解码器的每一层都会进行,让语言信息逐步指导视觉特征的定位精化。
检测头把融合后的特征转化为最终输出:每个检测框的坐标 (x1, y1, x2, y2) 和置信度分数。与传统检测器依赖 NMS(Non-Maximum Suppression,非最大值抑制,用于去除重叠框的手工规则)不同,Grounding DINO 使用端到端方式直接输出去重后的结果。
视觉定位的核心机制可以分为四步:
双路编码:图像和文本分别经过各自的编码器,得到视觉特征序列和文本特征序列。两条路径独立工作,各自提取对应模态的信息。
特征融合:视觉特征和文本特征在 Feature Enhancer(特征增强器)中进行深度融合。具体做法是:视觉 token 做自注意力(互相参考图中不同区域),文本 token 做自注意力(理解查询语义),然后两边做交叉注意力(视觉问文本、文本问视觉)。这个过程在多层 Transformer 中反复进行。
语言引导查询选择:从融合后的视觉特征中,挑出与文本查询最相关的若干位置,作为候选检测框的"锚点"(Anchor)。这一步相当于先粗略定位"哪些地方可能有目标"。
解码与输出:候选锚点送入交叉模态解码器(Cross-Modality Decoder),经过多层精化,输出每个检测框的精确坐标和置信度。用户通过设置 box_threshold(框置信度阈值)和 text_threshold(文本匹配阈值)来控制输出的严格程度。
形式化表达:给定图像 $I$ 和文本查询 $T$,模型输出 ${(bbox_i, score_i, label_i)}$,其中 $bbox_i$ 是检测框坐标,$score_i$ 是置信度,$label_i$ 是匹配到的文本短语。
图中的关键流转在"特征增强器"这一步:它不是简单地把视觉和文本向量拼接,而是通过多层交叉注意力让两种模态深度交互。语言引导查询选择是另一个容易忽略的环节:它在送入解码器之前就过滤掉了大量无关区域,大幅提高了效率和精度。
# 基于 transformers 库调用 Grounding DINO(截至 2026-03)
# pip install transformers torch pillow
import torch
from PIL import Image
from transformers import AutoProcessor, AutoModelForZeroShotObjectDetection
# 加载模型和处理器
model_id = "IDEA-Research/grounding-dino-base"
processor = AutoProcessor.from_pretrained(model_id)
model = AutoModelForZeroShotObjectDetection.from_pretrained(model_id)
# 准备输入:一张图片 + 自然语言查询
image = Image.open("example.jpg")
text = "a red car. a person. a bicycle." # 用句号分隔不同物体
# 推理
inputs = processor(images=image, text=text, return_tensors="pt")
with torch.no_grad():
outputs = model(**inputs)
# 后处理:提取检测框
results = processor.post_process_grounded_object_detection(
outputs,
inputs.input_ids,
box_threshold=0.3, # 置信度低于 0.3 的框会被过滤
text_threshold=0.25, # 文本匹配度低于 0.25 的标签会被过滤
target_sizes=[image.size[::-1]]
)
# 输出每个检测框的标签、置信度和坐标
for score, label, box in zip(
results[0]["scores"], results[0]["labels"], results[0]["boxes"]
):
print(f"{label}: {score:.1%} | 位置: {box.tolist()}")
上述代码通过 Hugging Face Transformers 库调用 Grounding DINO,输入一张图片和自然语言查询,输出检测框。box_threshold 和 text_threshold 两个参数控制输出的严格程度:阈值越高,输出越少但越准确;阈值越低,召回率更高但可能有误检。代码省略了可视化部分(画框到图上),实际使用时可用 OpenCV 或 matplotlib 绘制。
| 概念 | 与视觉定位检测的区别 | 更适合关注的重点 |
|---|---|---|
| 传统目标检测(YOLO、Faster R-CNN) | 只能检测预定义的固定类别,不接受自然语言输入 | 实时性和推理速度 |
| 图像分类(Image Classification) | 只回答"图中有什么",不回答"在哪里" | 整图级别的语义判断 |
| 语义分割(Semantic Segmentation) | 输出像素级标签,不以自然语言为查询条件 | 逐像素的类别标注 |
| 视觉问答(VQA) | 输出的是文本答案,不是检测框坐标 | 对图像内容的推理问答 |
核心区别:
| 常见误区 | 正确理解 |
|---|---|
| 零样本意味着不需要微调 | 零样本能力适用于通用场景。在特定领域(医疗、工业检测),微调可将精度提升 20-40%,生产环境通常仍需微调 |
| 查询描述越详细检测越准 | 过长的描述有时反而干扰模型。"红色汽车"通常比"停在马路左边的那辆很大的鲜红色轿车"效果更好,简洁的核心特征描述优先 |
| 视觉定位能替代传统目标检测 | 两者互补而非替代。传统检测器在固定类别的实时场景(如工厂流水线)中速度更快、部署更轻量;视觉定位的优势在灵活性和零样本能力 |
视觉定位技术的发展经历了三个主要阶段:
参考答案:
根本区别在于输入方式和类别范围。传统目标检测在训练时就固定了能识别的类别列表(如 COCO 的 80 类),推理时只能输出这些类别的检测框。视觉定位检测的输入除了图像还有自然语言文本,用户可以用任意词汇描述想找的物体,模型通过跨模态匹配在图中定位,不受预定义类别的限制。
参考答案:
两种典型情况:(1) 对实时性要求极高的场景(如自动驾驶需要每帧 5ms 以内),闭集检测器(如 YOLOv8)推理速度远快于 Grounding DINO;(2) 检测类别固定且明确的场景(如工厂流水线只检测 3 种缺陷),闭集检测器经过针对性训练后精度更高、部署更轻量,不需要视觉定位的灵活性。
参考答案:
采用 Grounded SAM 2 的思路,分两阶段:(1) 用 Grounding DINO 接收用户的自然语言查询,在图像中输出目标物体的检测框和置信度;(2) 将检测框作为提示(prompt)传给 SAM 2,SAM 2 在检测框范围内生成像素级分割掩码。两个模型串联使用,Grounding DINO 负责"理解语言、粗定位",SAM 2 负责"精细分割"。如果需要处理视频,SAM 2 还能在后续帧中自动跟踪已分割的物体。
优先展示同分类且标签更接近的内容,方便继续串联学习。
从效率、能力、安全、应用四个维度,梳理 2025-2026 年 AI 与大模型的前沿发展方向。
同时理解图像和文本并生成语言输出的多模态模型,是给 LLM 装上"眼睛"的核心技术
用单一模型统一处理和生成文本、图像、音频、视频等多种模态的架构范式