Ultralytics YOLO26 单目深度估计的室外分布外基准:Make3D 数据集解析与零样本评测实践
本文基于 Ultralytics YOLO 仓库的 Make3D 深度数据集文档,讲解 Make3D 这一经典室外单目深度估计基准的数据构成、评测协议(多尺度 + 水平翻转 TTA、log-最小二乘尺度对齐)、YOLO26-Depth 系列模型在其上的零样本 delta1 结果,以及如何用仓库源码中的预测与指标实现复现和解读这些数字。读完后你可以理解"分布外基准为什么 delta1 偏低属于预期",并能直接复制命令在 Make3D 图像上运行预训练深度模型。
Make3D 数据集概览
Make3D 是单目深度估计领域的经典室外基准:它由校园实景照片(Cornell 校区场景)与深度真值配对构成,深度真值由定制 3D 激光扫描仪捕获。其关键特性在原文档中明确列出:
- 深度真值来自定制 3D 激光扫描仪(而非普通 RGB-D 传感器);
- 覆盖真实室外校园场景;
- 深度范围最大约 70 m;
- 官方评测在标准 134 张图像的测试集上进行;
- 被广泛用作分布外(out-of-distribution, OOD)泛化探针。
在 YOLO26 的深度估计体系里,数据集按用途分为三类:调试集(如 Depth8)、预训练数据源(ARKitScenes、SUN RGB-D、DIODE、Hypersim、TartanAir、Virtual KITTI 2、KITTI、ImageNet 伪标签等)以及评测基准。Make3D 属于第三类,与 NYU Depth V2、KITTI Eigen、ETH3D、iBims-1 并列,详见 深度数据集总览。
Make3D 在 YOLO26-Depth 中的定位:零样本评测基准
文档明确指出 Make3D 是 YOLO26-Depth 系列的零样本评测基准:发布的预训练模型并未在其上训练过。这意味着它专门用来检验模型对训练中未见过的室外场景的泛化能力。
由于训练混合集以室内(≤10 m)和较规整的室外驾驶场景为主,Make3D 的校园场景在成像条件、深度分布上偏离训练域,因此文档称它是"对所有模型而言最难的基准"——所有模型的绝对 delta1 值整体偏低,这在该数据集上是预期现象,不能与室内基准(如 NYU Eigen 的 0.933)直接横向比较。
另外可以从仓库的 任务文档交叉印证这一协议差异:其中说明 NYU 等基准的数字带有多尺度 + 水平翻转 TTA 与 log-最小二乘对齐,而本仓库内置 validator 实现的是中位数(仅尺度)对齐的单尺度评测,因此 Make3D 页上的数字对应的是带 TTA 与 log-最小二乘对齐的标准评测脚本口径,而非仓库内 yolo depth val 的直接复算。
评测协议要点
Make3D 上的指标计算包含两个前置步骤:
- 测试时增强(TTA):多尺度推理 + 水平翻转;
- 尺度对齐:在计算指标前,对预测深度图与真值深度图做 log-最小二乘(log-least-squares)尺度对齐——单目深度网络预测的往往是相对尺度,评测前统一对齐才能公平比较绝对精度。
最终报告的指标是 delta1 精度:预测深度落在真值 1.25 倍阈值内(即 max(p/g, g/p) < 1.25)的像素百分比,数值越高越好。
各尺寸模型的零样本结果
文档给出的 YOLO26-Depth 系列在 Make3D 测试集上的 delta1 如下:
| 模型 | delta1 |
|---|---|
| YOLO26n-depth | 0.307 |
| YOLO26s-depth | 0.311 |
| YOLO26m-depth | 0.293 |
| YOLO26l-depth | 0.297 |
| YOLO26x-depth | 0.299 |
几点解读(结合文档与源码口径):
- 所有尺寸 delta1 集中在 0.29–0.31 区间,验证了"OOD 基准上绝对值整体偏低"的说法;
- 最小模型 YOLO26s-depth(0.311)甚至略高于更大尺寸,说明在分布外泛化上模型规模并不是单调优势项;
- 任务页面中 YOLO26x-depth 在 Make3D 上的行(0.302,带 TTA 与 log-最小二乘协议)与本表同属发布口径,可相互印证。
delta1 指标在仓库中的实现
仓库源码中的指标实现与上述口径严格对应,可以作为复现时的参照:
- DepthMetrics 类实现了 delta1/2/3、abs_rel、rmse、silog 五项指标:delta1 即逐图像计算
(max(p/g, g/p) < 1.25)的像素占比;每图结果先在 float64 累加,再对验证集逐图平均(每图权重相同,与 Depth Anything V2 的 per-sample 平均一致),有效真值像素不足 10 张的图像被跳过,非有限预测值按深度边界计分,GT 落在(min_depth, max_depth)之外的像素被剔除且预测值被截断到该区间(Eigen 评测协议); - DepthValidator 继承自
DetectionValidator,无 NMS 后处理,预测图经双线性插值对齐真值尺寸后送入DepthMetrics,并支持 DDP 下跨 rank 的统计量 all-reduce 归并;默认max_depth=100.0(可由数据集 YAML 的max_depth覆盖),对齐方式为逐图中位数尺度对齐。
注意:仓库内 validator 的默认对齐是中位数尺度对齐(align="median"),而 Make3D 发布数字使用的是 log-最小二乘对齐 + 多尺度/翻转 TTA,这正是文档强调"该基准由专用评测脚本评测"的原因。
评测方式:无内置 YAML,使用专用评测脚本
文档明确说明:Make3D 不随仓库附带数据集 YAML。可以在 ultralytics/cfg/datasets/ 下确认这一点——内置的深度 YAML 包括 nyu-depth.yaml、depth8.yaml、depth-kitti.yaml、depth-sunrgbd.yaml、depth-arkitscenes.yaml、depth-hypersim.yaml、depth-tartanair.yaml、depth-vkitti2.yaml、depth-diode.yaml 等,但没有 Make3D 对应文件。
因此 Make3D 的评测路径是:使用仓库文档所述的专用评测脚本,加载 Make3D 图像与激光扫描仪深度真值,套用标准 TTA + log-最小二乘尺度对齐后报告深度指标。对普通使用者而言,Make3D 是外部基准,最常见的用法是直接用 predict 在其图像上跑推理。
在 Make3D 图像上运行预测
继承原文档的完整用法示例。Make3D 为外部基准,典型工作流是用预训练模型 predict 其图像目录(完整参数说明见 Prediction 文档):
# Python
from ultralytics import YOLO
# Load a model
model = YOLO("yolo26x-depth.pt") # load a pretrained depth model
# Predict depth on Make3D images
results = model.predict("path/to/make3d/images")
# CLI: Predict depth with a pretrained *.pt model
yolo depth predict model=yolo26x-depth.pt source=path/to/make3d/images
预测结果访问方式(结合 深度任务文档 的 Results 输出说明):每个图像返回一个 Results 对象,result.depth.data 是形状 (H, W) 的 torch.Tensor,单位为米,可直接 .cpu().numpy() 转为 NumPy float32 深度图;depth 任务没有实例框(boxes)和实例掩码(masks)。若需可视化,可调用 ultralytics.utils.plotting 中的 colorize_depth 将深度图着色为 BGR uint8 图像(无效像素 <= 0 渲染为黑色),result.plot() 默认以 cmap="jet"、mode="disparity" 叠加显示。
预训练模型与引用信息
- 预训练模型:YOLO26 深度系列(
yolo26n/s/m/l/x-depth)覆盖从轻量到重型多种规模,首次使用时自动从最新 Ultralytics 发布(自 v8.4.0 起)下载;模型结构定义可见 yolo26-depth.yaml。发布权重在约 2.19M 张室内外混合图像(室内 ≤10 m 到室外约 80 m)上预训练,并已内置一次全局尺度校准(model.calibrate()在预训练验证混合集上拟合的两参数 log 仿射变换),因此可直接输出米制深度。 - 引用:若在研究中使用 Make3D 数据集,请引用其原始论文:
@article{saxena2009make3d,
title={Make3D: Learning 3D Scene Structure from a Single Still Image},
author={Saxena, Ashutosh and Sun, Min and Ng, Andrew Y.},
journal={IEEE Transactions on Pattern Analysis and Machine Intelligence (TPAMI)},
year={2009}
}
小结与适用前提
- Make3D 在 YOLO26-Depth 体系中是零样本 OOD 室外基准,134 张测试图、深度至约 70 m,各尺寸模型 delta1 约 0.29–0.31,偏低属预期;
- 发布数字的口径是"多尺度 + 水平翻转 TTA + log-最小二乘尺度对齐",与仓库内 DepthValidator 的默认中位数对齐单尺度口径不同,复算时需注意这一协议差异;
- 仓库未附带 Make3D 数据集 YAML,官方评测依赖专用脚本;日常使用以
yolo depth predict直接推理其图像为主; - 本文所有数字、参数与命令均以当前仓库 Make3D 文档、深度任务文档 及 指标源码 为准,适用于 YOLO26-Depth 系列(
-depth后缀权重)及depth任务模式。
atomcodeClaude Code 的开源替代方案。连接任意大模型,编辑代码,运行命令,自动验证 — 全自动执行。用 Rust 构建,极致性能。 | An open-source alternative to Claude Code. Connect any LLM, edit code, run commands, and verify changes — autonomously. Built in Rust for speed. Get StartedRust0624
Hy4-previewHy4 preview 是由腾讯混元团队研发的新一代混合专家(MoE)旗舰模型。模型总参数量 770B,每个 token 激活 49B,主干共包含78层,第一层采用标准 FFN,其余 77 层均为 MoE 结构,每层包含 256 个路由专家与 1 个共享专家,每个 token 激活 top-8 路由专家及共享专家。主干之外原生内置 1 层 MTP(总参数量 10B,激活 0.7B)以支持投机解码。Python00
GLM-5.3GLM-5.3 与 GLM-5.2 使用相同的基座模型——所有提升均来自后训练。与 GLM-5.2 相比,它在复杂编程和长程任务上的表现显著提升。Jinja00
GLM-5.3-FlashGLM-5.3-Flash (320B-A18B),是GLM-5系列的首个原生多模态模型。320B总参数,能力超过GLM-5.2Jinja00
Spark-X2.5-4BSpark-X2.5-4B 旨在让强大的 AI 更实用、更高效、更易获得。在广泛日常任务中表现强劲,涵盖对话、写作、翻译、推理、编码、工具调用以及智能体工作流,并在同等规模的开源模型中取得领先成绩。Spark-X2.5 将面向效率的架构与最高 1M tokens 的原生上下文窗口相结合,并支持 200 多种语言。Python00
Spark-X2.5-1.7BSpark-X2.5-1.7B 旨在让强大的 AI 更加实用、高效且易于获取。这些模型在广泛的日常任务中表现出色,涵盖对话、写作、翻译、推理、编程、工具调用和智能体工作流,并在同等规模的开源模型中取得领先结果。Spark-X2.5 将面向效率的架构与最高 1M tokens 的原生上下文窗口相结合,并支持 200 多种语言。Python00