Ultralytics YOLO27:
No license

Bộ dữ liệu độ sâu SUN RGB-D#

SUN RGB-D là một benchmark hiểu cảnh trong nhà thực tế, được thu thập 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 này khiến bộ dữ liệu trở thành nguồn dữ liệu có giá trị về tính đa dạng độ sâu trong môi trường trong nhà thực tế cho ước tính độ sâu đơn ảnh.

Khám phá SUN RGB-D trên Ultralytics Platform để xem trước các cặp RGB-độ sâu, kiểm tra thống kê bộ dữ liệu và clone bộ dữ liệu để training.

Tính năng chính#

  • Được thu thập 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 tính đa dạng đa cảm biến thực tế.
  • Bao quát nhiều cảnh trong nhà thực tế để phục vụ nghiên cứu hiểu cảnh.
  • Phạm vi độ sâu lên đến khoảng 10 m, phù hợp với hoạt động thu thập dữ liệu RGB-D trong nhà bằng thiết bị tiêu dùng.
  • Ground truth độ sâu do cảm biến tạo ra, được căn chỉnh với các khung hình RGB.
  • Bổ sung tính đa dạng trong nhà thực tế từ nhiều cảm biến vào tập pretraining độ sâu của Ultralytics.

Cấu trúc bộ dữ liệu#

Bộ dữ liệu độ sâu SUN RGB-D được chia thành hai tập con:

  1. Train: 9.245 ảnh kèm depth map tương ứng để training.
  2. Val: 1.090 ảnh kèm depth map tương ứng để validation trong quá trình training model.

Mỗi sample gồm một ảnh RGB và một depth PNG uint16 đã scale tương ứng, tuân theo định dạng bộ dữ liệu độ sâu của Ultralytics. Công cụ chuyển đổi tích hợp ghi dữ liệu theo đơn vị millimeter, vì vậy mặc định depth_scale: 1000 được áp dụng.

Vai trò trong YOLO26-Depth#

SUN RGB-D là nguồn training trong tập pretraining đa bộ dữ liệu YOLO26-Depth của Ultralytics, gồm khoảng 2,19 triệu cặp ảnh–độ sâu. Bộ dữ liệu bổ sung tính đa dạng trong nhà thực tế từ nhiều cảm biến, giúp model tiếp cận dữ liệu độ sâu được thu thập bằng nhiều thiết bị RGB-D dành cho người 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 bộ dữ liệu#

Tệp YAML được sử dụng để định nghĩa cấu hình tập dữ liệu. Tệp chứa thông tin về các đường dẫn, lớp và các thông tin liên quan khác của tập dữ liệu.

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#

Để training model YOLO26n-depth trên bộ dữ liệu 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 argument hiện có, hãy tham khảo trang Training của model.

Ví dụ huấn luyện
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)

Các model đã tiền huấn luyện#

Dòng model độ sâu YOLO26 được training trên tập pretraining độ sâu đa bộ dữ liệu quy mô rộng, trong đó có SUN RGB-D. Các model này được tự động download từ bản phát hành Ultralytics mới nhất, chẳng hạn YOLO26x-depth từ v8.4.0, và có nhiều kích thước khác nhau để đá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à ghi nhận đóng góp#

Nếu bạn sử dụng bộ dữ liệu SUN RGB-D trong công trình nghiên cứu hoặc phát triển của mình, 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ác tác giả đã tạo và duy trì tài nguyên có giá trị này cho cộng đồng computer vision.

FAQ#

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

  • Mỗi ảnh RGB được ghép nối với một tệp PNG uint16 tính bằng milimét, do đó depth_scale: 1000 mặc định được áp dụng, tuân theo định dạng tập dữ liệu độ sâu Ultralytics. Tập dữ liệu kiểm tra 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à nhân bản tập dữ liệu trên Nền tảng Ultralytics.

Những người đóng góp

Bình luận