Ultralytics YOLO27:
Get Started

TartanAir 깊이 데이터셋#

TartanAir는 AirSim 시뮬레이터에서 생성된 대규모 합성 데이터셋입니다. 시각 SLAM의 한계를 확장하기 위해 제작되었으며, 실내·실외·도시·자연 장면을 비롯한 다양한 환경과 계절, 날씨, 조명 변화 및 까다로운 조건을 아우릅니다.

TartanAir는 시뮬레이션으로 렌더링되므로 다양한 장면에 걸쳐 조밀한 깊이 정답 데이터를 제공합니다. 따라서 단안 깊이 추정 모델 학습에 환경의 다양성과 원거리 기하 정보를 제공하는 데 적합합니다.

주요 기능#

  • AirSim 시뮬레이터에서 생성된 합성 데이터입니다.
  • 계절, 날씨, 조명 변화와 까다로운 조건을 포함하는 다양한 실내 및 실외 환경(도시, 자연)입니다.
  • 모든 장면에 걸친 조밀한 깊이 정답 데이터입니다.
  • 깊이 범위는 ~80 m입니다.
  • Ultralytics 깊이 학습 데이터 구성에 이미지 61,470개(학습 55,660개 / 검증 5,810개)를 제공합니다.

데이터셋 구조#

TartanAir 깊이 데이터셋은 다음 두 가지 하위 집합으로 나뉩니다.

  1. Train: 학습을 위한 조밀한 깊이 맵 쌍이 포함된 이미지 55,660개입니다.
  2. Val: 학습 중 검증을 위한 조밀한 깊이 맵 쌍이 포함된 이미지 5,810개입니다.

각 RGB 이미지는 미터당 256 단위로 스케일 조정된 uint16 깊이 PNG(depth_scale: 256)와 쌍을 이루며, Ultralytics 깊이 데이터셋 형식을 따릅니다. 이는 3.90625 mm 해상도로 전체 80 m 범위를 표현합니다.

데이터 가져오기#

TartanAir는 자동 다운로드를 지원하지 않습니다. 데이터는 CMU의 AirLab에서 배포하며(이용 약관은 데이터셋 페이지 참조), tartanair_tools 스크립트로 다운로드합니다.

git clone https://github.com/castacks/tartanair_tools && cd tartanair_tools
python download_training.py --output-dir ./data --rgb --depth --only-left --unzip

