Ultralytics YOLO27:
Get Started

ARKitScenes 깊이 데이터셋#

ARKitScenes은 LiDAR 스캐너를 탑재한 iPad Pro 기기에서 Apple의 ARKit으로 촬영한 대규모 실제 실내 RGB-D 데이터셋입니다. 동종 데이터셋 중 가장 규모가 큰 실제 실내 RGB-D 데이터셋으로, 단안 깊이 추정을 위한 다양하고 자연스럽게 촬영된 실내 장면과 정확한 깊이 정답 데이터를 제공합니다.

주요 기능#

  • iPad Pro의 Apple ARKit LiDAR 스캐너와 RGB 카메라로 촬영하여 실제 센서 데이터(합성 데이터가 아님)를 생성합니다.
  • 3D 실내 장면 이해를 위한 다양한 실내 장면을 다룹니다.
  • 휴대용 실내 캡처에서 일반적으로 나타나는 짧은 깊이 범위로, 약 0.5~6 m이며 중앙값 기준 최대 깊이는 약 2.4 m입니다.
  • RGB 프레임에 정렬된 LiDAR 기반의 조밀한 깊이 GT입니다.
  • Ultralytics 깊이 사전 학습 데이터 혼합에서 실제 환경 데이터를 가장 많이 제공하는 단일 데이터 소스입니다.

데이터셋 구조#

ARKitScenes 깊이 데이터셋은 다음 두 개의 하위 집합으로 나뉩니다.

  1. Train: 학습용으로 깊이 맵이 쌍을 이루는 이미지 676,080개입니다.
  2. Val: 모델 학습 중 검증에 사용할 깊이 맵이 쌍을 이루는 이미지 21,559개입니다.

각 샘플은 RGB 이미지 1개와 이에 대응하는 밀리미터 단위의 uint16 깊이 PNG 1개(depth_scale: 1000)로 구성되며, Ultralytics 깊이 데이터셋 형식을 따릅니다. 이 수치는 공개된 모델에 사용된 하위 집합으로, Training 동영상 4,520개 중 4,347개와 Validation 동영상 551개 중 102개로 구성됩니다. 전체 분할 데이터를 변환하면 쌍의 수가 더 많아집니다.

데이터 가져오기#

ARKitScenes는 자동 다운로드를 지원하지 않습니다. 데이터는 Apple에서 배포하며, 다운로드하려면 ARKitScenes 저장소에서 라이선스 약관에 동의해야 합니다. 저장소를 복제한 후 raw 하위 집합의 lowres_wide(RGB) 및 lowres_depth 에셋을 다운로드하세요. 이 하위 집합은 Training 동영상 4,520개와 Validation 동영상 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는 약 219만 개의 이미지-깊이 쌍으로 구성된 Ultralytics YOLO26-Depth 멀티 데이터셋 사전 학습 혼합의 학습 데이터 소스입니다. 이 혼합에서 실제 데이터를 가장 많이 제공하는 단일 소스로서, 실내 근거리 정확도를 뒷받침하는 풍부한 실제 환경의 실내 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

사용법#

ARKitScenes 데이터셋으로 이미지 크기 640의 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는 약 219만 개 이미지로 구성된 YOLO26-Depth 사전 학습 혼합 중 실제 환경 데이터를 가장 많이 제공하는 단일 소스이며, Apple iPad Pro 기기의 LiDAR 스캐너로 캡처한 학습 이미지 676,080개와 검증 이미지 21,559개를 제공합니다. 조밀한 실내 깊이 데이터는 공개된 모델의 근거리 정확도를 뒷받침하며, 모델은 이후 NYU Depth V2, KITTI, ETH3D, Make3D 및 iBims-1에서 평가됩니다.

  • ARKitScenes는 자동 다운로드를 지원하지 않습니다. ARKitScenes 저장소에서 라이선스 약관에 동의하고, 공식 download_data.py 스크립트를 사용해 raw 하위 집합의 lowres_wide 및 lowres_depth 에셋을 다운로드하세요. 그런 다음 RGB 프레임 30개마다 하나씩 유지하고, 데이터 가져오기의 변환 스크립트를 사용해 타임스탬프가 가장 가까운 깊이 프레임과 짝지으세요. 결과는 uint16 밀리미터 PNG를 사용하는 표준 Ultralytics 깊이 데이터셋 레이아웃을 따릅니다.

  • ARKitScenes는 깊이가 약 0.5~6 m이고 중앙값 기준 최대 깊이가 약 2.4 m인 휴대용 실내 데이터셋이므로, 학습 혼합에서 KITTI 및 TartanAir와 같은 장거리 데이터 소스를 보완합니다.

댓글