Ultralytics YOLO27:

Conjunto de dados de profundidade DIODE#

DIODE (profundidade densa em ambientes internos/externos) é um conjunto de dados do mundo real com ground truth de profundidade denso e de altíssima qualidade, capturado por um scanner a laser FARO Focus de nível topográfico. De forma singular, ele abrange cenas internas e externas usando o mesmo sensor, tornando-se uma ponte de alta precisão entre a profundidade interna de curto alcance e a profundidade externa de longo alcance para estimativa monocular de profundidade.

Principais funcionalidades#

  • Ground truth de profundidade denso e de altíssima qualidade, obtido com um scanner a laser FARO Focus de nível topográfico.
  • Abrange cenas internas e externas, capturadas com o mesmo sensor.
  • A faixa de profundidade vai de distâncias internas curtas a distâncias externas longas, chegando a aproximadamente 80 m no conjunto da Ultralytics.
  • Ground truth denso e preciso por pixel, alinhado aos quadros RGB.
  • Fornece ground truth denso e de alta precisão que conecta os domínios interno e externo.

Estrutura do conjunto de dados#

O conjunto de dados de profundidade DIODE é dividido em dois subconjuntos:

  1. Treino: 25.458 imagens com mapas de profundidade correspondentes para treinamento.
  2. Val: 771 imagens com mapas de profundidade correspondentes para validação durante o treinamento do modelo.

Cada amostra consiste em uma imagem RGB e um PNG de profundidade uint16 correspondente, com 256 unidades por metro (depth_scale: 256), seguindo o formato de conjunto de dados de profundidade da Ultralytics. Isso oferece resolução de 3,90625 mm e representa a faixa externa completa de 80 m. O YAML do conjunto de dados baixa os arquivos oficiais do DIODE (~84 GB) e os converte automaticamente para esse layout no primeiro uso.

Papel no YOLO26-Depth#

O DIODE é uma fonte de treinamento no conjunto de pré-treinamento multidataset YOLO26-Depth da Ultralytics, com aproximadamente 2,19 milhões de pares de imagem e profundidade. Ele contribui com ground truth denso e de alta precisão que conecta os domínios interno e externo usando um único sensor, ajudando o modelo a generalizar entre cenas de curto e longo alcance. Os modelos resultantes são avaliados nos benchmarks padrão NYU, KITTI, Make3D, ETH3D e iBims-1.

YAML do conjunto de dados#

Um arquivo YAML é usado para definir a configuração do conjunto de dados. Ele contém informações sobre os caminhos, as classes e outros dados relevantes do conjunto.

ultralytics/cfg/datasets/depth-diode.yaml
# 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")

Uso#

Para treinar um modelo YOLO26n-depth no conjunto de dados DIODE com tamanho de imagem 640, você pode usar os trechos de código a seguir. Para ver a lista completa de argumentos disponíveis, consulte a página de treinamento do modelo.

Exemplo de treino
from ultralytics import YOLO

# Carregar um modelo
model = YOLO("yolo26n-depth.pt")  # carrega um modelo de profundidade pré-treinado (recomendado para treinamento)

# Treinar o modelo
results = model.train(data="depth-diode.yaml", epochs=100, imgsz=640)

Modelos pré-treinados#

A família YOLO26 de modelos de profundidade é treinada com o amplo conjunto de pré-treinamento multidataset de profundidade do qual o DIODE faz parte. Esses modelos são baixados automaticamente no primeiro uso, a partir da versão de recursos v8.4.0 da Ultralytics; um exemplo é o YOLO26x-depth. A família inclui vários tamanhos para atender a diferentes requisitos de precisão e recursos.

Citações e agradecimentos#

Se você usar o conjunto de dados DIODE em seu trabalho de pesquisa ou desenvolvimento, cite o artigo a seguir:

Citação
@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}
}

Agradecemos aos autores por criarem e manterem este valioso recurso para a comunidade de visão computacional.

Perguntas frequentes#

  • O DIODE captura cenas internas e externas com o mesmo scanner a laser FARO Focus de nível topográfico, produzindo ground truth de profundidade muito denso e preciso em distâncias internas curtas e externas longas. Essa cobertura com um único sensor cria uma ponte de alta precisão entre os domínios interno e externo no conjunto de treinamento YOLO26-Depth.

  • A configuração da Ultralytics fornece 25.458 pares de imagem e profundidade para treinamento e 771 para validação. A profundidade é armazenada como PNGs uint16 com 256 unidades por metro (depth_scale: 256), mantendo resolução de 3,9 mm e abrangendo a faixa externa completa de 80 m descrita no formato de conjunto de dados de profundidade da Ultralytics.

  • Carregue um checkpoint de profundidade pré-treinado e indique em data o YAML incluído, por exemplo, yolo depth train data=depth-diode.yaml model=yolo26n-depth.pt epochs=100 imgsz=640. Consulte a seção Uso para ver a versão equivalente em Python e a página de treinamento para consultar todos os argumentos.

Comentários