ETH3D 深度数据集解析:YOLO26-Depth 的高分辨率激光扫描仪零-shot 评测基准
本文基于 Ultralytics 官方文档 ETH3D Depth Dataset 展开,讲解 ETH3D 数据集的结构特点、它作为 YOLO26-Depth 系列零-shot(zero-shot)评测基准的定位、标准评测协议(TTA + 对数最小二乘尺度对齐),以及如何用仓库中的 predict 流程在 ETH3D 图像上运行单目深度估计。读完后可理解该基准的评测口径与仓库内深度模型推理、指标计算实现之间的对应关系。
1. ETH3D 数据集概述
ETH3D 是一个高分辨率多视图立体(multi-view stereo)基准数据集,在 Ultralytics 的深度估计任务中专门用于单目深度估计(monocular depth estimation)的评测。它提供覆盖室内与室外场景的测绘级(survey-grade)激光扫描仪真值,主要特点如下(摘自官方文档):
- 使用高精度激光扫描仪采集的测绘级深度真值(dense ground truth);
- 高分辨率图像,同时覆盖室内与室外两类场景;
- 深度范围可达约 60 m;
- 评测在 423 张图像上进行;
- 一个具有精确稠密真值的高质量多视图立体基准。
由于场景横跨室内/室外且真值精度由激光扫描仪保证,ETH3D 对模型的跨域泛化能力是较强的检验——这也是它被选作 YOLO26-Depth 零-shot 评测基准的原因。
2. ETH3D 在 YOLO26-Depth 中的角色:零-shot 评测基准
官方文档明确将 ETH3D 定位为 YOLO26-Depth 系列的零-shot 评测基准:公开发布的 YOLO26 深度模型并未在该数据集上训练,模型在其上的表现完全反映跨域泛化能力。
从 深度估计数据集总览 可以看到 YOLO26 深度模型的完整生态:模型先在约 219 万张图像的混合多数据集(ARKitScenes、SUN RGB-D、DIODE、Hypersim、TartanAir、Virtual KITTI 2、KITTI、ImageNet 伪标注等)上预训练,然后在五个零-shot 基准上评测,ETH3D 是其中之一:
| 基准 | 定位 |
|---|---|
| NYU Depth V2 | 主要室内基准 |
| KITTI Eigen | 室外驾驶基准 |
| ETH3D | 高精度室内 + 室外混合 |
| Make3D | 室外、分布外(OOD) |
| iBims-1 | 高质量室内(边缘与平面) |
评测协议方面,官方文档给出的口径是:
- 测试时增强(TTA):多尺度(multi-scale)+ 水平翻转(horizontal-flip);
- 尺度对齐:在计算指标前,对预测深度图与真值深度图做对数最小二乘尺度对齐(log-least-squares scale alignment);
- 指标:主指标为
delta1,即落在 1.25× 阈值内(max(d̂/d, d/d̂) < 1.25)的像素占比,数值越高越好。
3. 评测结果:各规模模型的 delta1 表现
官方文档按模型规模报告了 ETH3D 评测图像上的 delta1 精度(该表格数值来自文档本身,适用于文档对应的发布版本):
| Model | delta1 |
|---|---|
| YOLO26n-depth | 0.905 |
| YOLO26s-depth | 0.876 |
| YOLO26m-depth | 0.943 |
| YOLO26l-depth | 0.945 |
| YOLO26x-depth | 0.953 |
从表格可以看出:最大模型 YOLO26x-depth 达到 0.953,即超过 95% 的像素深度误差落在 1.25 倍以内;而中档模型(m/l)已经非常接近顶级水平,n/s 小模型则存在一定差距——在室内/室外混合、深度跨度约 60 m 的场景下,模型容量仍会影响跨域泛化精度。
4. 仓库实现对照:深度推理与指标计算
ETH3D 官方文档说明:该数据集不随仓库附带 YAML 配置(仓库 ultralytics/cfg/datasets/ 目录下有 depth8、depth-kitti、depth-sunrgbd 等训练/验证用数据集 YAML,但没有 ETH3D 的对应文件)。它通过专门的评测脚本完成评测:加载 ETH3D 图像与激光扫描仪深度真值,应用标准 TTA 与对数最小二乘尺度对齐后报告深度指标。这与 Depth Estimation 任务页 的说明一致:数据集页面上按 TTA + log-least-squares 协议报告的分数,是仓库内验证器(validator)不实现的外部评测协议,属于发布口径的评测流程。
以下是仓库中与深度任务相关的核心实现,可与上述协议逐一对应理解:
4.1 深度预测器
DepthPredictor 继承自 BasePredictor,负责把模型输出的 (B, 1, H, W) 原始深度张量后处理为逐像素深度图:先通过 ops.scale_masks 恢复模型输入分辨率(裁剪 letterbox 填充),再缩放到原始图像尺寸,最终封装进 Results 对象并挂载 depth 字段。这正是第 6 节 predict 用法在 yolo depth predict 命令背后的执行路径。
4.2 验证器与指标
DepthValidator 继承自 DetectionValidator,深度任务无需 NMS,直接累积指标;其指标累加器为 DepthMetrics,计算 delta1/2/3、abs_rel、rmse、silog 六项标准指标,遵循 Eigen 评测协议(只统计 gt 位于 (min_depth, max_depth) 内的像素,逐图定标后等权平均)。需要注意两者的口径差异:
- 仓库内验证器默认使用中位数对齐(
align="median",按median(gt)/median(pred)重标定每幅预测图); - ETH3D 发布分数使用的是文档所述的多尺度 + 水平翻转 TTA + 对数最小二乘对齐协议。
因此仓库验证器输出与 ETH3D 发布表中的数值不完全同口径,复现该基准需使用官方文档描述的专门评测脚本流程。
4.3 尺度相关机制:训练后自动标定
单目深度输出存在尺度歧义问题,仓库在 calibrate.py 中实现了与之配套的机制:深度头携带 cal_a/cal_b 两个缓冲,对模型原始输出施加对数仿射变换 d' = exp(a·log d + b)。训练结束后可在少量带真值图像上以闭式最小二乘拟合 (a, b)(无梯度训练、不动解码器权重),并采用"calibrate only if it helps"策略——候选(identity 与 scale-only)在留出折上用原始尺度 δ1 打分,只有当标定确实提升跨域 δ1 时才写入检查点(fit_calibration_selective / calibrate_checkpoint)。可以推断,这类"只在有益时标定"的政策与 ETH3D 这类跨域零-shot 基准的评测关注点一致:保证绝对尺度在域外场景上不被过度拟合。
4.4 模型结构配置
YOLO26 深度模型的结构定义见 yolo26-depth.yaml,n/s/m/l/x 各规模变体共用该配置模板的不同深度/宽度参数。
5. 如何在 ETH3D 图像上运行深度预测
由于 ETH3D 是外部基准,常规用法是对它的图像目录运行 predict。完整参数列表见 Prediction 模式文档。官方文档给出的示例如下:
from ultralytics import YOLO
# Load a model
model = YOLO("yolo26x-depth.pt") # load a pretrained depth model
# Predict depth on ETH3D images
results = model.predict("path/to/eth3d/images")
# Predict depth with a pretrained *.pt model
yolo depth predict model=yolo26x-depth.pt source=path/to/eth3d/images
其中:
yolo26x-depth.pt从 Ultralytics 最新 release 自动下载,无需手动获取权重;source可指向 ETH3D 解包后的 RGB 图像目录,输出为逐像素深度图(Results.depth),单位为米;- 模型家族覆盖
yolo26n/s/m/l/x-depth多种规模,可按精度与资源需求选择。
6. 预训练模型
YOLO26 深度家族以零-shot 方式在 ETH3D 基准上评测。预训练权重从 Ultralytics 最新 release 自动下载(例如 yolo26x-depth 自 v8.4.0 起可下载),规模覆盖 yolo26n/s/m/l/x-depth,对应不同精度与部署资源约束。各模型在 NYU、KITTI、ETH3D、Make3D、iBims-1 五个基准上的完整精度汇总见 Depth Estimation 任务页。
7. 引用与致谢
若在研究或开发中使用了 ETH3D 数据集,请按官方文档要求引用其论文:
@inproceedings{schops2017eth3d,
title={A Multi-View Stereo Benchmark with High-Resolution Images and Multi-Camera Videos},
author={Sch{\"o}ps, Thomas and Sch{\"o}nberger, Johannes L. and Galliani, Silvano and Sattler, Torsten and Schindler, Konrad and Pollefeys, Marc and Geiger, Andreas},
booktitle={Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition (CVPR)},
year={2017}
}
官方文档同时向 ETH3D 的作者致谢,感谢其创建并维护这一对计算机视觉社区具有重要价值的资源。
8. 小结
- ETH3D 是 YOLO26-Depth 的零-shot 评测基准:模型未在其上训练,评测的是室内/室外混合、约 60 m 深度跨度的跨域泛化能力;
- 评测协议为多尺度 + 水平翻转 TTA + 对数最小二乘尺度对齐,主指标
delta1(1.25× 阈值内像素占比);发布结果为 YOLO26x-depth 0.953、l 0.945、m 0.943、n 0.905、s 0.876; - 仓库不附带 ETH3D 的 YAML 配置,常规使用是
model.predict/yolo depth predict在其图像上推理,背后实现见 DepthPredictor、DepthValidator 与 DepthMetrics; - 仓库内验证器默认采用中位数对齐的 Eigen 协议,与 ETH3D 发布口径不同,复现发布分数需按其专门评测流程执行;
- 模型侧的尺度处理由 calibrate.py 中对数仿射标定缓冲与"只在有益时标定"策略支撑。
延伸阅读:深度估计数据集总览(数据格式、YAML 字段与 depth_scale 约定)、其他评测基准页(NYU、KITTI、Make3D、iBims-1)、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 StartedRust0622
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