Ultralytics YOLO27:
Get Started

ARKitScenes 深度数据集#

ARKitScenes 是一个大规模真实室内 RGB-D 数据集,使用配备 LiDAR 扫描仪的 iPad Pro 设备,通过 Apple 的 ARKit 采集。它是同类数据集中规模最大的真实室内 RGB-D 数据集,提供多样且自然采集的室内场景,并包含准确的深度真值,可用于单目深度估计。

主要功能#

  • 使用 iPad Pro 上 Apple ARKit 的 LiDAR 扫描仪和 RGB 摄像头采集,生成真实(非合成)的传感器数据。
  • 涵盖多样的室内场景,适用于 3D 室内场景理解。
  • 深度范围较短,约为 0.5–6 m(最大深度中位数约为 2.4 m),这是手持室内采集的典型特征。
  • 与 RGB 帧对齐的 LiDAR 衍生稠密深度真值。
  • 这是 Ultralytics 深度预训练混合数据中规模最大的真实场景数据源。

数据集结构#

ARKitScenes 深度数据集分为两个子集:

  1. 训练集:676,080 张图像及其配对深度图,用于训练。
  2. 验证集:21,559 张图像及其配对深度图,用于模型训练期间的验证。

每个样本包含一张 RGB 图像和一张配对的 uint16 深度 PNG,单位为毫米(depth_scale: 1000),遵循 Ultralytics 深度数据集格式。这些数量是已发布模型所用的子集,取自 4,520 个训练视频中的 4,347 个,以及 551 个验证视频中的 102 个;转换完整数据划分后会得到更多图像对。

获取数据#

ARKitScenes 不支持自动下载——数据由 Apple 分发,下载前需要在 ARKitScenes 仓库中接受许可条款。克隆该仓库,并下载 raw 子集中的 lowres_wide(RGB)和 lowres_depth 资源;该子集涵盖完整的 4,520 个训练视频和 551 个验证视频。必须提供视频列表;传入划分 CSV 且不带 --split,即可在一次调用中获取两个数据折:

git clone https://github.com/apple/ARKitScenes && cd ARKitScenes
python3 download_data.py raw --video_id_csv raw/raw_train_val_splits.csv \
  --raw_dataset_assets lowres_wide lowres_depth --download_dir ./data

帧会保存到 data/raw/{Training,Validation}/<video_id>/{lowres_wide,lowres_depth}/。请预留约 2.5 TB 磁盘空间:原始视频流约为 ~60 FPS,而下方的转换过程会保留每第 30 帧(~2 Hz)。

深度帧是 uint16 PNG,单位为毫米(0 = 无效);RGB 和深度文件名使用采集时间戳,二者并不完全匹配——请为每个 RGB 帧配对时间戳最近的深度帧。以下是转换为 Ultralytics 深度数据集格式的参考方法:

import shutil
from bisect import bisect_left
from pathlib import Path

src, dst = Path("data/raw"), Path("datasets/depth-arkitscenes")
for split, out in (("Training", "train"), ("Validation", "val")):
    (dst / f"images/{out}").mkdir(parents=True, exist_ok=True)
    (dst / f"depth/{out}").mkdir(parents=True, exist_ok=True)
    for video in sorted((src / split).iterdir()):
        depths = sorted((video / "lowres_depth").glob("*.png"), key=lambda p: float(p.stem.split("_")[-1]))
        if not depths:
            continue
        times = [float(p.stem.split("_")[-1]) for p in depths]
        rgbs = sorted((video / "lowres_wide").glob("*.png"), key=lambda p: float(p.stem.split("_")[-1]))
        for rgb in rgbs[30::30]:  # every 30th frame of the ~60 FPS capture (~2 Hz)
            t = float(rgb.stem.split("_")[-1])
            i = min(bisect_left(times, t), len(times) - 1)
            if i and t - times[i - 1] < times[i] - t:
                i -= 1  # nearest-timestamp depth frame
            name = f"{out}_{video.name}_{depths[i].stem}"
            shutil.copy2(rgb, dst / f"images/{out}/{name}.png")
            shutil.copy2(depths[i], dst / f"depth/{out}/{name}.png")

在 YOLO26-Depth 中的作用#

