ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Ultralytics YOLO26-Depth KITTI 深度数据集:结构、YAML 配置与 Eigen 评测基准详解

Ultralytics YOLO26-Depth KITTI 深度数据集:结构、YAML 配置与 Eigen 评测基准详解 Ultralytics YOLO26-Depth KITTI 深度数据集结构、YAML 配置与 Eigen 评测基准详解【免费下载链接】ultralyticsUltralytics YOLO26, YOLO11, YOLOv8 — object detection, instance segmentation, semantic segmentation, image classification, pose estimation, object tracking项目地址: https://gitcode.com/GitHub_Trending/ul/ultralytics本文围绕 Ultralytics 仓库中面向单目深度估计的 KITTI 数据集docs/en/datasets/depth/kitti.md展开系统讲解 KITTI 深度数据的来源、train/val 划分、depth_scale: 256的 uint16 PNG 存储格式、depth-kitti.yaml配置以及 YOLO26-Depth 在 652 帧 KITTI Eigen 测试集上的评测协议。读完本文你将能够直接用depth-kitti.yaml训练/验证 YOLO26-Depth 模型并理解max_depth、中位数尺度对齐与delta1指标在源码中的具体实现位置。KITTI 深度数据集概述KITTI 是一个真实户外自动驾驶基准数据由一辆在卡尔斯鲁厄Karlsruhe市区及周边行驶的车辆采集。对于单目深度估计任务深度真值来源Velodyne HDL-64 LiDAR 扫描并按 Uhrig et al. 2017Sparsity Invariant CNNs的方法稠密化。稠密化后的深度图依然稀疏只有约 16–20% 的像素携带有效深度值数据集定位KITTI 是 YOLO26-Depth 预训练混合数据集中唯一的真实户外远距离数据源其余以室内数据为主同时它也是 KITTI Eigen 评测基准深度范围覆盖约 80 m 的远距离场景远超典型室内数据集的十几米量程。关键特性特性说明户外驾驶场景真实车载相机采集深度可达约 80 mLiDAR 深度真值Velodyne HDL-64 点云投影生成经 Sparsity Invariant CNNs 稠密化稀疏监督每帧仅 16–20% 像素有效无效像素在 loss 与指标中都被掩膜剔除双目图像左目image_02与右目image_03同时提供训练视角存储格式uint16 PNGdepth_scale: 256即 PNG 中 256 1 米数据集划分Ultralytics 使用的 KITTI 深度数据分为两个子集训练集55,198 张图像同时使用左目image_02与右目image_03。为保持评测公平全部 28 条 KITTI Eigen 测试轨迹被排除在训练集之外评测集KITTI Eigen 测试划分——其中具有改进真值improved ground truth的652 张左目帧。评测使用 80 m 深度上限并在预测与真值之间做中位数仅尺度对齐。对应的depth-kitti.yaml中训练/验证路径注释与数量与此一致train为images/train55198 张val为images/val652 张左目相机。划分逻辑直接实现在数据集 YAML 的download脚本中脚本内置一张 28 条 Eigen 测试轨迹的帧索引表EIGEN_TEST字典凡属于该表的帧归入val且仅保留左目image_02中列出的帧号其余所有带标注轨迹归入train左右目均用。此外还有 4 条因构建时原始数据不可用而被跳过的轨迹SKIP_DRIVES。脚本同时下载约 14 GB 的改进稀疏真值与约 175 GB 的原始视频raw_data转换完成后删除source目录最终产物约 140 GB目录结构为datasets/ └── depth-kitti ├── images/{train,val} # RGB 图像 └── depth/{train,val} # 配对的 16-bit *.png 深度图images/ 与 depth/ 同名对应YAML 注释中还特别提醒下载仅在 val 图像缺失时触发train 从不检查因此若使用旧版划分构建的depth-kitti目录需删除该目录后重新下载才能拿到修正后的划分。深度图存储格式与depth_scale: 256Ultralytics 的深度图统一采用缩放后的 uint16 PNG文件中的整数像素值除以depth_scale得到米为单位的深度编码值0表示无效像素。KITTI 的 YAML 中设置depth_scale: 256 # KITTI PNG value 256 1 meter这意味着 KITTI 的量化分辨率为 1/256 ≈ 3.90625 mmuint16 上限 65535 对应约 255.996 m 的理论量程足以容纳 80 m 的驾驶场景。作为对比仓库中室内数据集 depth8.yaml 使用depth_scale: 1000毫米级分辨率65.535 m 量程YAML 注释中也列出了常见取值ARKitScenes 与 NYU Depth V2 用 1000KITTI 用 256Virtual KITTI 2 用 100。该约定在源码中有完整闭环读取load_depth 打开 PNG断言其为整型灰度 PNGmode 为I或I;16然后执行depth encoded.astype(np.float32) / scale得到米制深度写入save_depth_png 将米制深度乘以scale四舍五入为 uint16无效像素非有限值或 ≤0置 0有效像素最小取 1且超量程会直接抛出异常配对与校验DepthDataset 将图像路径中的images目录替换为depth目录来定位深度图verify_image_depth 在数据扫描阶段检查图像与深度图成对存在、PNG 格式合法且两者宽高比偏差在 2% 以内缺深度的样本只告警跳过而不中断。值得注意的一个细节验证阶段图像会被拉伸到方形imgszDepthDataset.build_transforms中非增强分支使用LetterBox(scale_fillTrue)而 GT 深度保持原生分辨率加载后按 cv2.INTER_NEAREST 重采样对齐——这正是文档 Results 一节强调“本仓库数字不能直接与公开 KITTI 结果对比”的技术原因之一公开评测器是把预测 resize 回 GT 原生分辨率。数据集 YAML 配置KITTI 深度数据集由 ultralytics/cfg/datasets/depth-kitti.yaml 定义核心字段如下path: depth-kitti # 数据集根目录相对于 Ultralytics 设置中的 datasets_dir train: images/train # 训练图像相对于 path55198 张 val: images/val # 验证图像652 张KITTI Eigen 测试划分左目 max_depth: 80 # 最大有效深度米超过该值的 GT 在 val 指标中被排除 nc: 1 names: 0: depth channels: 3 depth_scale: 256 # KITTI PNG 值 256 1 米其中max_depth: 80与数据集约 80 m 的深度量程相对应它会被验证器读取并用于指标计算见下节。download字段则嵌入了上文描述的完整下载与转换脚本。评测协议80 m 上限、中位数对齐与 delta1文档声明评测采用 80 m 深度上限加中位数仅尺度对齐。这在源码中的实现链路非常清晰验证器初始化DepthValidator.init_metrics 执行DepthMetrics(max_depthself.data.get(max_depth) or 100.0)即直接读取 YAML 的max_depthKITTI 下为 80缺省回退 100逐像素掩膜与对齐DepthMetrics.update_stats 遵循标准 Eigen 协议——只对 GT 落在(min_depth, max_depth)区间内的像素计分alignmedian时按median(gt) / median(pred)对每张图做尺度对齐预测值随后被 clamp 回该区间指标定义delta1为max(p/g, g/p) 1.25的像素占比delta2、delta3分别放宽到 1.25²、1.25³同时输出abs_rel、rmse以及 ZoeDepth/KITTI 方差形式的silog×100。所有指标逐图计算后按图求平均每张图等权有效 GT 像素少于 10 个的图像整张跳过DDP 归约DepthValidator.gather_stats 对 float64 累加器做 all-reduce保证多卡分片验证下指标仍覆盖完整 val 集。预训练模型在 KITTI Eigen 上的结果文档给出的delta1准确率越高越好按模型规模列出模型KITTI Eigen δ1YOLO26n-Depth0.878YOLO26s-Depth0.879YOLO26m-Depth0.913YOLO26l-Depth0.926YOLO26x-Depth0.932这些数字在 652 帧标准划分上以imgsz768、rectFalse测得。文档同时给出了四条与公开 KITTI 数字不可直接比较的明确原因这里完整保留val 阶段将每张图拉伸为方形imgsz并用最近邻重采样稀疏 GT而参考评测器是把预测 resize 回 GT 原生分辨率DepthMetrics 按max_depth掩膜 GT而改进真值协议是掩膜gt 0且仅对预测做上限截断指标对划分内全部有效像素做池化平均按图等权而非逐图指标再平均的另一种口径差异下的口径发布的权重是用旧版划分训练的旧划分中有 72 帧属于这 652 张测试帧当时位于训练集内。因此该表格适合作为同一评测器下的相对规模对比而非与论文榜单横向比较的依据。此外KITTI 还解释了为何 YOLO26-Depth 的深度头采用无界log输出模式固定的 10 m 输出上限无法表达 80 m 的驾驶场景。相关输出范围与max_depth处理详见 depth 任务文档。在 KITTI 上训练 YOLO26-Depth以 YOLO26n-Depth 在 KITTI 上训练 100 个 epoch 为例。完整参数列表参见 Training 文档。Pythonfrom ultralytics import YOLO # 加载预训练深度模型 model YOLO(yolo26n-depth.pt) # 在 KITTI 上训练 results model.train(datadepth-kitti.yaml, epochs100, imgsz640)CLI# 从预训练 *.pt 模型开始训练 yolo depth train datadepth-kitti.yaml modelyolo26n-depth.pt epochs100 imgsz640训练入口由 DepthTrainer 承接它继承自DetectionTrainer强制taskdepth通过 DepthModel 构建网络。两个对 KITTI 这类远距离数据集尤为重要的行为增强限制DepthDataset.build_transforms中 mosaic、mixup、cutmix、copy_paste 被强制置 0避免跨场景拼接破坏深度分布终点校准DepthTrainer.final_eval 在标准评测之后会在验证集上拟合一个仅尺度的 log-affine 校准cal_a/cal_b并写回best.pt/last.pt校准同样使用max_depthKITTI 下为 80 m圈定参与拟合的 GT 区间使模型开箱即输出度量尺度的深度设置plotsTrue时还会生成val_batch{ni}_calibrated.jpg对比面板RGB | GT | 原始预测 | 校准后预测。预训练模型YOLO26-Depth 系列预训练权重在首次按名称引用时会自动从 Ultralytics v8.4.0 资源发布下载YOLO26n-Depth / YOLO26s-Depth / YOLO26m-Depth / YOLO26l-Depth / YOLO26x-Depth结合depth-kitti.yaml即可直接跑yolo depth val datadepth-kitti.yaml modelyolo26x-depth.pt imgsz768复现上表口径的评测。在 YOLO26-Depth 预训练混合中的角色KITTI 为 YOLO26-Depth 预训练混合提供了唯一的真实户外、远距离监督与以室内为主的其余数据源互补使其既能处理近景也能覆盖远距离驾驶场景同时它也是报告驾驶场景深度精度的标准 KITTI Eigen 基准。这一“户外远距离补充室内近景”的组合正是log无界深度头设计的直接动机。引用与致谢若在你的研究或开发中使用 KITTI 数据集请引用以下文献article{geiger2013vision, title{Vision meets Robotics: The KITTI Dataset}, author{Geiger, Andreas and Lenz, Philip and Stiller, Christoph and Urtasun, Raquel}, journal{The International Journal of Robotics Research}, year{2013}, publisher{SAGE Publications} } inproceedings{uhrig2017sparsity, title{Sparsity Invariant CNNs}, author{Uhrig, Jonas and Schneider, Nick and Schneider, Lukas and Franke, Uwe and Brox, Thomas and Geiger, Andreas}, booktitle{International Conference on 3D Vision (3DV)}, year{2017} }感谢 Karlsruhe Institute of Technology卡尔斯鲁厄理工学院与 Toyota Technological Institute at Chicago 创建并维护 KITTI 数据集以及 Uhrig et al. 提出的深度稠密化方法使稠密监督成为可能。小结KITTI 深度数据集在 Ultralytics 中的落地可以归纳为五个要点数据面55,198 张训练图左右目 652 张 Eigen 测试帧左目28 条测试轨迹严格隔离格式面uint16 PNG depth_scale: 2560 值即无效像素由 load_depth / save_depth_png 统一编解码配置面depth-kitti.yaml的max_depth: 80直接驱动评测掩膜评测面DepthMetrics 实现 Eigen 协议区间掩膜 中位数尺度对齐 δ1–δ3/abs_rel/rmse/silog 逐图等权平均训练面DepthTrainer 禁用破坏性增强并在训练结束自动完成尺度校准让best.pt直接输出米制深度。掌握这些要点后你既可以按仓库自带划分复现 YOLO26-Depth 的 KITTI Eigen 数字也可以基于同一 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),仅供参考
返回列表