首页
/ ETH3D 深度数据集解析:YOLO26-Depth 的高分辨率激光扫描仪零-shot 评测基准

ETH3D 深度数据集解析:YOLO26-Depth 的高分辨率激光扫描仪零-shot 评测基准

2026-09-04 21:52:50作者:魏献源Searcher

本文基于 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 高质量室内(边缘与平面)

评测协议方面,官方文档给出的口径是:

  1. 测试时增强(TTA):多尺度(multi-scale)+ 水平翻转(horizontal-flip);
  2. 尺度对齐:在计算指标前,对预测深度图与真值深度图做对数最小二乘尺度对齐(log-least-squares scale alignment);
  3. 指标:主指标为 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/ 目录下有 depth8depth-kittidepth-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 在其图像上推理,背后实现见 DepthPredictorDepthValidatorDepthMetrics
  • 仓库内验证器默认采用中位数对齐的 Eigen 协议,与 ETH3D 发布口径不同,复现发布分数需按其专门评测流程执行;
  • 模型侧的尺度处理由 calibrate.py 中对数仿射标定缓冲与"只在有益时标定"策略支撑。

延伸阅读:深度估计数据集总览(数据格式、YAML 字段与 depth_scale 约定)、其他评测基准页(NYU、KITTI、Make3D、iBims-1)、Depth 任务页(各基准分数汇总与模型列表)。

登录后查看全文
热门项目推荐
相关项目推荐

项目优选

收起
kernelkernel
deepin linux kernel
C
33
18
ops-transformerops-transformer
本项目是CANN提供的transformer类大模型算子库,实现网络在NPU上加速计算。
C++
1.12 K
2.72 K
kernelkernel
openEuler内核是openEuler操作系统的核心,既是系统性能与稳定性的基石,也是连接处理器、设备与服务的桥梁。
C
527
590
ops-nnops-nn
本项目是CANN提供的神经网络类计算算子库,实现网络在NPU上加速计算。
C++
904
1.82 K
pytorchpytorch
作为 Ascend for PyTorch 社区的核心组件,TorchNPU 是昇腾专为 PyTorch 打造的深度学习适配插件,使 PyTorch 框架能够直接调用昇腾 NPU,为开发者提供昇腾 AI 处理器的超强算力。
Python
854
1.34 K
docsdocs
暂无描述
Markdown
889
5.78 K
jiuwenswarmjiuwenswarm
JiuwenSwarm 是一款基于openJiuwen开发的智能AI Agent,它能够将大语言模型的强大能力,通过你日常使用的各类通讯应用,直接延伸至你的指尖。
Python
3.52 K
1.01 K
ops-mathops-math
本项目是CANN提供的数学类基础计算算子库,实现网络在NPU上加速计算。
C++
1.33 K
1.45 K
cann-learning-hubcann-learning-hub
CANN 学习中心仓,支持在线互动运行、边学边练,提供教程、示例与优化方案,一站式助力昇腾开发者快速上手。
Jupyter Notebook
982
502
AscendNPU-IRAscendNPU-IR
AscendNPU-IR是基于MLIR(Multi-Level Intermediate Representation)构建的,面向昇腾亲和算子编译时使用的中间表示,提供昇腾完备表达能力,通过编译优化提升昇腾AI处理器计算效率,支持通过生态框架使能昇腾AI处理器与深度调优
C++
540
384