Tổng quan về các tập dữ liệu ước tính độ sâu#
Ước lượng độ sâu đơn mắt gán một giá trị độ sâu dấu phẩy động tính bằng mét cho mỗi pixel trong ảnh. Mục tiêu huấn luyện là một bản đồ độ sâu dày đặc cho từng pixel được lưu dưới dạng mảng float32 .npy. Mỗi giá trị biểu diễn khoảng cách từ máy ảnh đến điểm cảnh tương ứng.
Hướng dẫn này giải thích định dạng tập dữ liệu được sử dụng bởi các model ước tính độ sâu Ultralytics YOLO và liệt kê các cấu hình tập dữ liệu tích hợp sẵn có để huấn luyện và kiểm định.
Định dạng tập dữ liệu được hỗ trợ#
Định dạng bản đồ độ sâu NPY#
Mỗi mẫu huấn luyện bao gồm một ảnh RGB và một tệp độ sâu .npy đi kèm. Tệp độ sâu lưu trữ một mảng NumPy float32 2D có hình dạng (H, W) trong đó các giá trị là độ sâu tính bằng mét.
- Các tệp độ sâu phải sử dụng phần mở rộng
.npyvà chứa một mảng float32. - Mỗi tệp độ sâu phải có phần gốc tên giống với tệp ảnh khớp với nó (ví dụ:
scene_001.npyghép đôi vớiscene_001.jpg). - Trình tải tập dữ liệu tìm các tệp độ sâu bằng cách thay thế thành phần thư mục
imagesbằngdepthtrong đường dẫn tệp và đổi phần mở rộng ảnh thành.npy. - Các pixel có độ sâu
≤ 0được xử lý là không hợp lệ và bị loại trừ khỏi quá trình tính toán hàm mất mát và chỉ số.
Bố cục tiêu chuẩn giữ ảnh và bản đồ độ sâu trong các thư mục song song:
dataset/
├── images/
│ ├── train/
│ └── val/
└── depth/
├── train/
└── val/Ví dụ, một ảnh tại images/train/scene_001.jpg được ghép đôi với một bản đồ độ sâu tại depth/train/scene_001.npy.
Định dạng YAML cho tập dữ liệu#
Các tập dữ liệu ước tính độ sâu được cấu hình bằng các tệp YAML. Các trường chính là:
| Khóa | Mô tả |
|---|---|
path | Thư mục gốc của tập dữ liệu. |
train | Đường dẫn ảnh huấn luyện tương đối với path, hoặc một đường dẫn tuyệt đối. |
val | Đường dẫn ảnh kiểm tra (validation) tương đối với path, hoặc một đường dẫn tuyệt đối. |
test | Đường dẫn hình ảnh kiểm tra tùy chọn. |
nc | Số lượng lớp — luôn là 1 đối với ước lượng độ sâu. |
names | Ánh xạ tên lớp — luôn là {0: depth}. |
# Ultralytics 🚀 AGPL-3.0 License - https://ultralytics.com/license
# NYU Depth V2 dataset for monocular depth estimation
# Documentation: https://cs.nyu.edu/~silberman/datasets/nyu_depth_v2.html
# 795 train + 654 val (Eigen test split) images, 480x640, indoor scenes, depth in meters
# Example usage: yolo depth train data=nyu-depth.yaml model=yolo26n-depth.pt
# parent
# ├── ultralytics
# └── datasets
# └── nyu-depth ← downloads here (≈1.5 GB)
# Train/val/test sets as 1) dir: path/to/imgs, 2) file: path/to/imgs.txt, or 3) list: [path/to/imgs1, path/to/imgs2, ..]
path: nyu-depth # dataset root dir (relative to Ultralytics settings 'datasets_dir')
train: images/train # train images (relative to 'path') 795 images
val: images/val # val images (relative to 'path') 654 images
# Depth maps are paired .npy files (float32, meters) under depth/<split>/, resolved by
# swapping '/images/' -> '/depth/' on each image path.
# Classes
nc: 1
names:
0: depth
channels: 3
# Download script/URL (optional)
download: https://github.com/ultralytics/assets/releases/download/v0.0.0/nyu-depth.zipCách sử dụng#
Huấn luyện một model ước tính độ sâu YOLO26 với Python hoặc CLI:
from ultralytics import YOLO
# Load a pretrained depth model
model = YOLO("yolo26n-depth.pt")
# Train on the NYU Depth V2 dataset
results = model.train(data="nyu-depth.yaml", epochs=100, imgsz=640)Các tập dữ liệu được hỗ trợ#
Các model độ sâu YOLO26 được tiền huấn luyện trên một tập hợp đa dạng các tập dữ liệu (~2,19 triệu ảnh) bao gồm từ trong nhà (≤10 m) đến ngoài trời (~80 m), sau đó được đánh giá zero-shot trên năm bộ benchmark. Mỗi tập dữ liệu có một trang dành riêng:
Gỡ lỗi
- Depth8 — 8 ảnh SUN RGB-D trong một tệp lưu trữ tự động tải xuống kích thước 1.3 MB, dùng để kiểm thử đường ống nhanh chóng
Nguồn tiền huấn luyện
- ARKitScenes — trong nhà thực tế, Apple ARKit LiDAR (nguồn thực tế lớn nhất)
- SUN RGB-D — trong nhà thực tế, RGB-D đa cảm biến
- DIODE — trong nhà + ngoài trời thực tế, dữ liệu gốc máy quét laser dày đặc
- Hypersim — trong nhà giả lập chân thực quang học
- TartanAir — giả lập, môi trường đa dạng
- Virtual KITTI 2 — lái xe ngoài trời giả lập
- KITTI — lái xe ngoài trời thực tế, Velodyne LiDAR (đồng thời là một chuẩn đánh giá)
- ImageNet (gắn nhãn giả) — tập chưng cất gắn nhãn giả, nguồn đơn lẻ lớn nhất
Bộ benchmark đánh giá
- NYU Depth V2 — chuẩn đánh giá trong nhà chính
- KITTI Eigen — chuẩn đánh giá lái xe ngoài trời
- ETH3D — trong nhà + ngoài trời độ chính xác cao
- Make3D — ngoài trời, ngoài phân phối
- iBims-1 — trong nhà chất lượng cao (các cạnh và bề mặt phẳng)
Độ chính xác của từng model trên các chuẩn đánh giá này và trọng số huấn luyện trước có thể tải xuống được liệt kê trên trang tác vụ Ước lượng độ sâu. Một tệp YAML tập dữ liệu có trường train liệt kê nhiều thư mục ảnh sẽ kết hợp các nguồn này cho quá trình huấn luyện hỗn hợp quy mô lớn.
Thêm tập dữ liệu của riêng bạn#
- Lưu các ảnh RGB trong các thư mục phân tách như
images/trainvàimages/val. - Lưu một mảng độ sâu float32
.npycho mỗi ảnh bên dưới các thư mục tương ứngdepth/trainvàdepth/valsử dụng cùng phần gốc tên tệp với ảnh. - Đảm bảo các giá trị độ sâu tính bằng mét và các pixel không hợp lệ hoặc bị thiếu sử dụng
0hoặc các giá trị âm. - Tạo một tệp YAML tập dữ liệu với
path,train,val,nc: 1, vànames: {0: depth}.
path: path/to/my-depth-dataset
train: images/train
val: images/val
nc: 1
names:
0: depthCâu hỏi thường gặp#
Bản đồ độ sâu phải được lưu dưới dạng các tệp NumPy
.npychứa các mảng float32 có hình dạng(H, W). Mỗi phần tử lưu trữ độ sâu tính bằng mét cho pixel ảnh tương ứng. Không sử dụng định dạng PNG hoặc số nguyên 16-bit — trình tải mong đợi các mảng số thực thô.Các pixel có giá trị độ sâu
≤ 0được xử lý là không hợp lệ và được che đi (mask out) khỏi cả quá trình tính toán hàm mất mát và đánh giá chỉ số. Điều này bao gồm nhiễu cảm biến, vùng trời, và bề mặt phản chiếu nơi không thể đo độ sâu đáng tin cậy.Việc kiểm định ước tính độ sâu báo cáo tập hợp chỉ số Depth Anything tiêu chuẩn:
- delta1 / delta2 / delta3 — tỷ lệ phần trăm các pixel nằm trong ngưỡng 1,25×, 1,25²×, 1,25³×. Chỉ số càng cao càng tốt.
- abs_rel — sai số tuyệt đối trung bình. Chỉ số càng thấp càng tốt.
- rmse — sai số bình phương trung bình gốc tính bằng mét. Chỉ số càng thấp càng tốt.
- silog — sai số logarit bất biến tỷ lệ. Chỉ số càng thấp càng tốt.
Có. Mỗi tệp độ sâu
.npyphải có chung phần gốc tên với ảnh tương ứng. Trình tải suy ra đường dẫn độ sâu bằng cách thay thế thành phần thư mụcimagesbằngdepthvà thay thế phần mở rộng ảnh bằng.npy. Các ảnh có tệp độ sâu bị thiếu hoặc không thể đọc được sẽ bị loại bỏ trong quá trình quét tập dữ liệu (được lưu bộ nhớ đệm) kèm theo cảnh báo, hoàn toàn giống như các ảnh bị hỏng; nếu không tìm thấy cặp ảnh-độ sâu hợp lệ nào, một lỗi sẽ được kích hoạt.