엔터프라이즈급 보안: ISO 27001 및 SOC 2 Type I 준수.

Link to this sectionARKitScenes Depth Dataset#

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

Link to this section주요 특징#

  • iPad Pro에서 Apple ARKit의 LiDAR 스캐너와 RGB 카메라로 캡처되어 실제(비합성) 센서 데이터를 생성합니다.
  • 3D 실내 장면 이해를 위한 다양한 실내 장면을 포함합니다.
  • 근거리 깊이 범위(약 0.5~6m, 중앙값 최대 깊이 약 2.4m)로, 일반적인 휴대용 실내 캡처의 특징을 가집니다.
  • RGB 프레임에 정렬된 고밀도 LiDAR 기반 깊이 정답을 제공합니다.
  • Ultralytics 깊이 사전 학습 구성 데이터셋 중 단일 실세계 소스로는 가장 큽니다.

Link to this section데이터셋 구조#

ARKitScenes 깊이 데이터셋은 두 개의 서브셋으로 나뉩니다:

  1. Train: 학습을 위한 깊이 맵이 포함된 676,080개의 이미지.
  2. Val: 모델 학습 중 검증을 위한 깊이 맵이 포함된 21,559개의 이미지.

Each sample consists of one RGB image and one paired .npy float32 depth map storing per-pixel distances in meters, following the Ultralytics depth dataset format.

Link to this section데이터 획득#

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

깊이 프레임은 밀리미터(0 = 유효하지 않음) 단위의 uint16 PNG이며, RGB/깊이 파일 이름은 정확히 일치하지 않는 캡처 타임스탬프를 사용하므로 각 깊이 프레임을 가장 가까운 타임스탬프의 RGB 프레임과 쌍으로 연결해야 합니다. Ultralytics 깊이 데이터셋 형식으로 변환하는 방법을 참조하십시오:

from pathlib import Path

import cv2
import numpy as np

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}"
            depth = cv2.imread(str(depth_png), cv2.IMREAD_UNCHANGED).astype(np.float32) / 1000.0  # mm → m
            np.save(dst / f"depth/{out}/{name}.npy", depth)
            cv2.imwrite(str(dst / f"images/{out}/{name}.png"), cv2.imread(str(rgb)))

Link to this sectionYOLO26-Depth에서의 역할#

ARKitScenes는 약 219만 개의 이미지-깊이 쌍으로 구성된 Ultralytics YOLO26-Depth 다중 데이터셋 사전 학습 조합의 학습 소스입니다. 이 조합에서 가장 큰 단일 실세계 소스로서, 모델의 근거리 실내 정확도를 뒷받침하는 풍부한 실세계 실내 LiDAR 깊이 데이터를 제공합니다. 결과 모델은 표준 NYU, KITTI, Make3D, ETH3D 및 iBims-1 벤치마크에서 평가됩니다.

Link to this section데이터셋 YAML#

YAML(Yet Another Markup Language) 파일은 데이터셋 구성을 정의하는 데 사용됩니다. 여기에는 데이터셋의 경로, 클래스 및 기타 관련 정보가 포함됩니다.

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 *.npy, float32 meters (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

Link to this section사용법#

640 이미지 크기로 ARKitScenes 데이터셋에서 YOLO26n-depth 모델을 학습하려면 다음 코드 스니펫을 사용할 수 있습니다. 사용 가능한 인수에 대한 전체 목록은 모델 학습(Training) 페이지를 참조하십시오.

훈련 예제
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)

Link to this section사전 학습된 모델#

YOLO26 깊이 제품군은 ARKitScenes가 포함된 광범위한 다중 데이터셋 깊이 사전 학습 조합으로 학습됩니다. 이러한 모델은 최신 Ultralytics 릴리스(예: v8.4.0의 YOLO26x-depth)에서 자동으로 다운로드되며, 다양한 정확도 및 리소스 요구 사항에 따라 여러 크기로 제공됩니다.

Link to this section인용 및 감사의 글#

연구 또는 개발 작업에 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}
}

컴퓨터 비전 커뮤니티를 위한 이 귀중한 자원을 만들고 유지 관리해 준 저자들에게 감사를 표합니다.

기여자

댓글