ARKitScenes 是 Ultralytics YOLO26-Depth 多数据集预训练混合数据中的一个训练数据源,该混合数据约包含 2.19M 个图像-深度图像对。作为其中规模最大的真实数据源,它提供了大量真实室内 LiDAR 深度数据,为模型的短距离室内精度奠定基础。最终模型会在 NYU、KITTI、Make3D、ETH3D 和 iBims-1 标准基准上进行评估。

数据集 YAML#

数据集配置使用 YAML 文件定义,其中包含数据集路径、类别及其他相关信息。

ultralytics/cfg/datasets/depth-arkitscenes.yaml
# Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license

# ARKitScenes dataset for monocular depth estimation — real indoor RGB-D from Apple ARKit (iPad Pro LiDAR), depth ~0.5-6 m
# Documentation: https://docs.ultralytics.com/datasets/depth/arkitscenes
# Example usage: yolo depth train data=depth-arkitscenes.yaml model=yolo26n-depth.pt
# No autodownload — obtain the source data (see docs) and arrange it as below.
# parent
# ├── ultralytics
# └── datasets
#     └── depth-arkitscenes
#         ├── images/{train,val}  # RGB images
#         └── depth/{train,val}   # paired 16-bit *.png depth maps (images/ -> depth/)

path: depth-arkitscenes # dataset root dir (relative to Ultralytics settings 'datasets_dir')
train: images/train # train images (relative to 'path') 676080 images
val: images/val # val images (relative to 'path') 21559 images

nc: 1
names:
  0: depth

channels: 3

用法#

要使用图像尺寸 640 在 ARKitScenes 数据集上训练 YOLO26n-depth 模型,可以使用以下代码示例。可在模型的训练页面查看所有可用参数。

训练示例
from ultralytics import YOLO

# 加载模型
model = YOLO("yolo26n-depth.pt")  # 加载预训练深度模型(推荐用于训练)

# 训练模型
results = model.train(data="depth-arkitscenes.yaml", epochs=100, imgsz=640)

预训练模型#

YOLO26 深度模型系列基于广泛的多数据集深度预训练混合数据进行训练,ARKitScenes 也是其中的一部分。这些模型首次使用时会从 Ultralytics v8.4.0 资源发布版本自动下载,例如 YOLO26x-depth,并提供多种尺寸,以满足不同的精度和资源需求。

引用与致谢#

如果你在研究或开发工作中使用 ARKitScenes 数据集,请引用以下论文:

引用格式
@inproceedings{baruch2021arkitscenes,
      title={ARKitScenes: A Diverse Real-World Dataset for 3D Indoor Scene Understanding Using Mobile RGB-D Data},
      author={Baruch, Gilad and Chen, Zhuoyuan and Dehghan, Afshin and Dimry, Tal and Feigin, Yuri and Fu, Peter and Gebauer, Thomas and Joffe, Brandon and Kurz, Daniel and Schwartz, Arik and Shulman, Elad},
      booktitle={Thirty-fifth Conference on Neural Information Processing Systems Datasets and Benchmarks Track},
      year={2021}
}

我们感谢作者为计算机视觉社区创建并维护这一宝贵资源。

常见问题#

  • ARKitScenes 是约 2.19M 张图像的 YOLO26-Depth 预训练混合数据中规模最大的真实场景数据源,包含 676,080 张训练图像和 21,559 张验证图像,均由 Apple iPad Pro 设备的 LiDAR 扫描仪采集。其稠密室内深度数据为已发布模型的短距离精度奠定基础;这些模型随后会在 NYU Depth V2、KITTI、ETH3D、Make3D 和 iBims-1 上进行评估。

  • ARKitScenes 不支持自动下载。在 ARKitScenes 仓库中接受许可条款,使用官方 download_data.py 脚本下载 raw 子集的 lowres_wide 和 lowres_depth 资源,然后保留每第 30 个 RGB 帧,并使用获取数据中的转换脚本为每个 RGB 帧配对时间戳最近的深度帧。生成的数据遵循标准的 Ultralytics 深度数据集布局,深度图为 uint16 毫米 PNG。

  • ARKitScenes 是一个手持室内数据集,深度约为 0.5 至 6 m,最大深度中位数约为 2.4 m,因此它能与训练混合数据中 KITTI 和 TartanAir 等距离更远的数据源形成互补。

评论