Ultralytics YOLO27:
No license

Dataset di profondità SUN RGB-D#

SUN RGB-D è un benchmark per la comprensione di scene indoor reali, acquisito con quattro diversi sensori RGB-D: Intel RealSense, Asus Xtion e Microsoft Kinect v1 e v2. La progettazione multisensore lo rende una preziosa fonte di varietà di profondità indoor reali per la stima monoculare della profondità.

Esplora SUN RGB-D su Ultralytics Platform per visualizzare in anteprima le coppie RGB-depth, esaminare le statistiche del dataset e clonarlo per l'addestramento.

Funzionalità principali#

  • Acquisito con quattro diversi sensori RGB-D (Intel RealSense, Asus Xtion, Microsoft Kinect v1 e v2), offre una reale varietà multisensore.
  • Include un'ampia varietà di scene reali indoor per la ricerca sulla comprensione delle scene.
  • Portata della profondità fino a circa 10 m, tipica dell'acquisizione RGB-D indoor consumer.
  • Ground truth della profondità ricavata dai sensori e allineata ai frame RGB.
  • Aggiunge varietà indoor reale acquisita con più sensori al mix di pretraining della profondità di Ultralytics.

Struttura del dataset#

Il dataset di profondità SUN RGB-D è suddiviso in due sottoinsiemi:

  1. Train: 9.245 immagini con mappe di profondità abbinate per l'addestramento.
  2. Val: 1.090 immagini con mappe di profondità abbinate per la validazione durante l'addestramento del modello.

Ogni campione è composto da un'immagine RGB e da una PNG di profondità uint16 scalata abbinata, secondo il formato dei dataset di profondità Ultralytics. Il file YAML del dataset scarica l'archivio sorgente (~6.5 GB) e lo converte automaticamente al primo utilizzo, scrivendo i valori in millimetri, così si applica l'impostazione predefinita depth_scale: 1000.

Ruolo in YOLO26-Depth#

SUN RGB-D è una fonte di addestramento nel mix di pretraining multisettoriale di Ultralytics YOLO26-Depth, composto da circa 2.19M coppie immagine-profondità. Aggiunge varietà indoor reale acquisita con più sensori, esponendo il modello a profondità rilevate con diversi dispositivi RGB-D consumer. I modelli risultanti vengono valutati sui benchmark standard NYU, KITTI, Make3D, ETH3D e iBims-1.

YAML del dataset#

Per definire la configurazione del dataset si usa un file YAML. Contiene informazioni sui percorsi del dataset, sulle classi e su altri dettagli pertinenti.

ultralytics/cfg/datasets/depth-sunrgbd.yaml
# 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 16-bit *.png depth maps (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.data.utils import save_depth_png
  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
      save_depth_png(dir / "depth" / split / f"{name}.png", d)
      next((scene / "image").glob("*.jpg")).replace(dir / "images" / split / f"{name}.jpg")
  shutil.rmtree(dir / "source")

Utilizzo#

Per addestrare un modello YOLO26n-depth sul dataset SUN RGB-D con una dimensione dell'immagine di 640, puoi usare i seguenti frammenti di codice. Per un elenco completo degli argomenti disponibili, consulta la pagina Addestramento del modello.

Esempio di addestramento
from ultralytics import YOLO

# Carica un modello
model = YOLO("yolo26n-depth.pt")  # carica un modello di profondità preaddestrato (consigliato per l'addestramento)

# Addestra il modello
results = model.train(data="depth-sunrgbd.yaml", epochs=100, imgsz=640)

Modelli preaddestrati#

La famiglia YOLO26 depth viene addestrata sul vasto mix di pretraining della profondità composto da più dataset, di cui SUN RGB-D fa parte. Questi modelli vengono scaricati automaticamente al primo utilizzo dalla release di asset v8.4.0 di Ultralytics, ad esempio YOLO26x-depth, e sono disponibili in diverse dimensioni per soddisfare requisiti differenti di accuratezza e risorse.

Citazioni e ringraziamenti#

Se usi il dataset SUN RGB-D nel tuo lavoro di ricerca o sviluppo, cita il seguente articolo:

Citazione
@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}
}

Desideriamo ringraziare gli autori per aver creato e mantenuto questa preziosa risorsa per la comunità della computer vision.

Domande frequenti#

  • SUN RGB-D è un benchmark per la comprensione di scene indoor reali, acquisito con quattro sensori RGB-D: Intel RealSense, Asus Xtion e Microsoft Kinect v1 e v2. La configurazione Ultralytics include 9.245 coppie immagine-profondità per l'addestramento e 1.090 per la validazione, con profondità fino a circa 10 m.

  • Ogni immagine RGB è abbinata a una PNG uint16 con valori in millimetri, quindi si applica l'impostazione predefinita depth_scale: 1000, secondo il formato dei dataset di profondità Ultralytics. Il dataset di test compatto Depth8 è campionato da SUN RGB-D e usa lo stesso formato.

  • Esegui yolo depth train data=depth-sunrgbd.yaml model=yolo26n-depth.pt epochs=100 imgsz=640 oppure usa l'esempio Python nella sezione Utilizzo. Puoi anche consultare e clonare il dataset su Ultralytics Platform.

Commenti