Link to this sectionSUN RGB-D Tiefendatensatz#
SUN RGB-D ist ein Benchmark für die Szenenerkennung in Innenräumen aus der realen Welt, der mit vier verschiedenen RGB-D-Sensoren aufgenommen wurde: Intel RealSense, Asus Xtion sowie Microsoft Kinect v1 und v2. Sein Multi-Sensor-Design macht ihn zu einer wertvollen Quelle für echte Vielfalt bei Indoor-Tiefendaten für die monokulare Tiefenschätzung.
Link to this sectionHauptfunktionen#
- Aufgenommen mit vier verschiedenen RGB-D-Sensoren (Intel RealSense, Asus Xtion, Microsoft Kinect v1 und v2), was für echte Multi-Sensor-Vielfalt sorgt.
- Deckt ein breites Spektrum echter Innenraum-Szenen für die Forschung zur Szenenerkennung ab.
- Tiefenbereich bis zu ca. 10 m, typisch für handelsübliche RGB-D-Innenaufnahmen.
- Vom Sensor abgeleitete Tiefen-Ground-Truth, die auf die RGB-Frames ausgerichtet ist.
- Trägt echte Multi-Sensor-Indoor-Vielfalt zum Tiefen-Pretraining-Mix von Ultralytics bei.
Link to this sectionDatensatzstruktur#
Der SUN RGB-D Tiefendatensatz ist in zwei Teilmengen unterteilt:
- Train: 9.245 Bilder mit gepaarten Tiefenkarten für das Training.
- Val: 1.090 Bilder mit gepaarten Tiefenkarten für die Validierung während des Modelltrainings.
Jedes Sample besteht aus einem RGB-Bild und einer gepaarten .npy float32-Tiefenkarte, die Abstände pro Pixel in Metern speichert, gemäß dem Ultralytics-Tiefendatensatzformat.
Link to this sectionRolle bei YOLO26-Depth#
SUN RGB-D ist eine Trainings-Quelle im Ultralytics YOLO26-Depth Multi-Datensatz-Pretraining-Mix aus rund 2,19 Mio. Bild-Tiefen-Paaren. Er trägt zur echten Multi-Sensor-Indoor-Vielfalt bei und setzt das Modell Tiefendaten aus, die mit verschiedenen RGB-D-Verbrauchergeräten aufgenommen wurden. Die resultierenden Modelle werden an den Standard-Benchmarks NYU, KITTI, Make3D, ETH3D und iBims-1 evaluiert.
Link to this sectionDatensatz-YAML#
Eine YAML-Datei (Yet Another Markup Language) wird verwendet, um die Datensatzkonfiguration zu definieren. Sie enthält Informationen über die Pfade des Datensatzes, Klassen und andere relevante Informationen.
# Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license
# SUN RGB-D dataset for monocular depth estimation — real indoor, multi-sensor RGB-D (RealSense/Xtion/Kinect), up to ~10 m
# Documentation: https://docs.ultralytics.com/datasets/depth/sunrgbd
# Example usage: yolo depth train data=depth-sunrgbd.yaml model=yolo26n-depth.pt
# parent
# ├── ultralytics
# └── datasets
# └── depth-sunrgbd ← downloads here (6.5 GB archive, ~14 GB converted)
# ├── images/{train,val} # RGB images
# └── depth/{train,val} # paired *.npy, float32 meters (images/ -> depth/)
# If an interrupted download leaves a partial dataset, delete the depth-sunrgbd dir and re-run to rebuild it.
path: depth-sunrgbd # dataset root dir (relative to Ultralytics settings 'datasets_dir')
train: images/train # train images (relative to 'path') 9245 images
val: images/val # val images (relative to 'path') 1090 images
nc: 1
names:
0: depth
channels: 3
# Download script/URL (optional)
download: |
import random
import shutil
from pathlib import Path
import cv2
import numpy as np
from ultralytics.utils import TQDM
from ultralytics.utils.downloads import download
# Download and extract the official archive (~6.5 GB), then convert each of the 10335 scenes:
# refined depth_bfx PNGs decode via the SUN RGB-D bit-rotation (d>>3 | d<<13) to millimeters,
# clipped at 10 m; a deterministic random 1090-scene subset (seed 0) forms the val split
dir = Path(yaml["path"]) # dataset root dir
download(["https://rgbd.cs.princeton.edu/data/SUNRGBD.zip"], dir=dir / "source", delete=True, exist_ok=True)
for split in ("train", "val"):
(dir / "images" / split).mkdir(parents=True, exist_ok=True)
(dir / "depth" / split).mkdir(parents=True, exist_ok=True)
scenes = sorted(p.parent for p in (dir / "source" / "SUNRGBD").rglob("depth_bfx"))
names = ["_".join(s.relative_to(dir / "source" / "SUNRGBD").parts) for s in scenes]
val = set(random.Random(0).sample(names, k=1090))
for scene, name in TQDM(zip(scenes, names), total=len(scenes), desc="Converting"):
split = "val" if name in val else "train"
d = cv2.imread(str(next((scene / "depth_bfx").glob("*.png"))), cv2.IMREAD_ANYDEPTH)
d = (((d >> 3) | (d << 13)) / 1000.0).clip(max=10).astype(np.float32) # bit-rotated mm -> m
np.save(dir / "depth" / split / f"{name}.npy", d)
next((scene / "image").glob("*.jpg")).replace(dir / "images" / split / f"{name}.jpg")
shutil.rmtree(dir / "source")Link to this sectionVerwendung#
Um ein YOLO26n-depth-Modell mit dem SUN RGB-D Datensatz bei einer Bildgröße von 640 zu trainieren, kannst du die folgenden Code-Schnipsel verwenden. Eine umfassende Liste der verfügbaren Argumente findest du auf der Seite Training für Modelle.
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-sunrgbd.yaml", epochs=100, imgsz=640)Link to this sectionVortrainierte Modelle#
Die YOLO26-Depth-Familie wird auf dem breiten Multi-Datensatz-Tiefen-Pretraining-Mix trainiert, zu dem auch SUN RGB-D gehört. Diese Modelle werden automatisch von der neuesten Ultralytics-Version heruntergeladen, zum Beispiel YOLO26x-depth von v8.4.0, und decken eine Reihe von Größen für unterschiedliche Anforderungen an Genauigkeit und Ressourcen ab.
Link to this sectionZitate und Danksagungen#
Wenn du das SUN RGB-D-Dataset in deiner Forschung oder Entwicklungsarbeit verwendest, zitiere bitte das folgende Paper:
@inproceedings{song2015sunrgbd,
title={SUN RGB-D: A RGB-D Scene Understanding Benchmark Suite},
author={Song, Shuran and Lichtenberg, Samuel P. and Xiao, Jianxiong},
booktitle={Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition (CVPR)},
year={2015}
}Wir möchten den Autoren für die Erstellung und Pflege dieser wertvollen Ressource für die Computer-Vision-Community danken.