Ultralytics YOLO27:
No license

Dataset Depth SUN RGB-D#

SUN RGB-D là benchmark tìm hiểu cảnh trong nhà trong thế giới thực, được ghi lại bằng bốn cảm biến RGB-D khác nhau: Intel RealSense, Asus Xtion và Microsoft Kinect v1, v2. Thiết kế đa cảm biến khiến dataset này trở thành nguồn đa dạng depth thực tế trong nhà có giá trị cho ước lượng depth đơn ảnh.

Khám phá SUN RGB-D trên Ultralytics Platform để xem trước các cặp RGB-depth, kiểm tra thống kê dataset và sao chép dataset để huấn luyện.

Tính năng chính#

  • Được ghi lại bằng bốn cảm biến RGB-D khác nhau (Intel RealSense, Asus Xtion, Microsoft Kinect v1 và v2), cung cấp sự đa dạng thực tế từ nhiều cảm biến.
  • Bao quát nhiều cảnh trong nhà thực tế phục vụ nghiên cứu tìm hiểu cảnh.
  • Phạm vi độ sâu lên đến khoảng 10 m, mức điển hình của thiết bị ghi hình RGB-D trong nhà dành cho người dùng phổ thông.
  • Ground truth depth thu thập từ cảm biến, được căn chỉnh với các frame RGB.
  • Đóng góp sự đa dạng trong nhà thực tế từ nhiều cảm biến vào tập dữ liệu trộn pretraining depth của Ultralytics.

Cấu trúc dataset#

Dataset depth SUN RGB-D được chia thành hai tập con:

  1. Train: 9.245 ảnh cùng các depth map tương ứng để huấn luyện.
  2. Val: 1.090 ảnh cùng các depth map tương ứng để validation trong quá trình huấn luyện model.

Mỗi sample gồm một ảnh RGB và một PNG depth uint16 đã scale tương ứng, theo định dạng dataset depth của Ultralytics. YAML của dataset tải archive nguồn (~6.5 GB) và tự động chuyển đổi trong lần sử dụng đầu tiên, ghi giá trị theo millimeter, nên depth_scale: 1000 mặc định được áp dụng.

Vai trò trong YOLO26-Depth#

SUN RGB-D là nguồn huấn luyện trong tập dữ liệu trộn pretraining đa dataset YOLO26-Depth của Ultralytics, gồm khoảng 2.19M cặp ảnh–depth. Dataset này đóng góp sự đa dạng trong nhà thực tế từ nhiều cảm biến, giúp model tiếp xúc với depth được ghi lại bằng nhiều thiết bị RGB-D tiêu dùng khác nhau. Các model thu được được đánh giá trên những benchmark tiêu chuẩn NYU, KITTI, Make3D, ETH3D và iBims-1.

YAML của dataset#

Tệp YAML được dùng để xác định cấu hình dataset. Tệp này chứa thông tin về đường dẫn, class và các thông tin liên quan khác của dataset.

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")

Cách sử dụng#

Để huấn luyện model YOLO26n-depth trên dataset SUN RGB-D với kích thước ảnh 640, bạn có thể sử dụng các đoạn code sau. Để xem danh sách đầy đủ các tham số hiện có, hãy tham khảo trang Huấn luyện model.

Ví dụ huấn luyện
from ultralytics import YOLO

# Tải model
model = YOLO("yolo26n-depth.pt")  # tải model độ sâu đã pretrained (được khuyến nghị khi huấn luyện)

# Huấn luyện model
results = model.train(data="depth-sunrgbd.yaml", epochs=100, imgsz=640)

Model được tiền huấn luyện#

Họ model depth YOLO26 được huấn luyện trên tập dữ liệu trộn pretraining depth đa dataset rộng, trong đó có SUN RGB-D. Các model này tự động tải xuống trong lần sử dụng đầu tiên từ bản phát hành assets v8.4.0 của Ultralytics, chẳng hạn như YOLO26x-depth, và có nhiều kích cỡ để đáp ứng các yêu cầu khác nhau về độ chính xác và tài nguyên.

Trích dẫn và lời cảm ơn#

Nếu sử dụng dataset SUN RGB-D trong nghiên cứu hoặc phát triển, vui lòng trích dẫn bài báo sau:

Trích dẫn
@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}
}

Chúng tôi xin ghi nhận công lao của các tác giả trong việc tạo và duy trì tài nguyên quý giá này cho cộng đồng thị giác máy tính.

Câu hỏi thường gặp#

  • SUN RGB-D là benchmark tìm hiểu cảnh trong nhà trong thế giới thực, được ghi lại bằng bốn cảm biến RGB-D: Intel RealSense, Asus Xtion và Microsoft Kinect v1, v2. Cấu hình Ultralytics cung cấp 9.245 cặp ảnh-depth huấn luyện và 1.090 cặp validation, với độ sâu tối đa khoảng 10 m.

  • Mỗi ảnh RGB được ghép với một PNG uint16 tính bằng millimeter, nên depth_scale: 1000 mặc định được áp dụng theo định dạng dataset depth của Ultralytics. Dataset kiểm thử Depth8 nhỏ gọn được lấy mẫu từ SUN RGB-D và sử dụng cùng định dạng.

  • Chạy yolo depth train data=depth-sunrgbd.yaml model=yolo26n-depth.pt epochs=100 imgsz=640 hoặc sử dụng ví dụ Python trong phần Cách sử dụng. Bạn cũng có thể duyệt và sao chép dataset trên Ultralytics Platform.

Người đóng góp

Bình luận