Visão geral dos conjuntos de dados de estimativa de profundidade#
A estimativa de profundidade monocular atribui um valor de profundidade em ponto flutuante em metros a cada pixel em uma imagem. O alvo de treinamento é um mapa de profundidade denso por pixel armazenado como uma matriz float32 .npy. Cada valor representa a distância da câmera até o ponto correspondente na cena.
Este guia explica o formato de conjunto de dados usado pelos modelos de estimativa de profundidade Ultralytics YOLO e lista as configurações de conjunto de dados integradas disponíveis para treinamento e validação.
Formato de conjunto de dados suportado#
Formato de mapa de profundidade NPY#
Cada amostra de treinamento consiste em uma imagem RGB e um arquivo de profundidade .npy emparelhado. O arquivo de profundidade armazena uma matriz NumPy float32 2D com o formato (H, W) em que os valores são profundidades em metros.
- Os arquivos de profundidade devem usar a extensão
.npye conter uma matriz float32. - Cada arquivo de profundidade deve ter o mesmo nome base que o arquivo de imagem correspondente (por exemplo,
scene_001.npyfaz par comscene_001.jpg). - O carregador de dados encontra arquivos de profundidade substituindo o componente de diretório
imagespordepthno caminho do arquivo e trocando a extensão da imagem por.npy. - Os pixels com profundidade
≤ 0são tratados como inválidos e excluídos do cálculo de perda e métricas.
O layout padrão mantém imagens e mapas de profundidade em pastas paralelas:
dataset/
├── images/
│ ├── train/
│ └── val/
└── depth/
├── train/
└── val/Por exemplo, uma imagem em images/train/scene_001.jpg é emparelhada com um mapa de profundidade em depth/train/scene_001.npy.
Formato YAML de conjunto de dados#
Conjuntos de dados de estimativa de profundidade são configurados com arquivos YAML. Os campos principais são:
| Chave | Descrição |
|---|---|
path | Diretório raiz do conjunto de dados. |
train | Caminho da imagem de treinamento relativo a path, ou um caminho absoluto. |
val | Caminho da imagem de validação relativo a path, ou um caminho absoluto. |
test | Caminho opcional de imagem de teste. |
nc | Número de classes — sempre 1 para estimativa de profundidade. |
names | Mapeamento de nomes de classes — sempre {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.zipUso#
Treine um modelo de estimativa de profundidade YOLO26 com Python ou 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)Datasets suportados#
Os modelos de profundidade YOLO26 são pré-treinados em uma ampla mistura de múltiplos conjuntos de dados (~2,19M de imagens) abrangendo faixas internas (≤10 m) a externas (~80 m), e então avaliados zero-shot em cinco benchmarks. Cada conjunto de dados tem uma página dedicada:
Depuração
- Depth8 — 8 imagens SUN RGB-D em um arquivo compactado de download automático de 1,3 MB, para testes rápidos de pipeline
Fontes de pré-treinamento
- ARKitScenes — ambiente interno real, Apple ARKit LiDAR (maior fonte real)
- SUN RGB-D — ambiente interno real, RGB-D multissensor
- DIODE — ambiente interno + externo real, verdade terrestre com escâner a laser denso
- Hypersim — ambiente interno sintético fotorrealista
- TartanAir — sintético, ambientes diversos
- Virtual KITTI 2 — direção sintética em ambiente externo
- KITTI — direção real em ambiente externo, Velodyne LiDAR (também uma referência de avaliação)
- ImageNet (pseudo-labeled) — conjunto de destilação com pseudorrotulagem, a maior fonte única
Benchmarks de avaliação
- NYU Depth V2 — principal referência para ambientes internos
- KITTI Eigen — referência de direção em ambiente externo
- ETH3D — alta precisão em ambientes internos + externos
- Make3D — ambiente externo, fora de distribuição
- iBims-1 — ambiente interno de alta qualidade (bordas e superfícies planares)
A precisão por modelo nestas referências e os pesos pré-treinados para download estão listados na Depth Estimation task page. Um arquivo YAML de dataset cujo campo train lista vários diretórios de imagens combina essas fontes para treinamento misto em larga escala.
Adicionando seu próprio conjunto de dados#
- Salve imagens RGB em pastas de divisão como
images/traineimages/val. - Salve uma matriz de profundidade float32
.npypor imagem nas pastas correspondentesdepth/trainedepth/valusando o mesmo nome base de arquivo da imagem. - Certifique-se de que os valores de profundidade estejam em metros e que os pixels inválidos ou ausentes usem
0ou valores negativos. - Crie um YAML de conjunto de dados com
path,train,val,nc: 1enames: {0: depth}.
path: path/to/my-depth-dataset
train: images/train
val: images/val
nc: 1
names:
0: depthFAQ#
Os mapas de profundidade devem ser salvos como arquivos NumPy
.npycontendo matrizes float32 com o formato(H, W). Cada elemento armazena a profundidade em metros para o pixel de imagem correspondente. Não use formatos PNG ou inteiros de 16 bits — o carregador espera matrizes de ponto flutuante brutas.Pixels com valores de profundidade
≤ 0são tratados como inválidos e mascarados tanto no cálculo de perda quanto na avaliação de métricas. Isso abrange ruído de sensores, regiões de céu e superfícies reflexivas onde a profundidade não pode ser medida com confiabilidade.A validação da estimativa de profundidade relata o conjunto padrão de métricas Depth Anything:
- delta1 / delta2 / delta3 — porcentagem de pixels dentro dos limites de 1,25×, 1,25²×, 1,25³×. Quanto maior, melhor.
- abs_rel — erro relativo absoluto médio. Quanto menor, melhor.
- rmse — erro quadrático médio em metros. Quanto menor, melhor.
- silog — erro logarítmico invariante de escala. Quanto menor, melhor.
Sim. Cada arquivo de profundidade
.npydeve compartilhar o mesmo nome base que a imagem correspondente. O carregador deriva o caminho de profundidade substituindo o componente de diretórioimagespordepthe substituindo a extensão da imagem por.npy. Imagens cujo arquivo de profundidade esteja ausente ou ilegível são descartadas durante a verificação (em cache) do dataset com um aviso, exatamente como imagens corrompidas; se nenhum par válido de imagem e profundidade for encontrado, um erro é gerado.