拓冰建站拓冰建站
首页 / 资讯中心 / 正文

Ultralytics YOLO26-Depth 与 SUN RGB-D:多传感器室内深度数据的格式、转换流水线与训练实战

Ultralytics YOLO26-Depth 与 SUN RGB-D多传感器室内深度数据的格式、转换流水线与训练实战【免费下载链接】ultralyticsUltralytics YOLO26, YOLO11, YOLOv8 — object detection, instance segmentation, semantic segmentation, image classification, pose estimation, object tracking项目地址: https://gitcode.com/GitHub_Trending/ul/ultralytics本文以 Ultralytics 仓库中的 SUN RGB-D 深度数据集文档docs/en/datasets/depth/sunrgbd.md为主体结合仓库内置的数据集 YAMLultralytics/cfg/datasets/depth-sunrgbd.yaml与数据加载源码ultralytics/data/dataset.py、ultralytics/data/utils.py系统讲解这个多传感器室内 RGB-D 数据集的构成、Ultralytics 深度数据集格式、depth_bfx位旋转解码转换流程以及用它训练 YOLO26-Depth 单目深度估计模型的完整方法。读完后你可以直接复制仓库内的 YAML 与训练命令开展实验并理解从原始传感器数据到 uint16 毫米深度图的每一步实现细节。为什么 SUN RGB-D 适合单目深度估计SUN RGB-D 是普林斯顿大学发布的真实室内场景理解基准使用四种不同的 RGB-D 传感器采集Intel RealSense、Asus Xtion以及 Microsoft Kinect v1 和 Kinect v2。这种多传感器设计正是它在 Ultralytics 中价值所在真实的多传感器多样性同一批室内场景由不同硬件采集深度噪声模式、量程和精度各不相同能暴露模型对不同消费级 RGB-D 设备的泛化能力广泛的真实室内场景覆盖客厅、办公室、厨房等室内场景面向场景理解研究深度量程约 10 m 以内符合消费级室内 RGB-D 采集的典型范围传感器原始深度真值深度图与 RGB 帧对齐且来自传感器真实测量而非标注或拟合结果。文档明确指出SUN RGB-D 是 Ultralytics YOLO26-Depth 多数据集预训练混合集约 219 万张图像—深度对中的训练数据源其贡献正是真实多传感器室内多样性——让模型接触由多种不同消费级 RGB-D 设备采集的深度数据。数据划分与样本格式SUN RGB-D 深度数据集分为两个子集子集数量用途Train9,245 张训练Val1,090 张训练过程中的验证每个样本由一张 RGB 图像和一张配对的缩放 uint16 深度 PNG组成遵循 Ultralytics 深度数据集格式。格式要点如下深度文件为 2 维 uint16 灰度 PNG数值除以数据集级depth_scale得到米值SUN RGB-D 的内置转换以毫米为单位写出因此默认depth_scale: 1000即生效——数值1500表示 1.5 米编码值0表示无效像素传感器噪点、无深度区域这些像素会被同时排除在损失计算和指标统计之外由于 uint16 保留 0 给无效值可用的正深度值共 65,535 个按 1 mm 分辨率覆盖 0.001 m 到 65.535 m深度图可以与 RGB 图不同分辨率只要宽高比一致即可训练时会在内存中统一缩放。目录结构采用标准的并行文件夹布局depth-sunrgbd/ ├── images/ │ ├── train/ # 9245 张 RGB 图像 │ └── val/ # 1090 张 RGB 图像 └── depth/ ├── train/ # 配对的 16 位 PNG 深度图 └── val/加载器通过将图像路径中的images目录组件替换为depth来定位深度文件images/train/scene_001.jpg对应depth/train/scene_001.png。数据集 YAML完整配置与注释数据集配置由 YAML 文件定义仓库内置文件为 ultralytics/cfg/datasets/depth-sunrgbd.yaml。关键配置段去除下载脚本如下path: depth-sunrgbd # 数据集根目录相对于 Ultralytics 设置的 datasets_dir train: images/train # 训练图像相对于 path9245 张 val: images/val # 验证图像相对于 path1090 张 nc: 1 names: 0: depth channels: 3各字段含义与 深度数据集格式文档 一致键说明path数据集根目录train训练图像路径相对于path或绝对路径val验证图像路径nc类别数——深度估计恒为1names类别名映射——恒为{0: depth}depth_scale可选PNG 每米对应的整数单位缺省为1000。SUN RGB-D 未显式设置即默认按毫米解析该 YAML 还包含一段较长的download脚本字段负责自动下载原始归档并完成格式转换下面一节专门解析。另外文件头注释说明了磁盘占用约 6.5 GB 的官方归档转换后约 14 GB若中断下载留下残缺数据删除depth-sunrgbd目录后重新运行即可重建。从源码看自动下载与depth_bfx位旋转解码depth-sunrgbd.yaml 中的download字段是一个内嵌 Python 脚本首次训练时由框架自动执行。梳理该脚本转换流水线分为四步第 1 步下载官方归档。从普林斯顿的SUNRGBD.zip约 6.5 GB下载到depth-sunrgbd/source/并解压。第 2 步枚举场景。脚本扫描source/SUNRGBD下所有depth_bfx目录共 10,335 个场景以场景相对路径拼接的字符串作为规范化文件名如目录名用下划线连接。第 3 步解码深度图。这是 SUN RGB-D 特有的技术细节depth_bfx子目录里的 PNG 并非普通毫米深度图其编码值需要经过官方定义的位旋转才能还原# refined depth_bfx PNG 经 SUN RGB-D 位旋转 (d3 | d13) 解码为毫米截断在 10 m d cv2.imread(str(next((scene / depth_bfx).glob(*.png))), cv2.IMREAD_ANYDEPTH) d (((d 3) | (d 13)) / 1000.0).clip(max10).astype(np.float32) # 位旋转毫米 - 米即对原始编码值d执行(d 3) | (d 13)还原出毫米单位深度再除以 1000 得到米值并裁剪上限为 10 m对应深度量程约 10 m的数据集特性。第 4 步切分并写出。用一个确定性随机子集划分验证集random.Random(0).sample(names, k1090)——以种子 0 从全部场景名中固定抽取 1,090 个场景作为val其余 9,245 个为train。这意味着 train/val 的划分是可复现的任何人重复运行都会得到同一划分。随后调用save_depth_png()把米值数组写成毫米 uint16 PNG并把image/目录下的 RGB jpg 移入images/{split}/全部完成后删除source/目录。save_depth_png()的实现位于 ultralytics/data/utils.py其核心规则输入必须是 2 维数组scale默认 1000模块级常量DEPTH_PNG_SCALE无效像素非有限值或 ≤ 0编码为0有效像素取max(rint(depth * scale), 1)保证最小有效深度编码为 1若缩放后超过 uint16 上限即超过约 65.535 m直接抛出ValueError防止静默溢出。与之配套的load_depth()同文件 L84-L100负责反向解析PNG 分支严格校验图像格式为PNG且模式为I/I;16即 2 维 uint16数值除以scale得到米值NPY 分支则要求 2 维浮点数组且单位直接是米并把NaN/Inf归一化为 0即无效。这套写入—读取的对称设计解释了文档中内置转换以毫米写出、默认depth_scale: 1000生效的表述SUN RGB-D 的 YAML 无需声明depth_scale因为转换端与加载端都锚定在 1000 这一默认值上。加载器行为DepthDataset 如何配对、校验与缩放训练时深度样本由 ultralytics/data/dataset.py 中的DepthDataset类处理几个关键行为值得开发者了解路径映射_depth_path_forL451-L459从图像路径尾部向前找到images目录组件并替换为depth文件扩展名优先尝试.png不存在时回退.npy缓存指纹get_cache_hashL471-L477哈希覆盖图像路径、深度路径以及depth_scale值因此修改depth_scale会自动使旧缓存失效扫描校验首次加载会对每对图像—深度文件执行verify_image_depth校验缺失或损坏的样本分别计数并在缓存扫描后以警告形式丢弃扫描摘要形如nf images, nm missing depth, nc corrupt尺寸对齐get_image_and_labelL514-L522深度图以原分辨率加载后若与图像缩放后的形状不一致用cv2.resize(..., INTER_NEAREST)缩放到目标尺寸——INTER_NEAREST保留了深度的像素级取值避免插值制造出不存在的深度值数据增强约束build_transformsL524-L539深度任务强制关闭mosaic、mixup、cutmix 和 copy-paste 增强这些增强会把多幅图像的深度语义拼在一起验证阶段则使用scale_fill的 LetterBox 直接拉伸而非填充。以上行为均可在 ultralytics/data/dataset.py 中逐行核对也解释了为什么文档强调深度文件名必须与图像同名同干名、深度图可以较小但宽高比要一致。训练实战Python 与 CLI在 SUN RGB-D 上训练 YOLO26n-depth 模型图像尺寸 640的标准用法如下完整参数列表见 训练文档。Pythonfrom ultralytics import YOLO # 加载预训练深度模型训练推荐 model YOLO(yolo26n-depth.pt) # 在 SUN RGB-D 上训练 results model.train(datadepth-sunrgbd.yaml, epochs100, imgsz640)CLI# 从预训练 *.pt 模型开始训练 yolo depth train datadepth-sunrgbd.yaml modelyolo26n-depth.pt epochs100 imgsz640首次运行时框架会执行 YAML 中的下载脚本拉取 6.5 GB 归档、逐场景解码位旋转深度图并写出约 14 GB 的转换后数据随后进入正常的训练循环。如果希望先验证整条管线再跑全量数据可以用同源的 Depth8 数据集ultralytics/cfg/datasets/depth8.yaml它是从 SUN RGB-D 的 Kinect v1/v2 采集中抽出的 8 张图像4 train / 4 val1.3 MB 压缩包秒级下载、无需转换步骤格式与 SUN RGB-D 完全一致——在 Depth8 上能跑通的管线可原样迁移到全量数据集。验证阶段的指标采用标准深度估计指标集delta1 / delta2 / delta3预测与真值比值落在 1.25×、1.25²×、1.25³× 阈值内的像素百分比越高越好、abs_rel平均绝对相对误差、rmse米为单位的均方根误差、silog尺度不变对数误差后三者越低越好。在 YOLO26-Depth 预训练体系中的定位SUN RGB-D 在 YOLO26-Depth 的数据体系中扮演的是训练源角色它与 ARKitScenes、DIODE、Hypersim、TartanAir、Virtual KITTI 2、KITTI 及伪标签 ImageNet 等共同组成约 219 万图像—深度对的预训练混合集覆盖从室内≤10 m到室外约 80 m的深度范围。各数据集的专门介绍见 深度数据集总览。文档同时说明SUN RGB-D 本身不是评测基准。YOLO26 深度模型族最终在五个标准基准上评估——NYU Depth V2室内主基准、KITTI Eigen室外驾驶、ETH3D高精度室内室外、Make3D室外、分布外与 iBims-1高质量室内各模型在这些基准上的精度与可下载权重见 Depth Estimation 任务页。YOLO26 深度系列模型例如 YOLO26x-depth会从最新的 Ultralytics release 自动下载。引用与致谢若在研究或开发中使用了 SUN RGB-D 数据集请引用下列论文inproceedings{song2015sunrgbd, title{SUN RGB-D: A RGB-D Scene Understanding Benchmark Suite}, author{Song, Shuran and Lichtenberg, Samuel P. and Xiao, Jianxiong}, booktitle{Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition (CVPR)}, year{2015} }SUN RGB-D 是计算机视觉领域维护多年的重要资源其多传感器室内深度数据为单目深度估计研究提供了不可替代的真实世界基准。小结SUN RGB-D 在 Ultralytics 中以9,245 训练 1,090 验证的确定性划分提供真实多传感器室内深度深度量程约 10 m数据集以标准images/depth/并行目录组织深度为 uint16 毫米 PNG默认depth_scale: 10000表示无效depth-sunrgbd.yaml 的下载脚本自动完成 6.5 GB 归档的下载、depth_bfx位旋转解码(d3)|(d13)裁剪 10 m与种子 0 的验证集切分转换结果约 14 GBDepthDataset负责按文件干名配对、缓存校验、INTER_NEAREST对齐缩放并强制关闭 mosaic/mixup 等与深度语义冲突的增强训练入口即yolo depth train datadepth-sunrgbd.yaml modelyolo26n-depth.pt epochs100 imgsz640管线调试可先用 1.3 MB 的 Depth8 数据集快速验证。【免费下载链接】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),仅供参考
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门