깊이는 이미 미터 단위의 float32 .npy으로 저장되어 있으며(image_left/*_left.png 옆의 depth_left/*_left_depth.npy), 변환 과정은 순서를 재배치하고 하늘 영역을 무효화하는 것뿐입니다(하늘은 매우 먼 거리로 렌더링되며, 배포된 데이터 구성은 데이터셋 YAML에 맞춰 80 m에서 잘라냅니다). TartanAir에는 공식 검증 분할이 없으므로 하나 이상의 환경을 검증용으로 제외하세요. Ultralytics 깊이 데이터셋 형식으로 변환하는 참조 예제입니다.

import shutil
from pathlib import Path

import numpy as np

from ultralytics.data.utils import save_depth_png

VAL_ENVS = {"neighborhood"}  # environments held out for validation
src, dst = Path("data"), Path("datasets/depth-tartanair")
for depth_file in sorted(src.rglob("depth_left/*_left_depth.npy")):
    env, level, traj = depth_file.parts[-5:-2]  # e.g. neighborhood, Easy, P000
    out = "val" if env.lower() in VAL_ENVS else "train"
    (dst / f"images/{out}").mkdir(parents=True, exist_ok=True)
    (dst / f"depth/{out}").mkdir(parents=True, exist_ok=True)
    depth = np.load(depth_file)
    depth[depth > 80.0] = 0.0  # sky/extreme range → 0 = invalid
    frame = depth_file.name.replace("_depth.npy", "")  # e.g. 000000_left
    name = f"{env}_{level}_{traj}_{frame}"  # Easy and Hard reuse trajectory names such as P000
    save_depth_png(dst / f"depth/{out}/{name}.png", depth, scale=256)
    shutil.copy(depth_file.parents[1] / "image_left" / f"{frame}.png", dst / f"images/{out}/{name}.png")

YOLO26-Depth에서의 역할#

TartanAir는 Ultralytics YOLO26-Depth 모델을 사전 학습하는 데 사용되는 약 2.19M개 이미지 규모의 폭넓은 다중 데이터셋 혼합 구성에 포함된 학습 소스 중 하나입니다. 이 구성에서 TartanAir는 합성 환경의 다양성과 원거리 실외 기하 정보를 제공하여 실내 및 실제 환경 소스를 보완합니다.

이 구성에는 별도의 TartanAir 홀드아웃 벤치마크가 없습니다. 대신 생성된 모델은 표준 단안 깊이 벤치마크인 NYU Depth V2, KITTI, Make3D, ETH3D 및 iBims-1에서 평가됩니다.

데이터셋 YAML#

데이터셋 구성을 정의하는 데 YAML 파일을 사용합니다. YAML 파일에는 데이터셋 경로와 클래스, 기타 관련 정보가 포함됩니다. TartanAir의 경우 depth-tartanair.yaml 파일에서 경로와 단일 depth 클래스를 정의합니다.

ultralytics/cfg/datasets/depth-tartanair.yaml
# Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license

# TartanAir dataset for monocular depth estimation — synthetic indoor + outdoor (AirSim), dense depth up to ~80 m
# Documentation: https://docs.ultralytics.com/datasets/depth/tartanair
# Example usage: yolo depth train data=depth-tartanair.yaml model=yolo26n-depth.pt
# No autodownload — obtain the source data (see docs) and arrange it as below.
# parent
# ├── ultralytics
# └── datasets
#     └── depth-tartanair
#         ├── images/{train,val}  # RGB images
#         └── depth/{train,val}   # paired 16-bit *.png depth maps (images/ -> depth/)

path: depth-tartanair # dataset root dir (relative to Ultralytics settings 'datasets_dir')
train: images/train # train images (relative to 'path') 55660 images
val: images/val # val images (relative to 'path') 5810 images
max_depth: 80 # (m) maximum valid depth; GT beyond this is excluded from val metrics

nc: 1
names:
  0: depth

channels: 3
depth_scale: 256 # PNG value 256 = 1 meter; represents the 80 m outdoor range

사용법#

이미지 크기 640으로 TartanAir 데이터셋에서 YOLO26n-Depth 모델을 학습하려면 다음 코드 예제를 사용할 수 있습니다. 사용 가능한 인수의 전체 목록은 모델 Training 페이지를 참조하세요.

학습 예제
from ultralytics import YOLO

# 모델 로드
model = YOLO("yolo26n-depth.pt")  # 사전 학습된 모델을 불러옵니다(학습에 권장).

# 모델 학습
results = model.train(data="depth-tartanair.yaml", epochs=100, imgsz=640)

사전 학습 모델#

YOLO26 깊이 모델 제품군(yolo26n-depth.pt, yolo26s-depth.pt, yolo26m-depth.pt, yolo26l-depth.pt, yolo26x-depth.pt)은 Ultralytics 릴리스에서 자동으로 다운로드되며, TartanAir가 포함된 폭넓은 다중 데이터셋 혼합 구성으로 학습됩니다. Ultralytics Platform에서 YOLO26x-depth를 살펴보세요.

인용 및 감사의 글#

연구 또는 개발 작업에 TartanAir 데이터셋을 사용하는 경우 다음 논문을 인용해 주세요.

인용
@inproceedings{wang2020tartanair,
      title={TartanAir: A Dataset to Push the Limits of Visual SLAM},
      author={Wenshan Wang and Delong Zhu and Xiangwei Wang and Yaoyu Hu and Yuheng Qiu and Chen Wang and Yafei Hu and Ashish Kapoor and Sebastian Scherer},
      booktitle={IEEE/RSJ International Conference on Intelligent Robots and Systems (IROS)},
      year={2020}
}

컴퓨터 비전 커뮤니티에서 이처럼 다양한 합성 데이터셋을 이용할 수 있도록 제공한 TartanAir 제작자들에게 감사드립니다.

자주 묻는 질문#

  • TartanAir는 시각 SLAM을 위한 극한 조건 테스트를 목적으로 AirSim 시뮬레이터에서 렌더링한 대규모 합성 데이터셋입니다. 다양한 계절, 날씨, 조명 조건의 실내·실외·도시·자연 환경을 포함하며, YOLO26-Depth 학습 데이터 구성에 깊이 범위 약 80 m의 조밀한 깊이 정보가 포함된 이미지 61,470개(학습 55,660개, 검증 5,810개)를 제공합니다.

  • TartanAir는 자동 다운로드를 지원하지 않습니다. tartanair_tools 스크립트로 RGB 및 깊이 데이터를 가져온 다음, 미터 단위 float32 .npy 깊이를 depth_scale: 256를 사용해 uint16 PNG로 변환하고, 80 m를 초과하는 하늘 픽셀은 0으로 잘라내세요. Obtain the Data에 나온 것처럼 하나 이상의 환경을 검증용으로 제외하세요.

  • yolo depth train data=depth-tartanair.yaml model=yolo26n-depth.pt epochs=100 imgsz=640을 실행하거나 Usage 섹션의 Python 예제를 사용하세요. 사용 가능한 인수는 모두 Training 페이지에 나와 있습니다.

댓글