news 2026/9/6 22:13:54

Ultralytics YOLO26-Depth 伪标注 ImageNet 深度数据集:用 Depth Anything 3 教师蒸馏出 128 万张深度监督

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Ultralytics YOLO26-Depth 伪标注 ImageNet 深度数据集:用 Depth Anything 3 教师蒸馏出 128 万张深度监督

Ultralytics YOLO26-Depth 伪标注 ImageNet 深度数据集:用 Depth Anything 3 教师蒸馏出 128 万张深度监督

【免费下载链接】ultralyticsUltralytics YOLO26, YOLO11, YOLOv8 — object detection, instance segmentation, semantic segmentation, image classification, pose estimation, object tracking项目地址: https://gitcode.com/GitHub_Trending/ul/ultralytics

本文解析 Ultralytics 仓库中 YOLO26-Depth 预训练混合数据里最大的单一来源——伪标注 ImageNet 深度数据集:1,281,167 张 ImageNet-1K 训练图像如何借助 Depth Anything 3 教师模型离线生成伪深度标签,单目结构与度量尺度如何经逐图仿射拟合合并为label = a * mono + b,以及为什么 SILog 损失与中值对齐验证能让这些"无真值"数据支撑起室内跨域泛化。读完后你将理解这套蒸馏数据的完整生成管线、在预训练混合中的角色,以及如何在自己的多源深度混合(depth mix)上训练 YOLO26-Depth。

数据集概览与定位

Ultralytics 官方文档 ImageNet (Pseudo-Labeled) Depth Dataset 描述的数据集复用了 1,281,167 张 ImageNet-1K 训练图像。这些图像本身没有任何真实深度(ground-truth depth),每一张都配有一张由 Depth Anything 3 教师模型离线生成的伪深度图。它的用途非常明确:

  • **纯粹用于知识蒸馏(knowledge distillation)**与场景/物体多样性补充,而非作为评测基准;
  • 是约 2.19M 图像的 YOLO26-Depth 预训练混合中最大的单一来源(约占 58%)
  • 官方文档指出,加入该来源对室内跨域泛化(indoor cross-domain generalization)起到了决定性作用——模型在真实深度训练分布之外的室内场景上表现更好;
  • 没有验证划分:YOLO26-Depth 的验证只在 NYU Depth V2、KITTI Eigen 等真实真值数据集上进行(参见 NYU Depth V2 与 KITTI)。

该数据源以"内部混合训练配置的一个组成部分"形式存在,随预训练权重一并发挥作用,不作为独立下载分发

数据集结构

伪标注 ImageNet 源由两部分构成,对应文档中的 Dataset Structure 一节:

  1. 训练图像:1,281,167 张 ImageNet-1K 训练图像,是约 2.19M 图像预训练混合中最大的单一组件(约 58%);
  2. 验证:无。该来源没有验证划分;YOLO26-Depth 的验证只使用 NYU Depth V2、KITTI Eigen 等真实真值数据集。

深度文件本身的组织遵循 Ultralytics 统一的 深度数据集格式:每张伪深度图保存为16-bit 毫米单位 PNG(默认depth_scale: 1000,即像素值 1500 表示 1.5 米),并与源图像按**文件主干名(file stem)**配对——即images/train/xxx.jpg对应depth/train/xxx.png,加载器通过把路径中的images目录替换为depth来定位深度文件。

伪标签生成管线:单目细节 + 度量尺度

由于 ImageNet 不附带深度标注,深度目标是离线预测出来的,而不是测量出来的。文档给出了完整四步管线:

  1. 双教师前向。每张 ImageNet 训练图像分别过两个 Depth Anything 3 检查点:
    • depth-anything/DA3MONO-LARGE:预测细节极高的深度图,但只定义在未知逐图尺度/偏移上(仿射歧义);
    • depth-anything/DA3METRIC-LARGE:输出较粗糙,但处于真实米制单位。
  2. 逐图鲁棒仿射拟合。以单目预测为基础、度量预测为锚,解出逐图两个标量:label = a * mono + b。于是逐像素细节全部来自单目检查点,度量检查点只负责把深度图放到米制坐标轴上的两个标量。整个过程不涉及相机内参,因此未标定的图像也可以被标注。
  3. 落盘。结果保存为 16-bit 毫米 PNG,按文件主干名与源图像配对。
  4. 混入训练。伪标注对作为更大训练混合的一个组件加入,学生模型 YOLO26-Depth 一边匹配教师、一边在真实真值源上训练。

