Bộ dữ liệu độ sâu DIODE#
DIODE (Độ sâu dày đặc trong nhà/ngoài trời) là một dataset thực tế với ground truth độ sâu dày đặc, chất lượng rất cao, được thu thập bằng máy quét laser FARO Focus cấp khảo sát. Điểm đặc biệt là dataset này bao phủ cả các cảnh trong nhà và ngoài trời bằng cùng một sensor, tạo thành cầu nối độ chính xác cao giữa độ sâu trong nhà ở khoảng cách ngắn và độ sâu ngoài trời ở khoảng cách xa cho ước tính độ sâu đơn ảnh.
Tính năng chính#
- Ground truth độ sâu dày đặc chất lượng rất cao từ máy quét laser FARO Focus cấp khảo sát.
- Bao phủ cả cảnh trong nhà và ngoài trời được chụp bằng cùng một sensor.
- Phạm vi độ sâu trải dài từ khoảng cách ngắn trong nhà đến khoảng cách xa ngoài trời, lên đến khoảng 80 m trong tập phối hợp của Ultralytics.
- Ground truth dày đặc, chính xác theo từng pixel, được căn chỉnh với các frame RGB.
- Cung cấp ground truth dày đặc có độ chính xác cao, tạo cầu nối giữa các miền trong nhà và ngoài trời.
Cấu trúc bộ dữ liệu#
Dataset độ sâu DIODE được chia thành hai subset:
- Train: 25.458 ảnh kèm depth map tương ứng để training.
- Val: 771 ả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 tương ứng với 256 đơn vị trên mỗi mét (depth_scale: 256), tuân theo định dạng dataset độ sâu của Ultralytics. Định dạng này cung cấp độ phân giải 3.90625 mm, đồng thời biểu diễn đầy đủ phạm vi ngoài trời 80 m.
Vai trò trong YOLO26-Depth#
DIODE là nguồn training trong tập phối hợp pretraining đa-dataset Ultralytics YOLO26-Depth, gồm khoảng 2,19 triệu cặp ảnh–độ sâu. Dataset này đóng góp ground truth dày đặc có độ chính xác cao, tạo cầu nối giữa các miền trong nhà và ngoài trời bằng một sensor duy nhất, giúp model tổng quát hóa trên cả các cảnh ở khoảng cách ngắn và khoảng cách xa. Các model tạo ra được đánh giá trên các 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 🚀 AGPL-3.0 License - https://ultralytics.com/license
# DIODE dataset for monocular depth estimation — real indoor + outdoor, FARO Focus survey-grade laser, depth up to ~80 m
# Documentation: https://docs.ultralytics.com/datasets/depth/diode
# Example usage: yolo depth train data=depth-diode.yaml model=yolo26n-depth.pt
# parent
# ├── ultralytics
# └── datasets
# └── depth-diode ← downloads here (84 GB archives, ~90 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-diode dir and re-run to rebuild it.
path: depth-diode # dataset root dir (relative to Ultralytics settings 'datasets_dir')
train: images/train # train images (relative to 'path') 25458 images
val: images/val # val images (relative to 'path') 771 images
max_depth: 80 # (m) maximum valid depth; GT beyond this is excluded from val metrics
nc: 1
names:
0: depth
channels: 3
depth_scale: 256 # PNG value 256 = 1 meter; represents the 80 m outdoor range
# Download script/URL (optional)
download: |
import shutil
from pathlib import Path
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 archives (train ~81 GB, val ~2.6 GB), then convert:
# flatten <split>/<scene>/<scan>/*.png into images/<split>/ and save the paired *_depth.npy
# (masked invalid -> 0, clipped at 80 m) as depth/<split>/*.png
dir = Path(yaml["path"]) # dataset root dir
download([f"https://diode-dataset.s3.amazonaws.com/{s}.tar.gz" for s in ("train", "val")], dir=dir / "source", delete=True)
for split in ("train", "val"):
(dir / "images" / split).mkdir(parents=True, exist_ok=True)
(dir / "depth" / split).mkdir(parents=True, exist_ok=True)
for im in TQDM(sorted((dir / "source" / split).rglob("*.png")), desc=f"Converting {split}"):
name = "_".join(im.relative_to(dir / "source").parts) # train/indoors/scene/scan/x.png -> train_indoors_scene_scan_x.png
depth = np.load(im.with_name(f"{im.stem}_depth.npy")).squeeze().astype(np.float32)
depth[np.load(im.with_name(f"{im.stem}_depth_mask.npy")) == 0] = 0.0 # zero out invalid pixels
save_depth_png(dir / "depth" / split / f"{name[:-4]}.png", depth.clip(max=80), scale=256)
im.replace(dir / "images" / split / name)
shutil.rmtree(dir / "source")Cách sử dụng#
Để training model YOLO26n-depth trên dataset DIODE 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.
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-diode.yaml", epochs=100, imgsz=640)Các model đã tiền huấn luyện#
Họ model độ sâu YOLO26 được training trên tập phối hợp pretraining độ sâu đa-dataset quy mô lớn mà DIODE là một phần trong đó. Các model này được tự động tải xuống từ bản phát hành Ultralytics mới nhất, chẳng hạn YOLO26x-depth từ v8.4.0, và bao gồm nhiều kích thướ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à ghi nhận đóng góp#
Nếu sử dụng dataset DIODE trong công việc nghiên cứu hoặc phát triển, vui lòng trích dẫn bài báo sau:
@article{vasiljevic2019diode,
title={DIODE: A Dense Indoor and Outdoor DEpth Dataset},
author={Vasiljevic, Igor and Kolkin, Nick and Zhang, Shanyi and Luo, Ruotian and Wang, Haochen and Dai, Falcon Z. and Daniele, Andrea F. and Mostajabi, Mohammadreza and Basart, Steven and Walter, Matthew R. and Shakhnarovich, Gregory},
journal={arXiv preprint arXiv:1908.00463},
year={2019}
}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#
DIODE ghi lại cả cảnh trong nhà và ngoài trời bằng cùng một máy quét laser cấp khảo sát FARO Focus, tạo ra dữ liệu mặt nạ độ sâu thực tế rất dày đặc và chính xác trên các phạm vi ngắn trong nhà và dài ngoài trời. Phạm vi bao phủ bằng một cảm biến duy nhất này làm cho DIODE trở thành cầu nối có độ chính xác cao giữa các miền trong nhà và ngoài trời trong tập hợp huấn luyện YOLO26-Depth.
Cấu hình Ultralytics cung cấp 25.458 cặp hình ảnh-độ sâu huấn luyện và 771 cặp xác thực. Độ sâu được lưu trữ dưới dạng các tệp PNG uint16 với 256 đơn vị trên mỗi mét (
depth_scale: 256), giúp duy trì độ phân giải 3,9 mm trong khi bao phủ toàn bộ phạm vi ngoài trời 80 m được mô tả trong định dạng tập dữ liệu độ sâu Ultralytics.Tải một điểm kiểm tra độ sâu đã huấn luyện trước và trỏ
datavào tệp YAML đi kèm, ví dụ:yolo depth train data=depth-diode.yaml model=yolo26n-depth.pt epochs=100 imgsz=640. Xem phần Sử dụng để biết mã Python tương đương và trang Huấn luyện để xem tất cả các đối số.