TartanAir深度データセット#
TartanAirは、AirSimシミュレーターで生成された大規模な合成データセットです。ビジュアルSLAMの限界を押し広げるために作成され、屋内、屋外、都市、自然のシーンなど、多様な環境を網羅しています。さらに、季節、天候、照明の変化や、困難な条件も含まれます。
TartanAirはシミュレーションでレンダリングされるため、多様なシーン全体にわたる密な深度グラウンドトゥルースを提供します。そのため、単眼の深度推定モデルのトレーニングにおいて、環境の多様性と長距離の幾何情報をもたらす有力なデータソースです。
主な機能#
- AirSimシミュレーターで生成された合成データです。
- 季節、天候、照明の変化や困難な条件を含む、多様な屋内および屋外環境(都市、自然)を収録しています。
- すべてのシーンで密な深度グラウンドトゥルースを提供します。
- 深度範囲は~80 mです。
- Ultralyticsの深度トレーニングデータに61,470枚の画像(Train 55,660枚/Val 5,810枚)を提供します。
データセットの構成#
TartanAir深度データセットは、次の2つのサブセットに分かれています。
- Train:トレーニング用の密な深度マップ付き画像55,660枚。
- Val:トレーニング中の検証用に、密な深度マップがペアになった画像5,810枚。
各RGB画像には、1メートルあたり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分割がありません。1つ以上の環境を検証用に確保してください。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枚の画像からなる幅広い複数データセットの組み合わせに含まれるトレーニングソースの1つです。この組み合わせにおいて、TartanAirは合成環境の多様性と長距離の屋外幾何情報を提供し、屋内および実環境のデータソースを補完します。
この設定には、TartanAir単独のホールドアウトベンチマークはありません。代わりに、学習後のモデルは、標準的な単眼深度ベンチマークであるNYU Depth V2、KITTI、Make3D、ETH3D、iBims-1で評価されます。
データセットYAML#
データセット設定の定義にはYAMLファイルを使用します。このファイルには、データセットのパス、クラスなどの関連情報が含まれます。TartanAirでは、depth-tartanair.yamlファイルでパスと単一のdepthクラスを定義します。
# 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はAirSimシミュレーターでレンダリングされた大規模な合成データセットで、もともとはビジュアルSLAMの負荷テスト向けに作られました。季節、天候、照明がさまざまに異なる屋内、屋外、都市、自然環境を網羅しています。また、YOLO26-Depthのトレーニングデータに、深度が約80 mまでの密なデータを含む画像61,470枚(Train 55,660枚、Val 5,810枚)を提供します。
TartanAirには自動ダウンロード機能がありません。tartanair_toolsスクリプトでRGBデータと深度データを取得し、メートル単位のfloat32
.npy深度データをdepth_scale: 256でuint16 PNGに変換してから、80 mを超える空のピクセルを0にクリップしてください。データの取得に示すように、1つ以上の環境を検証用に確保してください。