Segurança pronta para empresas: Em conformidade com ISO 27001 + SOC 2 Tipo I.

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 .npy e conter um array float32.
  • Cada arquivo de profundidade deve ter o mesmo nome base que seu arquivo de imagem correspondente (por exemplo, scene_001.npy faz par com scene_001.jpg).
  • O carregador de conjuntos de dados localiza arquivos de profundidade substituindo o componente de diretório images por depth no caminho do arquivo e trocando a extensão da imagem por .npy.
  • Pixels com profundidade ≤ 0 sã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:

ChaveDescrição
pathDiretório raiz do conjunto de dados.
trainCaminho da imagem de treinamento relativo a path, ou um caminho absoluto.
valCaminho da imagem de validação relativo a path, ou um caminho absoluto.
testCaminho opcional de imagem de teste.
ncNúmero de classes — sempre 1 para estimativa de profundidade.
namesMapeamento de nomes de classe — sempre {0: depth}.
ultralytics/cfg/datasets/nyu-depth.yaml
# 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.zip

Link to this sectionUso#

Treine um modelo de estimativa de profundidade YOLO26 com Python ou CLI:

Exemplo
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#

  1. Salve imagens RGB em pastas de divisão como images/train e images/val.
  2. Salve um array de profundidade float32 .npy por imagem sob as pastas correspondentes depth/train e depth/val usando o mesmo nome base da imagem.
  3. Certifique-se de que os valores de profundidade estejam em metros e que pixels inválidos ou ausentes usem 0 ou valores negativos.
  4. Crie um YAML de conjunto de dados com path, train, val, nc: 1 e names: {0: depth}.
path: path/to/my-depth-dataset
train: images/train
val: images/val

nc: 1
names:
    0: depth

Link 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.

Contribuidores

Comentários