SUN RGB-D Derinlik Veri Kümesi#
SUN RGB-D, dört farklı RGB-D sensörüyle (Intel RealSense, Asus Xtion ve Microsoft Kinect v1 ve v2) çekilmiş gerçek dünya iç mekan sahne anlama kıyaslama testidir. Çok sensörlü tasarımı, monocular depth estimation için gerçek iç mekan derinlik çeşitliliğinin değerli bir kaynağı olmasını sağlar.
Temel Özellikler#
- Gerçek çoklu sensör çeşitliliği sağlayan dört farklı RGB-D sensörü (Intel RealSense, Asus Xtion, Microsoft Kinect v1 ve v2) ile çekilmiştir.
- Sahne anlama araştırmaları için geniş bir gerçek iç mekan sahnesi yelpazesini kapsar.
- Tüketici tipi iç mekan RGB-D çekimleri için tipik olan, yaklaşık 10 metreye kadar derinlik aralığı.
- RGB çerçeveleriyle hizalanmış sensör kaynaklı derinlik temel gerçeği.
- Ultralytics derinlik ön eğitim karışımına gerçek çoklu sensör iç mekan çeşitliliği sağlar.
Veri Kümesi Yapısı#
SUN RGB-D derinlik veri kümesi iki alt kümeye ayrılmıştır:
- Eğitim (Train): Eğitim için eşleştirilmiş derinlik haritalarına sahip 9.245 görüntü.
- Doğrulama (Val): Model eğitimi sırasında doğrulama için eşleştirilmiş derinlik haritalarına sahip 1.090 görüntü.
Her örnek, bir RGB görüntü ve metre cinsinden piksel başına mesafeleri depolayan eşleştirilmiş bir .npy float32 derinlik haritasından oluşur; bu, Ultralytics depth dataset format standardını takip eder.
YOLO26-Depth'teki Rolü#
SUN RGB-D, yaklaşık 2,19 milyon görüntü-derinlik çiftinden oluşan Ultralytics YOLO26-Depth çoklu veri kümesi ön eğitim karışımında bir eğitim kaynağıdır. Modelin farklı tüketici RGB-D cihazlarında çekilen derinlik verilerine maruz kalmasını sağlayarak gerçek çoklu sensör iç mekan çeşitliliğine katkıda bulunur. Elde edilen modeller standart NYU, KITTI, Make3D, ETH3D ve iBims-1 kıyaslamalarında değerlendirilir.
Veri Kümesi YAML#
Veri kümesi yapılandırmasını tanımlamak için bir YAML (Yet Another Markup Language) dosyası kullanılır. Veri kümesinin yolları, sınıfları ve diğer ilgili bilgiler hakkında veriler içerir.
# 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")Kullanım#
SUN RGB-D veri kümesinde 640 görüntü boyutuyla bir YOLO26n-depth modeli eğitmek için aşağıdaki kod parçacıklarını kullanabilirsin. Mevcut argümanların kapsamlı bir listesi için model Training sayfasına göz at.
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)Önceden Eğitilmiş Modeller#
YOLO26 depth ailesi, SUN RGB-D'nin de dahil olduğu geniş çoklu veri kümesi derinlik ön eğitim karışımı üzerinde eğitilir. Bu modeller, en son Ultralytics sürümünden (örneğin v8.4.0 sürümündeki YOLO26x-depth) otomatik olarak indirilir ve farklı doğruluk ile kaynak gereksinimleri için çeşitli boyutları kapsar.
Alıntılar ve Teşekkür#
SUN RGB-D veri kümesini araştırma veya geliştirme çalışmalarında kullanırsan, lütfen aşağıdaki makaleye atıfta bulun:
@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}
}Bilgisayarlı görü topluluğu için bu değerli kaynağı yarattıkları ve korudukları için yazarlara teşekkür ederiz.