Ultralytics YOLO27:

Bộ dữ liệu độ sâu Hypersim#

Hypersim là một bộ dữ liệu tổng hợp quang thực về các cảnh trong nhà, được thiết kế để phục vụ việc hiểu cảnh trong nhà một cách toàn diện. Các hình ảnh được dựng bằng phương pháp ray tracing từ những không gian nội thất 3D Evermotion do các chuyên gia tạo ra, tạo nên các bản render có độ chân thực cao đi kèm ground truth độ sâu dày đặc, hoàn hảo trên từng pixel.

Vì Hypersim hoàn toàn là dữ liệu tổng hợp, mỗi pixel đều có giá trị độ sâu chính xác mà không bị ảnh hưởng bởi nhiễu cảm biến, tín hiệu trả về bị thiếu hay các sai số đo lường. Điều này khiến bộ dữ liệu trở thành nguồn hình học trong nhà sạch và dày đặc tuyệt vời để huấn luyện các model ước lượng độ sâu đơn ảnh.

Tính năng chính#

  • Các cảnh trong nhà tổng hợp quang thực, được dựng bằng ray tracing từ những không gian nội thất 3D Evermotion chuyên nghiệp.
  • Chỉ bao gồm môi trường trong nhà.
  • Ground truth độ sâu trên từng pixel dày đặc, hoàn hảo, không có nhiễu cảm biến hoặc giá trị bị thiếu.
  • Phạm vi độ sâu chủ yếu ≤10 m (với một số khoảng cách lớn hơn).
  • Đóng góp 74,619 hình ảnh (68,242 train / 6,377 val) vào tập dữ liệu kết hợp huấn luyện độ sâu của Ultralytics.

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

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

  1. Train: 68,242 hình ảnh kèm các depth map dày đặc tương ứng để huấn luyện.
  2. Val: 6,377 hình ảnh kèm các depth map dày đặc tương ứng để validation trong quá trình huấn luyện.

Mỗi hình ảnh RGB được ghép cặp với một PNG độ sâu uint16 đã scale, tuân theo định dạng bộ dữ liệu độ sâu của Ultralytics.

Nhận dữ liệu#

Hypersim không hỗ trợ tự động tải xuống — bộ dữ liệu (~1.9 TB các file ZIP theo từng cảnh) được Apple phân phối theo giấy phép CC BY-SA 3.0 và được tải xuống bằng script chính thức từ repository ml-hypersim (có trình tải xuống chọn lọc trong contrib/99991):

git clone https://github.com/apple/ml-hypersim && cd ml-hypersim
python code/python/tools/dataset_download_images.py --downloads_dir ./downloads --decompress_dir ./scenes

Các frame RGB là các bản preview frame.*.tonemap.jpg và dữ liệu độ sâu nằm trong frame.*.depth_meters.hdf5. Các giá trị được lưu là khoảng cách theo tia đến tâm camera, không phải độ sâu phẳng — hãy chuyển đổi trước khi lưu và ánh xạ các pixel NaN (cửa sổ, bầu trời) thành 0 (không hợp lệ). Sử dụng scene split chính thức metadata_images_split_scene_v1.csv để phân chia train/val. Tham khảo cách chuyển đổi sang định dạng bộ dữ liệu độ sâu của Ultralytics:

import shutil
from pathlib import Path

import h5py
import numpy as np

from ultralytics.data.utils import save_depth_png

W, H, FOCAL = 1024, 768, 886.81  # Hypersim camera intrinsics
x, y = np.meshgrid(np.linspace(-W / 2, W / 2, W), np.linspace(-H / 2, H / 2, H))
ray2plane = (FOCAL / np.sqrt(x**2 + y**2 + FOCAL**2)).astype(np.float32)  # distance → planar depth

src, dst = Path("scenes"), Path("datasets/depth-hypersim")
out = "train"  # assign per scene from metadata_images_split_scene_v1.csv
(dst / f"images/{out}").mkdir(parents=True, exist_ok=True)
(dst / f"depth/{out}").mkdir(parents=True, exist_ok=True)
for h5 in sorted(src.rglob("*.depth_meters.hdf5")):
    scene, cam, frame = h5.parts[-4], h5.parent.name.split("_geometry")[0], h5.name.split(".")[1]
    rgb = h5.parents[1] / f"{cam}_final_preview" / f"frame.{frame}.tonemap.jpg"
    dist = np.asarray(h5py.File(h5)["dataset"], np.float32)
    depth = np.nan_to_num(dist * ray2plane, nan=0.0)  # NaN (sky, glass) → 0 = invalid
    name = f"{scene}_{cam}_{frame}"
    save_depth_png(dst / f"depth/{out}/{name}.png", depth)
    shutil.copy(rgb, dst / f"images/{out}/{name}.jpg")

Vai trò trong YOLO26-Depth#