为什么伪标签的全局尺度误差可以被吸收

因为尺度来自预测而非测量,每张伪图都可能带有全局尺度误差。文档给出的解释是:YOLO26-Depth 使用尺度不变对数损失(SILog)加梯度匹配训练,并用中值对齐做验证,因此伪标签中的逐图尺度偏移大部分被吸收。仓库源码印证了这一整套机制:

训练侧:DepthLoss26 的 SILog + 多尺度梯度损失

DepthLoss26 的类注释明确写着"采用尺度不变对数损失(SILog)+ 梯度匹配损失,遵循 Depth Anything 思路。SILog 处理尺度歧义,梯度损失保边"。关键实现细节:

  • 有效像素掩码为valid = gt_depth > 0.001,无效像素(0 值约定)不参与损失;
  • SILog 以中心化方差形式实现:先对log(pred) - log(gt)求均值m,再计算sqrt(mean((log_diff - m)^2) + (1 - dlam) * m^2 + 1e-6)。其中dlam = 1.0即纯尺度不变形式,dlam = 0.0退化为 log-RMSE——这正是文档中"逐图尺度偏移被吸收"的数学来源:当dlam = 1.0时损失对整体平移(即尺度)不敏感;
  • 梯度损失_grad_l1计算预测与 GT 对数深度的空间梯度(dx、dy)的 L1,且只在两个参与像素均有效时计值;随后经avg_pool2d下采样做最多 4 层多尺度匹配,并在有效像素占比较低的图块上停止,兼顾连续填充与 LiDAR 稀疏场景。

这三个行为由 default.yaml 中的超参数控制,均为深度任务默认值:

dlog: 1.0 # (float) depth log (SILog) loss gain (depth tasks) dgrad: 0.5 # (float) depth gradient loss gain (depth tasks) dlam: 1.0 # (float) depth SILog variance focus: 1.0=scale-invariant, 0.0=log-RMSE (depth tasks)

验证侧:逐图像素中值对齐

Depth 指标实现 中的对齐参数align: str = "median",按 Depth Anything 评测协议在打分前对每张图执行median(gt) / median(pred)的尺度重标定,注释说明这是为了让"仿射不变(尺度歧义)输出"可以直接评分——与文档"验证用中值对齐(median alignment)"的表述一致。

训练入口与后处理

DepthTrainer 继承检测训练器,将batch["depth"]保持为 float32,并透明支持多源图像路径列表(即混合训练);final_eval阶段还会在校验集上拟合 scale-only 对数仿射(cal_a/cal_b)写入best.pt/last.pt,让模型开箱即输出米制深度。学生模型结构见 yolo26-depth.yaml,其中末端Depth头在 P3/P4/P5 上输出无界对数深度。

在 YOLO26-Depth 预训练混合中的角色

这个来源贡献了 YOLO26-Depth 预训练数据的大头最广泛的场景/物体多样性。通过在 100 万+ 张图像上蒸馏强 Depth Anything 3 教师,它把广域场景先验转移给学生模型。文档结论是:加入该来源对室内跨域泛化起决定作用,帮助模型在真实真值训练分布之外的室内场景上取得良好表现。各预训练源(ARKitScenes、SUN RGB-D、DIODE、Hypersim、TartanAir、Virtual KITTI 2、KITTI 与本文的伪标注 ImageNet)及五个评测基准的完整清单见 Depth 数据集总览。

用法:作为多源深度混合的一个组件

伪标注 ImageNet 数据不单独训练,而是作为组合深度混合的一个组件被消费,由内部/实验性 YAML(而非公开的独立数据集下载)定义。从源码结构看,混合训练即在一个数据集 YAML 的train字段中列出多个图像目录,由BaseDataset的多源加载机制透明处理(见 DepthTrainer 的类注释)。概念上,在这样一个混合上训练如下:

Python

from ultralytics import YOLO # Load a pretrained depth model model = YOLO("yolo26n-depth.pt") # Train on a combined depth mix (your own multi-source dataset YAML) results = model.train(data="depth-mix.yaml", epochs=100, imgsz=640)

CLI

# Train on a combined depth mix (your own multi-source dataset YAML) yolo depth train data=depth-mix.yaml model=yolo26n-depth.pt epochs=100 imgsz=640

