깊이 추정 데이터셋 개요#
단안 깊이 추정은 이미지의 모든 픽셀에 미터 단위의 부동소수점 깊이 값을 할당합니다. 학습 타겟은 .npy float32 배열로 저장되는 촘촘한 픽셀별 깊이 맵입니다. 각 값은 카메라에서 해당 장면의 포인트까지의 거리를 나타냅니다.
이 가이드는 Ultralytics YOLO 깊이 추정 모델에서 사용하는 데이터셋 형식을 설명하고 학습 및 검증에 사용할 수 있는 내장 데이터셋 구성을 나열합니다.
지원되는 데이터셋 형식#
NPY 깊이 맵 형식#
각 학습 샘플은 하나의 RGB 이미지와 한 쌍을 이루는 하나의 .npy 깊이 파일로 구성됩니다. 깊이 파일은 값이 미터 단위의 깊이인 2D float32 NumPy 배열을 (H, W) 형태로 저장합니다.
- 깊이 파일은
.npy확장자를 사용해야 하며 float32 배열을 포함해야 합니다. - 각 깊이 파일은 일치하는 이미지 파일과 동일한 스템을 가져야 합니다 (예:
scene_001.npy은scene_001.jpg과 쌍을 이룹니다). - 데이터셋 로더는 파일 경로에서
images디렉토리 구성 요소를depth로 교체하고 이미지 확장자를.npy로 교체하여 깊이 파일을 찾습니다. - 깊이가
≤ 0인 픽셀은 유효하지 않은 것으로 처리되며 손실 및 메트릭 계산에서 제외됩니다.
표준 레이아웃은 이미지와 깊이 맵을 병렬 폴더에 유지합니다:
dataset/
├── images/
│ ├── train/
│ └── val/
└── depth/
├── train/
└── val/예를 들어, images/train/scene_001.jpg의 이미지는 depth/train/scene_001.npy의 깊이 맵과 쌍을 이룹니다.
데이터셋 YAML 형식#
깊이 추정 데이터셋은 YAML 파일로 구성됩니다. 주요 필드는 다음과 같습니다:
| 키 | 설명 |
|---|---|
path | 데이터셋 루트 디렉토리입니다. |
train | path에 상대적인 학습 이미지 경로 또는 절대 경로입니다. |
val | path에 상대적인 검증 이미지 경로 또는 절대 경로입니다. |
test | 선택적인 테스트 이미지 경로입니다. |
nc | 클래스 수 — 깊이 추정의 경우 항상 1입니다. |
names | 클래스 이름 매핑 — 항상 {0: depth}입니다. |
# Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license
# NYU Depth V2 dataset for monocular depth estimation
# Documentation: https://cs.nyu.edu/~silberman/datasets/nyu_depth_v2.html
# 795 train + 654 val (Eigen test split) images, 480x640, indoor scenes, depth in meters
# Example usage: yolo depth train data=nyu-depth.yaml model=yolo26n-depth.pt
# parent
# ├── ultralytics
# └── datasets
# └── nyu-depth ← downloads here (≈1.5 GB)
# Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
path: nyu-depth # dataset root dir (relative to Ultralytics settings 'datasets_dir')
train: images/train # train images (relative to 'path') 795 images
val: images/val # val images (relative to 'path') 654 images
# Depth maps are paired .npy files (float32, meters) under depth/<split>/, resolved by
# swapping '/images/' -> '/depth/' on each image path.
# Classes
nc: 1
names:
0: depth
channels: 3
# Download script/URL (optional)
download: https://github.com/ultralytics/assets/releases/download/v0.0.0/nyu-depth.zip사용법#
Python 또는 CLI를 사용하여 YOLO26 깊이 추정 모델을 학습합니다:
from ultralytics import YOLO
# Load a pretrained depth model
model = YOLO("yolo26n-depth.pt")
# Train on the NYU Depth V2 dataset
results = model.train(data="nyu-depth.yaml", epochs=100, imgsz=640)지원되는 데이터셋#
YOLO26 깊이 모델은 실내(≤10m)에서 실외(~80m) 범위에 걸친 광범위한 다중 데이터셋 혼합(~219만 개 이미지)으로 사전 학습된 후 5개 벤치마크에서 제로샷 방식으로 평가됩니다. 각 데이터셋에는 전용 페이지가 있습니다:
디버깅
- Depth8 — 빠른 파이프라인 테스트를 위해 1.3 MB 자동 다운로드 아카이브에 포함된 8개의 SUN RGB-D 이미지
사전 학습 소스
- ARKitScenes — 실제 실내, Apple ARKit LiDAR (가장 큰 실제 소스)
- SUN RGB-D — 실제 실내, 다중 센서 RGB-D
- DIODE — 실제 실내 + 실외, 조밀한 레이저 스캐너 정답(Ground Truth)
- Hypersim — 합성 포토리얼리스틱 실내
- TartanAir — 합성, 다양한 환경
- Virtual KITTI 2 — 합성 실외 주행
- KITTI — 실제 실외 주행, Velodyne LiDAR (평가 벤치마크이기도 함)
- ImageNet (pseudo-labeled) — 의사 라벨링된 증류 세트, 가장 큰 단일 소스
평가 벤치마크
- NYU Depth V2 — 주요 실내 벤치마크
- KITTI Eigen — 실외 주행 벤치마크
- ETH3D — 고정밀 실내 + 실외
- Make3D — 실외, 분포 외(out-of-distribution)
- iBims-1 — 고품질 실내 (가장자리 및 평면 표면)
이러한 벤치마크에서의 모델별 정확도와 다운로드 가능한 사전 학습된 가중치는 Depth Estimation task page에 나열되어 있습니다. train 필드에 여러 이미지 디렉토리가 나열된 데이터셋 YAML은 대규모 혼합 학습을 위해 이러한 소스들을 결합합니다.
자체 데이터셋 추가#
images/train및images/val과 같은 분할 폴더 아래에 RGB 이미지를 저장하세요.- 이미지와 동일한 파일 이름을 사용하여 일치하는
depth/train및depth/val폴더 아래에 이미지당 하나의.npyfloat32 깊이 배열을 저장합니다. - 깊이 값이 미터 단위인지 확인하고, 유효하지 않거나 누락된 픽셀에는
0또는 음수 값을 사용하세요. path,train,val,nc: 1,names: {0: depth}를 포함하는 데이터셋 YAML을 생성하세요.
path: path/to/my-depth-dataset
train: images/train
val: images/val
nc: 1
names:
0: depthFAQ#
깊이 맵은 shape가
(H, W)인 float32 배열을 포함하는 NumPy.npy파일로 저장해야 합니다. 각 원소는 해당 이미지 픽셀의 깊이를 미터 단위로 저장합니다. PNG나 16비트 정수 형식을 사용하지 마세요. 로더는 원시 float 배열을 예상합니다.깊이 값이
≤ 0인 픽셀은 유효하지 않은 것으로 처리되며 손실 계산과 메트릭 평가 모두에서 마스킹됩니다. 이는 센서 노이즈, 하늘 영역, 그리고 깊이를 안정적으로 측정할 수 없는 반사 표면을 다룹니다.깊이 추정 검증은 표준 Depth Anything 메트릭 세트를 보고합니다:
- delta1 / delta2 / delta3 — 1.25×, 1.25²×, 1.25³× 임계값 이내의 픽셀 비율. 높을수록 좋습니다.
- abs_rel — 평균 절대 상대 오차입니다. 낮을수록 좋습니다.
- rmse — 미터(m) 단위의 평균 제곱근 오차입니다. 낮을수록 좋습니다.
- silog — 척도 불변 로그 오차입니다. 낮을수록 좋습니다.
네. 각 깊이
.npy파일은 해당 이미지와 동일한 스템을 공유해야 합니다. 로더는images디렉토리 구성 요소를depth로 교체하고 이미지 확장자를.npy으로 대체하여 깊이 경로를 파생합니다. 깊이 파일이 누락되었거나 읽을 수 없는 이미지는 손상된 이미지와 정확히 마찬가지로 (캐시된) 데이터셋 스캔 중에 경고와 함께 제외되며, 유효한 이미지-깊이 쌍이 전혀 발견되지 않으면 오류가 발생합니다.