Hypersim là một trong các nguồn huấn luyện trong tập dữ liệu kết hợp đa bộ dữ liệu quy mô lớn (~2.19M hình ảnh) được sử dụng để pretrain các model Ultralytics YOLO26-Depth. Trong tập kết hợp này, Hypersim cung cấp hình học trong nhà sạch và dày đặc, bổ trợ cho dữ liệu cảm biến thực tế nhiều nhiễu hơn.

Thiết lập này không có benchmark Hypersim độc lập với một tập kiểm tra giữ lại. Thay vào đó, các model tạo ra được đánh giá trên những benchmark độ sâu đơn ảnh tiêu chuẩn: NYU Depth V2, KITTI, Make3D, ETH3D và iBims-1.

YAML của bộ dữ liệu#

Một tệp YAML được sử dụng để định nghĩa cấu hình tập dữ liệu. Nó chứa thông tin về các đường dẫn của tập dữ liệu, các lớp và các thông tin liên quan khác. Đối với Hypersim, tệp depth-hypersim.yaml định nghĩa các đường dẫn và một lớp depth duy nhất.

ultralytics/cfg/datasets/depth-hypersim.yaml
# Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license

# Hypersim dataset for monocular depth estimation — photorealistic synthetic indoor (ray-traced), dense depth up to ~10 m
# Documentation: https://docs.ultralytics.com/datasets/depth/hypersim
# Example usage: yolo depth train data=depth-hypersim.yaml model=yolo26n-depth.pt
# No autodownload — obtain the source data (see docs) and arrange it as below.
# parent
# ├── ultralytics
# └── datasets
#     └── depth-hypersim
#         ├── images/{train,val}  # RGB images
#         └── depth/{train,val}   # paired 16-bit *.png depth maps (images/ -> depth/)

path: depth-hypersim # dataset root dir (relative to Ultralytics settings 'datasets_dir')
train: images/train # train images (relative to 'path') 68242 images
val: images/val # val images (relative to 'path') 6377 images

nc: 1
names:
  0: depth

channels: 3

Cách sử dụng#

Để huấn luyện model YOLO26n-Depth trên bộ dữ liệu Hypersim với kích thước hình ả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 model (recommended for training)

# Train the model
results = model.train(data="depth-hypersim.yaml", epochs=100, imgsz=640)

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

Họ model độ sâu YOLO26 (yolo26n-depth.pt, yolo26s-depth.pt, yolo26m-depth.pt, yolo26l-depth.pt, yolo26x-depth.pt) được tự động tải xuống từ các bản phát hành của Ultralytics và được huấn luyện trên tập kết hợp đa bộ dữ liệu quy mô lớn mà Hypersim là một phần trong đó. Khám phá YOLO26x-depth trên Ultralytics Platform.

Trích dẫn và ghi nhận đóng góp#

Nếu sử dụng bộ dữ liệu Hypersim trong nghiên cứu hoặc công việc phát triển, vui lòng trích dẫn bài báo sau:

Trích dẫn
@inproceedings{roberts2021hypersim,
      title={Hypersim: A Photorealistic Synthetic Dataset for Holistic Indoor Scene Understanding},
      author={Mike Roberts and Jason Ramapuram and Anurag Ranjan and Atulit Kumar and Miguel Angel Bautista and Nathan Paczan and Russ Webb and Joshua M. Susskind},
      booktitle={Proceedings of the IEEE/CVF International Conference on Computer Vision (ICCV)},
      year={2021}
}

Chúng tôi xin ghi nhận những người tạo ra Hypersim vì đã cung cấp bộ dữ liệu tổng hợp trong nhà quang thực này cho cộng đồng computer vision.

FAQ#

  • Hypersim là một tập dữ liệu trong nhà tổng hợp mang tính quang thực từ Apple, được dò tia từ các nội thất 3D Evermotion chuyên nghiệp. Bởi vì mỗi điểm ảnh có một giá trị độ sâu chính xác không có nhiễu cảm biến hoặc tín hiệu trả về bị thiếu, 74.619 hình ảnh của nó (68.242 tập huấn luyện, 6.377 tập kiểm định) cung cấp hình học trong nhà sạch sẽ, dày đặc, bổ sung cho dữ liệu cảm biến thế giới thực nhiều nhiễu hơn trong hỗn hợp huấn luyện YOLO26-Depth.

  • Hypersim không có tính năng tự động tải xuống. Hãy lấy các cảnh (~1.9 TB) bằng tập lệnh chính thức từ kho lưu trữ ml-hypersim, sau đó chuyển đổi khoảng cách dò tia depth_meters.hdf5 thành độ sâu phẳng và ghi các tệp PNG theo đơn vị milimet bằng tập lệnh trong Lấy Dữ Liệu. Ánh xạ các điểm ảnh NaN như cửa sổ và bầu trời thành 0 để chúng được xử lý là không hợp lệ.

  • Chạy yolo depth train data=depth-hypersim.yaml model=yolo26n-depth.pt epochs=100 imgsz=640, hoặc sử dụng ví dụ Python trong phần Sử Dụng. Trang Huấn Luyện liệt kê mọi đối số có sẵn.

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

Bình luận