自定义深度混合 YAML 时遵循 深度数据集格式:path/train/val定位目录,nc: 1names: {0: depth},可选depth_scale(默认 1000,即毫米 PNG);深度 PNG 建议用ultralytics.data.utils.save_depth_png()从米制数组转换(实现位于 ultralytics/data/utils.py)。像素值≤ 0视为无效,会被自动排除出损失与指标计算。

预训练模型

预训练 YOLO26-Depth 模型在首次按名称引用时自动下载(权重来自 Ultralytics 发布的 v8.4.0 assets release),共 5 个规模档:

  • YOLO26n-Depth
  • YOLO26s-Depth
  • YOLO26m-Depth
  • YOLO26l-Depth
  • YOLO26x-Depth

各档位在不同评测基准上的精度与权重下载入口列于 Depth Estimation 任务页。

引用与致谢

如果你的研究使用了 ImageNet 数据集或本文描述的伪标注方案,请引用以下文献:

@inproceedings{deng2009imagenet, title={ImageNet: A Large-Scale Hierarchical Image Database}, author={Deng, Jia and Dong, Wei and Socher, Richard and Li, Li-Jia and Li, Kai and Fei-Fei, Li}, booktitle={2009 IEEE Conference on Computer Vision and Pattern Recognition (CVPR)}, year={2009}, organization={IEEE} } @article{depthanything3, title={Depth Anything 3: Recovering the visual space from any views}, author={Lin, Haotong and Chen, Sili and Liew, Jun Hao and Chen, Donny Y. and Li, Zhenyu and Shi, Guang and Feng, Jiashi and Kang, Bingyi}, journal={arXiv preprint arXiv:2511.10647}, year={2025} }

文档同时致谢 ImageNet 团队创建并维护该数据集,以及 Depth Anything 3 作者提供的用于生成伪深度标签的教师模型。

小结

  • 伪标注 ImageNet 是 YOLO26-Depth 约 2.19M 预训练混合中约 58% 的最大来源,只用于蒸馏与多样性,不单独分发、不做评测;
  • 标签由DA3MONO-LARGE(细节)与DA3METRIC-LARGE(尺度)双教师经逐图仿射拟合label = a * mono + b生成,16-bit 毫米 PNG 落盘;
  • 尺度误差由 DepthLoss26 的 SILog(dlam=1.0)+ 梯度损失与验证侧中值对齐共同吸收,源码与文档表述互相印证;
  • 实践上把它当作多源深度混合中的一个组件,用自建的depth-mix.yaml训练即可复现同等用法。

【免费下载链接】ultralyticsUltralytics YOLO26, YOLO11, YOLOv8 — object detection, instance segmentation, semantic segmentation, image classification, pose estimation, object tracking项目地址: https://gitcode.com/GitHub_Trending/ul/ultralytics

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/5 19:37:03

TDengine Linux 完整安装配置指南

TDengine Linux 完整安装配置指南 【免费下载链接】TDengine High-performance, scalable time-series database designed for Industrial IoT (IIoT) scenarios 项目地址: https://gitcode.com/GitHub_Trending/tde/TDengine TDengine 是面向工业物联网、车联网等场景的…

作者头像 李华
网站建设 2026/9/5 19:36:39

品牌监测架构升级:基于RAG与多模型语义感知的实践

1. 从"关键词告警"到"生成式监测",这次架构升级到底解决了什么做品牌监测这个方向的人应该都有同感:传统方案走到今天,瓶颈早就不是"能不能抓到信息",而是"抓到了能不能看懂"。之前我们团…

作者头像 李华
网站建设 2026/9/5 19:35:10

全局BP赛制:如何重塑电竞比赛的策略与观赛体验

全局BP并不是近几年才冒出来的新概念,但当它在一场又一场KPL夏季赛中被反复验证,甚至被越来越多电竞项目当作“竞赛规则的标准答案”时,我们就有必要停下来认真想一想:为什么一次看起来只是限制选手“不准重复选英雄”的机制调整&…

作者头像 李华
网站建设 2026/9/5 19:32:47

电竞复盘如何科学归因:从BP到操作,分清决策与执行

AG败走EWC无缘冠军 的赛后讨论里,很多人把问题压缩成一个选择题:教练BP背锅,还是选手操作背锅。这个问法很容易得到答案,但在专业复盘里几乎无法使用。原因很简单:BP和操作不是两个并列的独立变量,而是一条…

作者头像 李华