视觉几何 · Stage 1 实测
Base vs Large · 6 对真实图 · RTX 5060 Ti 16GB · long-edge 768 · 2026.07
之前的文章中,我们在同一批真实图对上把 RoMa v2 / UFM-Base / UFM-G 的稠密匹配摸了一遍——知道了「每个像素跑到哪」。
这一轮往上走一层:每个像素离相机有多远。
单目深度(monocular depth)是视觉几何的地基。没有可靠深度,匹配再漂亮也很难变成点云、位姿和三维重建。今天用的是目前生态最成熟的开源方案之一——Depth Anything V2,在同一套 6 对真实图、同一块 RTX 5060 Ti 16GB 上,把 Base 和 Large 完整跑通,并附上全部真实可视化结果。

一句话结论:在 16GB 消费卡上,DA-V2 Large 峰值不到 2GB,完全跑得动;但 Base 快约 3.1 倍,跨视角结构一致性几乎打平——默认先上 Base,除非你明确需要大模型那一点细节。
本篇只做单目深度,Depth Anything V2 Base / Large:每像素相对深度,但故意保留「跨视角」视角:把 A 图深度用光流 warp 到 B,再和 B 的深度比——这样深度不再是一张好看的热力图,而是能被几何约束检验的量。
项 | 配置 |
|---|---|
GPU / CPU / RAM | RTX 5060 Ti 16GB · i9-12900KF · ~64GB |
模型 | Depth-Anything-V2-Base-hf / Large-hf |
输入 | 长边 768 · 6 pairs × A/B = 12 张图 |
数据 | 与 UFM/RoMa 相同 real_pairs:bike / building / cook / fire_academy / scene / toronto |
权重目录 | D:/models/depth-anything(约 1.7GB) |
策略 | 串行加载(一次只驻留一个模型)· FP 自动 · transformers 推理 |
一致性指标说明(无 GT 深度时的代理指标):

图 1 · Base vs Large 推理耗时与峰值显存(12 张图均值)
模型 | infer_ms ↓ | peak_GB ↓ | edge_align ↑ |
|---|---|---|---|
DA-V2 Base | 109.3 | 0.78 | 0.214 |
DA-V2 Large | 342.3 | 1.94 | 0.213 |
几点直观感受:
① Large 峰值约 1.9GB,离 16GB 天花板还很远——这台机器跑单目深度几乎没有心理负担。
② Base 快 3.1 倍,edge_align 几乎一样(0.214 vs 0.213)。若你的流水线要接视频或批量工业图,Base 是默认最优解。
③ 冷启动加载:Base ~45s,Large ~133s(含首次下载缓存)。之后推理就是上表数字。
下面所有图都是本次实测直接导出,不是论文截图。色图使用 turbo:冷色偏远、暖色偏近(相对深度,非米制)。
4.1 六场景总览(View A)

图 2 · 6 对真实图 × Base / Large 深度图总览(仅展示 A 视角)
肉眼上 Base 和 Large 结构高度一致:教堂柱廊的纵深、街景近树远楼、骑行特写的车架层次,都能清楚分开。Large 在细杆件、栏杆镂空处偶尔更干净一点,但不是数量级差异。
4.2 场景细看 · building(最有信息量)

图 3 · building · Large:A / DepthA / B / DepthB

图 4 · building · Base:同一对图,结构几乎同构
这对图跨视角变化大(祭坛特写 → 中殿纵深),但深度场都合理:近处栏杆/长椅暖色,远处拱顶冷色。后面跨视角一致性里,building 的 Spearman 达到 ~0.69,是六对里最稳的一对。
4.3 场景细看 · fire_academy / toronto / bike

图 5 · fire_academy · Large:大位移场景,前景构件与背景建筑分层清晰

图 6 · toronto · Large:城市峡谷 + 近景树叶,相对深度层次清楚

图 7 · bike · Large:近景金属车架,轮圈与肢体前后关系可读

图 8 · cook · Large

图 9 · scene · Large:大基线户外场景,地面近、天空远
单张深度图好看不够。我们用 DIS 光流把 A 的深度 warp 到 B,再做中位尺度对齐,算尺度不变指标。注意:这里光流只是轻量桥接,不是 RoMa/UFM——大基线对会先在对应上翻车,数字要带着这个前提看。

图 10 · 分场景 AbsRel_med 与 Spearman:Base(紫)vs Large(青)
pair | Base AbsRel | Large AbsRel | Base ρ | Large ρ |
|---|---|---|---|---|
bike | 0.564 | 0.653 | 0.059 | 0.068 |
building ★ | 0.453 | 0.513 | 0.691 | 0.689 |
cook | 0.876 | 0.875 | -0.109 | -0.048 |
fire_academy | 0.795 | 0.777 | 0.337 | 0.337 |
scene | 2.450 | 2.296 | 0.612 | 0.619 |
toronto | 0.535 | 0.538 | 0.316 | 0.303 |
mean | 0.945 | 0.942 | 0.318 | 0.328 |

图 11 · 跨视角相对误差热力图(越暗越好;亮区=误差大或对应失败)
怎么读这些数:
· building 最有参考价值:Spearman≈0.69,说明深度排序在中等视角变化下能对齐。
· cook Spearman 接近 0 甚至为负:主要是大视角 + DIS 对应崩了,不全是深度模型锅。
· Base / Large 均值几乎贴脸——结构上 Large 略胜(0.328 vs 0.318),不值 3 倍延迟。
选 Base,如果……
要批量跑、接视频、嵌进产线;显存/时延敏感;只需要相对深度做遮挡/前后关系。
选 Large,如果……
单张精修、出演示图、细杆件/镂空结构敏感;你有充足时延预算(~300ms+)。
别指望单目深度单独解决……
绝对尺度、大基线跨视角对齐、弱纹理平面的精确几何——这些要匹配器或 MASt3R/DUSt3R 上场。
本篇一致性用的是 OpenCV DIS 光流,目的是「先有一个不依赖大匹配模型的代理指标」。更硬的版本是:
# matcher-conditioned depth consistency
RoMa / UFM flow ──warp──► depth_A → frame_B
└─ scale-align ─► SILog / Spearman vs depth_B
// 对应更准 → 更能隔离「深度模型本身」的误差
这正好接上你已经跑完的三引擎匹配结果:同一 6 对图、同一输出目录约定,把 DIS 换成 RoMa/UFM flow 即可。
单目深度在 2026 年已经不是「能不能跑」的问题,而是 放在哪一层流水线最划算 的问题。
在这块 RTX 5060 Ti 上:
· Depth Anything V2 完全不是瓶颈——Large 都不到 2GB;
· Base 是默认推荐——快 3 倍,跨视角结构几乎不输;
· 跨视角数字要带着对应质量一起读——下一阶段用 RoMa/UFM flow 替换 DIS,结论会更干净;
· 真正的三维故事,还欠一层 MASt3R / DUSt3R 点云——那是 Stage-2。
VISUAL GEOMETRY · STAGE 1
匹配已测 · 深度已测 · 点云待续
数据与图片均为实测