Link to this sectionVisão geral dos conjuntos de dados de estimativa de profundidade#
A estimativa de profundidade monocular atribui um valor de profundidade de ponto flutuante em metros a cada pixel em uma imagem. O objetivo do treinamento é um mapa de profundidade denso por pixel, armazenado como um array float32 .npy. Cada valor representa a distância da câmera até o ponto da cena correspondente.
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.
Link to this sectionFormato de conjunto de dados suportado#
Link to this sectionFormato de mapa de profundidade NPY#
Cada amostra de treinamento consiste em uma imagem RGB e um arquivo de profundidade .npy pareado. O arquivo de profundidade armazena um array NumPy float32 2D com formato (H, W), onde os valores são profundidades em metros.
- Arquivos de profundidade devem usar a extensão
.npye conter um array float32. - Cada arquivo de profundidade deve ter o mesmo nome base que seu arquivo de imagem correspondente (por exemplo,
scene_001.npyfaz par comscene_001.jpg). - O carregador de conjuntos de dados localiza arquivos de profundidade substituindo o componente de diretório
imagespordepthno caminho do arquivo e trocando a extensão da imagem por.npy. - Pixels com profundidade
≤ 0são tratados como inválidos e excluídos do cálculo de perda e métrica.
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 é pareada com um mapa de profundidade em depth/train/scene_001.npy.
Link to this sectionFormato 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 classe — 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.zipLink to this sectionUso#
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)Link to this sectionDatasets 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 de download automático de 1,3 MB, para teste rápido de pipeline
Fontes de pré-treinamento
- ARKitScenes — interior real, Apple ARKit LiDAR (maior fonte real)
- SUN RGB-D — interior real, RGB-D multisensor
- DIODE — interior + exterior real, ground truth de scanner a laser denso
- Hypersim — interior fotorrealista sintético
- TartanAir — sintético, ambientes diversos
- Virtual KITTI 2 — direção externa sintética
- KITTI — direção externa real, Velodyne LiDAR (também um benchmark de avaliação)
- ImageNet (pseudo-labeled) — conjunto de destilação pseudo-rotulado, a maior fonte única
Benchmarks de avaliação
- NYU Depth V2 — benchmark de interior primário
- KITTI Eigen — benchmark de direção externa
- ETH3D — interior + exterior de alta precisão
- Make3D — exterior, fora da distribuição
- iBims-1 — interior de alta qualidade (bordas e superfícies planas)
A precisão por modelo nesses benchmarks e os pesos pré-treinados para download estão listados na página da tarefa de Estimativa de Profundidade. Um YAML de conjunto de dados cujo campo train lista múltiplos diretórios de imagem combina essas fontes para treinamento misto em larga escala.
Link to this sectionAdicionando seu próprio conjunto de dados#
- Salve imagens RGB em pastas de divisão como
images/traineimages/val. - Salve um array de profundidade float32
.npypor imagem sob as pastas correspondentesdepth/trainedepth/valusando o mesmo nome base da imagem. - Certifique-se de que os valores de profundidade estejam em metros e que 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: depthLink to this sectionFAQ#
Link to this sectionQual formato de arquivo os mapas de profundidade devem usar?#
Mapas de profundidade devem ser salvos como arquivos NumPy .npy contendo arrays float32 com formato (H, W). Cada elemento armazena a profundidade em metros para o pixel da imagem correspondente. Não use formatos PNG ou inteiro de 16 bits — o carregador espera arrays de ponto flutuante brutos.
Link to this sectionComo pixels de profundidade inválidos são tratados?#
Pixels com valores de profundidade ≤ 0 são tratados como inválidos e mascarados tanto do cálculo de perda quanto da avaliação de métrica. Isso cobre ruído de sensor, regiões de céu e superfícies reflexivas onde a profundidade não pode ser medida de forma confiável.
Link to this sectionQuais métricas são usadas para avaliação?#
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 — raiz do erro quadrático médio em metros. Quanto menor, melhor.
- silog — erro logarítmico invariante de escala. Quanto menor, melhor.
Link to this sectionOs nomes dos arquivos de profundidade precisam corresponder aos nomes dos arquivos de imagem?#
Sim. Cada arquivo de profundidade .npy deve compartilhar o mesmo nome base que a imagem correspondente. O carregador deriva o caminho de profundidade substituindo o componente de diretório images por depth e substituindo a extensão da imagem por .npy. Imagens cujo arquivo de profundidade está ausente ou ilegível são descartadas durante a varredura (em cache) do conjunto de dados com um aviso, exatamente como imagens corrompidas; se nenhum par válido de imagem-profundidade for encontrado, um erro é levantado.