Ultralytics YOLO27:

ARKitScenes 깊이 데이터셋#

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

주요 기능#

  • iPad Pro에서 Apple의 ARKit LiDAR 스캐너와 RGB 카메라로 캡처하여 실제(합성되지 않은) 센서 데이터를 생성합니다.
  • 3D 실내 장면 이해를 위해 다양한 실내 장면을 포함합니다.
  • 깊이 범위가 짧으며, 약 0.5~6m(최대 깊이 중앙값 약 2.4m)로 휴대용 실내 캡처의 일반적인 특성을 보입니다.
  • RGB 프레임에 정렬된 밀집 LiDAR 파생 깊이 정답을 제공합니다.
  • Ultralytics 깊이 사전 학습 혼합 데이터에서 단일 데이터셋 기준으로 가장 큰 실제 데이터 소스입니다.

데이터셋 구조#

ARKitScenes 깊이 데이터셋은 두 개의 하위 집합으로 분할됩니다.

  1. Train: 학습을 위한 깊이 맵이 쌍으로 제공되는 이미지 676,080개입니다.
  2. Val: 모델 학습 중 검증을 위한 깊이 맵이 쌍으로 제공되는 이미지 21,559개입니다.

각 샘플은 하나의 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장의 검증 이미지를 제공합니다. ARKitScenes의 조밀한 실내 깊이는 출시된 모델의 단거리 정확도를 뒷받침하며, 모델은 NYU Depth V2, KITTI, ETH3D, Make3D, iBims-1에서 평가됩니다.

  • ARKitScenes는 자동 다운로드를 지원하지 않습니다. ARKitScenes repository에서 라이선스 약관에 동의하고, 공식 download_data.py 스크립트로 깊이 업샘플링 서브세트를 다운로드한 후, Obtain the Data의 변환 스크립트를 사용하여 각 깊이 프레임을 가장 가까운 타임스탬프의 RGB 프레임과 페어링합니다. 결과물은 uint16 밀리미터 PNG를 포함하는 표준 Ultralytics depth layout을 따릅니다.

  • ARKitScenes는 대략 0.5~6m의 깊이와 중앙값 기준 약 2.4m의 최대 깊이를 갖는 핸드헬드 실내 데이터셋이므로, 훈련 믹스에서 KITTITartanAir와 같은 장거리 소스를 보완합니다.

댓글