Ultralytics YOLO27:

ARKitScenes深度データセット#

ARKitScenesは、LiDARスキャナーを搭載したiPad Proデバイス上のAppleのARKitで取得された、大規模な実世界屋内RGB-Dデータセットです。これは、その種では最大の実世界屋内RGB-Dデータセットであり、多様で自然に取得された屋内シーンと、単眼深度推定用の正確な深度グラウンドトゥルースを提供します。

主な特徴#

  • AppleのARKitを搭載したiPad ProのLiDARスキャナーとRGBカメラで取得され、実際の(合成ではない)センサーデータを生成します。
  • 3D屋内シーン理解向けに、多様な屋内シーンを収録しています。
  • 深度範囲は約0.5~6 mと短く(最大深度の中央値は約2.4 m)、ハンドヘルドによる屋内撮影に典型的です。
  • RGBフレームに位置合わせされた、LiDAR由来の高密度な深度グラウンドトゥルースを備えています。
  • Ultralyticsの深度事前学習ミックスにおける、単一の実世界データソースとしては最大のデータセットです。

データセットの構成#

ARKitScenes深度データセットは、次の2つのサブセットに分割されています。

  1. Train: 学習用の深度マップとペアになった676,080枚の画像。
  2. Val: モデル学習中の検証用の深度マップとペアになった21,559枚の画像。

各サンプルは、1枚のRGB画像と、それに対応するミリメートル単位のuint16深度PNG(depth_scale: 1000)で構成され、Ultralytics深度データセット形式に従います。

データの取得#

ARKitScenesには自動ダウンロード機能がありません。データはAppleによって配布されており、ダウンロードするにはARKitScenesリポジトリでライセンス条項に同意する必要があります。リポジトリをクローンし、RGBフレームと登録済み深度をペアにしたdepth-upsamplingサブセットをダウンロードしてください。

git clone https://github.com/apple/ARKitScenes && cd ARKitScenes
python3 download_data.py upsampling --split Training --download_dir ./data
python3 download_data.py upsampling --split Validation --download_dir ./data

深度フレームはミリメートル単位のuint16 PNG(0 = 無効)であり、RGBと深度のファイル名はキャプチャ時刻を示しますが、完全には一致しません。各深度フレームを、タイムスタンプが最も近いRGBフレームとペアにしてください。Ultralytics深度データセット形式への変換例:

import shutil
from pathlib import Path

import cv2

src, dst = Path("data/upsampling"), 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()):
        rgbs = {float(p.stem.split("_")[-1]): p for p in (video / "lowres_wide").glob("*.png")}
        if not rgbs:
            continue
        for depth_png in sorted((video / "lowres_depth").glob("*.png")):
            t = float(depth_png.stem.split("_")[-1])
            rgb = rgbs[min(rgbs, key=lambda k: abs(k - t))]  # nearest-timestamp RGB frame
            name = f"{video.name}_{depth_png.stem}"
            shutil.copy2(depth_png, dst / f"depth/{out}/{name}.png")
            cv2.imwrite(str(dst / f"images/{out}/{name}.png"), cv2.imread(str(rgb)))

YOLO26-Depthにおける役割#

ARKitScenesは、約219万組の画像–深度ペアで構成されるUltralytics YOLO26-Depthのマルチデータセット事前学習ミックスにおける学習ソースです。このミックスで単一の実世界ソースとして最大であるARKitScenesは、モデルの短距離屋内精度の基盤となる、豊富な実世界の屋内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

# Load a model
model = YOLO("yolo26n-depth.pt")  # load a pretrained depth model (recommended for training)

# Train the model
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}
}

コンピュータビジョンコミュニティにこの貴重なリソースを作成し、維持してくださった著者の皆様に謝意を表します。

FAQ#

  • ARKitScenesは、約219万枚の画像からなるYOLO26-Depthの事前学習ミックスにおいて最大の現実世界データソースであり、AppleのiPad ProデバイスのLiDARスキャナーで撮影された676,080枚の学習用画像と21,559枚の検証用画像を提供しています。その高密度な屋内深度は公開モデルの近距離精度を支えており、モデルはその後NYU Depth V2KITTIETH3DMake3D、およびiBims-1で評価されます。

  • ARKitScenesの自動ダウンロードはありません。ARKitScenes repositoryでライセンス条項に同意し、公式の download_data.py スクリプトを使用して深度アップサンプリングのサブセットをダウンロードし、Obtain the Dataの変換スクリプトを使用して各深度フレームを最もタイムスタンプが近いRGBフレームとペアリングします。結果として得られるデータは、uint16ミリメートルのPNGを使用した標準のUltralytics depth layoutに従います。

  • ARKitScenesは約0.5〜6mの深度を持つ手持ち型の屋内データセットであり、中央値の最大深度は約2.4mです。そのため、学習ミックスにおいてKITTITartanAirなどの長距離ソースを補完します。

コメント