Ultralytics YOLO27:

TartanAir Depth Dataset#

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

TartanAir는 시뮬레이션으로 렌더링되므로 이처럼 다양한 장면 전반에 걸쳐 조밀한 깊이 ground truth를 제공합니다. 따라서 단안 depth estimation 모델을 학습하기 위한 환경 다양성과 장거리 기하 정보를 제공하는 강력한 데이터 소스입니다.

주요 기능#

  • AirSim 시뮬레이터에서 생성된 합성 데이터입니다.
  • 계절, 날씨, 조명 변화와 까다로운 조건을 포함하는 다양한 실내 및 실외 환경(도심, 자연)입니다.
  • 모든 장면에 걸친 조밀한 깊이 ground truth입니다.
  • 깊이 범위는 ~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에는 공식 val 분할이 없으므로 하나 이상의 환경을 별도로 분리하여 사용합니다. 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, traj = depth_file.parts[-5], depth_file.parts[-3]
    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}_{traj}_{frame}"
    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 모델의 사전 학습에 사용되는 광범위한 다중 데이터셋 혼합 데이터(~219만 개 이미지)의 학습 소스 중 하나입니다. 이 혼합 데이터에서 TartanAir는 실내 및 실제 환경 데이터 소스를 보완하는 합성 환경 다양성과 장거리 실외 기하 정보를 제공합니다.

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

데이터셋 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

# Load a model
model = YOLO("yolo26n-depth.pt")  # load a pretrained model (recommended for training)

# Train the model
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 제작자분들께 감사드립니다.

FAQ#

  • TartanAir는 시각적 SLAM을 한계까지 테스트하기 위해 원래 제작된 AirSim 시뮬레이터에서 렌더링된 대규모 합성 데이터셋입니다. 다양한 계절, 날씨, 조명 조건 속에서 실내, 실외, 도시 및 자연 환경을 아우르며, YOLO26-Depth 학습 믹스에 최대 약 80m의 밀집된 깊이 정보를 담은 61,470개의 이미지(학습용 55,660개, 검증용 5,810개)를 기여합니다.

  • tartanair_tools 스크립트로 RGB 및 깊이 데이터를 가져온 다음, depth_scale: 256를 사용하여 미터 단위의 float32 .npy 깊이를 uint16 PNG로 변환하고 80m를 초과하는 하늘 픽셀은 0에 맞춰 클리핑합니다. 데이터 획득에 표시된 대로 검증을 위해 하나 이상의 환경을 따로 남겨둡니다.

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

댓글