Visual Reasoning
视觉推理是指 AI 模型回答需要围绕图像进行多步思考的问题的能力,例如计数、比较和空间逻辑推理。
视觉推理是指 AI 模型通过对视觉信息进行多个推理步骤得出结论的能力,例如统计符合条件的物体、比较它们的大小或位置、理解空间关系、运用物理常识,或补全抽象视觉模式。识别一个马克杯只需一步感知;而回答“桌子旁边由与桌子相同材质制成的最大物体左侧是马克杯吗?”则需要多个步骤,因为答案要结合四个物体的信息。这项能力介于提供相关信息的计算机视觉与通过文本串联推断的推理模型之间;当视觉问答(VQA)基准测试提出的问题不只是识别图片中有什么时,考查的就是这项能力。
定义视觉推理的基准测试#
视觉推理测试早于 AI。John C. Raven 的渐进矩阵(1938 年)要求人们选出能够补全 3×3 图案的方块;Mikhail Bongard 在 1967 年提出的问题则要求找出将六张图像与另外六张区分开的规则。机器基准测试借鉴了这两种思路,并加入了语言:
- CLEVR:Justin Johnson 及其在斯坦福大学和 Facebook AI Research 的同事在 CVPR 2017 上发布了这个诊断数据集,其中包含 10 万个由简单 3D 形状构成的渲染场景,以及约 100 万个生成的问题,用于测试计数、比较、空间关系和逻辑,同时尽量减少那些会让模型靠猜测作答的数据集偏差。
- RAVEN:2019 年发布的数据集,包含程序生成的 Raven 风格矩阵,用于训练和测试机器的模式补全能力。
- ARC:François Chollet 于 2019 年提出的抽象与推理语料库,包含网格谜题,要求根据少量示例推断变换规则。
- MathVista:2023 年推出的基准测试,包含以图表、曲线图、几何示意图和照片为载体的数学问题。
- BLINK:2024 年推出的一组包含 14 个经典视觉问题的数据集,其中包括相对深度和视觉对应关系,并将这些问题改编为选择题。
BLINK 展示了流畅的多模态模型与人类感知之间仍有多大差距:人类平均得分为 95.70%,GPT-4V 得分为 51.26%,Gemini 得分为 45.72%,仅比随机猜测高出 13.17 和 7.63 个百分点;而专用视觉模型在相同问题上的表现要好得多。
视觉推理方法#
端到端视觉语言模型(VLM)直接根据图像 token 作答,而思维链提示会让模型在作答前写出中间步骤。OpenAI 于 2025 年 4 月推出的 o3 和 o4-mini 将这种能力扩展到图像推理:推理过程中,模型可以裁剪、放大和旋转图像,再次查看处理后的结果。
神经符号方法将感知与推理分开。Jacob Andreas 及其同事提出的神经模块网络(CVPR 2016)会针对每个问题,从“关注”和“重新关注”等可复用模块中组装一个小型网络。Kexin Yi 及其同事提出的 NS-VQA(NeurIPS 2018)会将每个 CLEVR 场景解析为包含物体属性和位置的表格,将问题转换为程序,再在表格上运行程序;这种以符号 AI为基础的方法实现了 99.8% 的准确率,并且答案完全可追溯。视觉编程将相同思路带到了真实照片中:荣获 CVPR 2023 最佳论文奖的 VisProg 和 ViperGPT(ICCV 2023)会让大型语言模型 (LLM)编写 Python 程序,调用目标检测模型、深度估计模型和其他视觉工具,然后执行程序。
作为推理输入的检测与深度信息#
相对深度是 BLINK 的一个任务,也是视觉程序会交由专用模型处理的典型问题。YOLO26能提供这两类输入:目标检测模型会将照片转换为带名称的框,单目深度模型则会返回以米为单位的逐像素深度图,因此只需几行逻辑就能回答“有人比公交车离相机更近吗?”:
from ultralytics import YOLO
image = "https://ultralytics.com/images/bus.jpg"
detections = YOLO("yolo26n.pt")(image)[0]
depth = YOLO("yolo26n-depth.pt")(image)[0].depth.data # (H, W) depth map in meters
# Perception to symbols: one (name, median depth) fact per detected object
boxes = detections.boxes.xyxy.int().tolist()
classes = detections.boxes.cls.int().tolist()
facts = []
for (x1, y1, x2, y2), cls in zip(boxes, classes):
facts.append((detections.names[cls], depth[y1:y2, x1:x2].median().item()))
# Reasoning over symbols: compare every person's depth with the bus
bus_depth = min(d for name, d in facts if name == "bus")
closer = [round(d, 1) for name, d in facts if name == "person" and d < bus_depth]
print(f"Bus at {bus_depth:.1f} m; people closer to the camera: {closer}")每个答案都能追溯到具体的框和深度值,而端到端模型的答案无法做到这一点。同样的模式可扩展到机器人和空间智能任务,例如机器人必须决定先伸手拿哪个物体;也可用于在行动前检查场景的智能体工作流。
视觉推理与相关术语的区别#
VQA 是一种任务形式,即针对图像提出问题并要求简短回答;视觉推理则是较难的 VQA 问题所需的多步骤能力。多模态 AI涵盖任何结合多种数据类型的模型,不论模型是否进行推理。空间推理是其中关注位置、距离和方向的子领域,而最简单的空间推理问题根本不需要语言模型:BLINK 的相对深度题会询问两个标记点中哪个离相机更近,只需比较深度图中的两个像素值即可作答。










