简介:本文以“判断两张图像是否同一视角拍摄”这一典型任务为切入点,系统对比多模态大模型与传统计算机视觉几何方法在架构设计、训练范式、表征学习与可解释性上的核心差异,解释大模型“看得懂语义、量不准几何”的技术根源,并给出典型场景下的选型依据与组合使用建议,帮助开发者与技术负责人做出更合理的技术决策。
在安防巡检、固定机位监控等场景中,存在一类看似简单却很关键的需求:给定两张图像,判断它们是否从同一位置、同一角度拍摄。典型应用包括判断监控摄像头是否被移动、复核巡检照片是否在规定点位拍摄等。
一个真实测试案例可以说明问题:测试场景为室内物料间,参考图与对比图的拍摄时间相差约24小时,期间地面堆放物品位置发生变动、光照与阴影随时间变化、门的开合状态也可能不同,但拍摄视角完全没有改变。将两张图交给当前主流的多模态大模型判断时,模型往往给出“视角已改变”的错误结论,倾向于把物品移动、光照差异等语义层面的变化误读为视角变化。
这个案例并非个例,而是此类任务中的普遍现象。更值得深思的是:这些模型能够完成目标检测、关键点定位等需要一定空间能力的任务,却在“视角是否一致”这类几何对齐判断上系统性失败。本文围绕这一现象,对比分析多模态大模型与传统计算机视觉几何方法两条技术路线的差异,并回答“如何选型、如何组合”的问题。
多模态大模型通常由图像编码器与大型语言模型组合而成:图像被切分为若干图块并转换为token序列,与文本token一起送入Transformer进行统一建模。其设计目标是通用的跨模态语义理解,典型能力包括图像描述生成、视觉问答、图文检索、指令跟随等。这类模型通常以对话或接口形式提供服务,任务泛化能力强。
传统几何方法是一类以显式几何计算为核心的视觉技术路线,典型流程包括:局部特征点提取与描述、特征匹配、几何变换估计(如单应性矩阵)、相机位姿求解以及重投影误差验证等。它不追求“理解图像内容”,而是直接在像素与坐标系层面度量两幅图像之间的几何关系,输出可量化的几何量。
两者的目标函数存在根本区别:大模型追求“看懂图里有什么、在发生什么”,几何方法追求“两张图在空间上如何对应”。
尽管两条技术路线差异显著,但仍有若干共同点:
这些共同点意味着,在多数业务系统中,两者并非互斥关系,而是可以组合使用的互补组件。
这是差异的根源。Transformer的处理单元是token序列,其位置感知依赖位置编码。以经典的正弦位置编码为例:
# 通用Transformer正弦位置编码(示意)PE(pos, 2i) = sin(pos / 10000^(2i/d_model))PE(pos, 2i+1) = cos(pos / 10000^(2i/d_model))# pos 表示 token 在序列中的序号,而不是像素在图像中的 坐标
这里的pos是token在序列中的顺序编号。当图像被切分为图块并按行优先展平成一维序列后,原本二维网格中“上下左右相邻”的空间关系被压缩为“序列先后”关系——模型只能知道“这个图块排在第n位”,难以精确感知其对应的像素坐标。即便部分实现引入二维或可学习的位置编码,其精度也受限于图块粒度:模型感知空间的最小单位是一个图块而非一个像素,这对需要精确对齐判断的视角对比任务是天然短板。
传统几何方法则完全不同:特征点的像素坐标、匹配对之间的对应关系、几何变换矩阵,全部是显式、可计算的数学对象。视角对比所依赖的“四个角区域是否对齐、固定结构是否一致、透视关系是否吻合”,恰好是几何方法的核心计算内容。
多模态大模型的训练目标以图文对齐、描述生成、指令跟随等语义任务为主。这意味着模型在训练中获得的监督信号几乎都来自“语义层面说对了没有”,而“视角是否一致”这类几何判断很少作为显式优化目标出现。模型学到的“两张图像相似”,本质上是语义相似而非几何对齐——当对比图中物品位置变动、光照变化时,语义特征确实发生了明显改变,模型自然倾向于判定“图像不一样了”,进而错误输出“视角改变了”。
此外,训练数据中带有精确视角标注的样本极为稀缺,模型即使具备潜力,也缺乏足够的几何监督信号。传统几何方法的优化目标则直接就是几何量本身:以重投影误差最小化、极线约束满足度等为核心,任务目标与优化目标完全一致,这是它在视角对比任务上表现稳定的关键。
更微妙的一点在于表征学习的取向。现代视觉表征学习普遍鼓励“不变性”:希望表征对光照变化、遮挡、视角变化等干扰保持稳定,从而抓住语义本质。这种取向对识别、检索类任务非常有利,但对视角对比任务却是反向的——任务恰恰需要检测出视角本身的细微变化,而模型表征已被训练得“尽力忽略”这类变化。
换言之,大模型学到的是“内容摘要”式表征:它概括了图里有什么,却丢弃了精确的度量信息。传统方法的局部特征则保留了几何结构细节,可用于逐一验证空间对应关系。
公平起见也需指出大模型的优势:一条指令即可切换任务,无需针对每个场景单独设计算法,接入与试错成本低、泛化能力强;传统几何方法则需按场景做参数与流程设计(特征类型、匹配策略、阈值),前期算法设计成本更高,但在限定任务上运行成本低、延迟小、结果稳定。
| 对比维度 | 多模态大模型 | 传统视觉几何方法 |
|---|---|---|
| 设计目标 | 通用跨模态语义理解 | 显式几何度量与对齐 |
| 空间信息表示 | 图块token+位置编码,粗粒度、隐式 | 像素/特征点坐标,显式、精确 |
| 训练/优化信号 | 图文对齐等语义监督为主 | 重投影误差等几何约束 |
| 对语义变化的反应 | 敏感,易误判为视角变化 | 可设计为不敏感 |
| 对视角变化的反应 | 不敏感,易漏判 | 敏感,属于核心能力 |
| 输出形态 | 自然语言结论 | 连续几何量,可设阈值 |
| 可解释性 | 弱,难以归因 | 强,过程可验证 |
| 任务泛化 | 强,一套模型覆盖多任务 | 弱,需按场景设计 |
| 推理成本与延迟 | 相对较高 | 相对较低,易边缘部署 |
| 适用边界 | 语义理解、描述、问答 | 配准、拼接、位姿估计、视角校验 |
# 伪代码:几何预判 + 语义复核的混合流水线def judge_viewpoint(img_ref, img_query):kp1, desc1 = extract_local_features(img_ref) # 局部特征点提取kp2, desc2 = extract_local_features(img_query)matches = match_descriptors(desc1, desc2) # 特征匹配H, inliers = estimate_homography(kp1, kp2, matches) # 几何变换估计if inliers < MIN_INLIERS:return "几何证据不足,疑似视角变化"err = reprojection_error(H, matches) # 重投影误差if err < GEOM_THRESHOLD:return "视角一致(几何验证通过)"else:report = multimodal_model(img_ref, img_query) # 语义复核与描述return merge_result(report)
选型应基于任务性质而非“模型是否先进”:
回到最初的问题:多模态大模型在视角对比任务上失败,不是因为“不够强”,而是因为其架构(序列化位置编码而非空间坐标)、训练范式(语义监督为主、几何信号缺失)与表征学习(追求语义不变性)与任务的几何本质不匹配;而传统视觉方法的设计目标恰好就是几何度量,天然适合此类对齐判断。
两者的关系更接近互补而非替代:大模型负责“看懂内容”,几何方法负责“量准空间”。技术选型的关键,是先判断业务决策依赖的是语义信息还是几何信息,再据此划分两类技术的角色边界。在多数生产级系统中,让几何方法守住几何判断的底线、让大模型发挥语义理解的广度,是更稳妥的工程选择。