Ultralytics YOLO27:

Conjunto de Dados de Profundidade DIODE#

DIODE (Profundidade Densa Interior/Exterior) é um conjunto de dados do mundo real com ground truth de profundidade densa de altíssima qualidade, capturado por um scanner a laser FARO Focus de nível topográfico. De forma única, abrange cenas interiores e exteriores com o mesmo sensor, criando uma ponte de alta precisão entre a profundidade interior de curto alcance e a profundidade exterior de longo alcance para a estimativa monocular de profundidade.

Principais funcionalidades#

  • Ground truth de profundidade densa de altíssima qualidade, obtido por um scanner a laser FARO Focus de nível topográfico.
  • Abrange cenas interiores e exteriores, capturadas com o mesmo sensor.
  • O intervalo de profundidade vai de distâncias interiores curtas a distâncias exteriores longas, até aproximadamente 80 m na mistura da Ultralytics.
  • Ground truth denso e preciso por pixel, alinhado com os frames RGB.
  • Fornece ground truth denso de alta precisão que faz a ligação entre os domínios interior e exterior.

Estrutura do Conjunto de Dados#

O conjunto de dados de profundidade DIODE está dividido em dois subconjuntos:

  1. Train: 25.458 imagens com mapas de profundidade emparelhados para treino.
  2. Val: 771 imagens com mapas de profundidade emparelhados para validação durante o treino do modelo.

Cada amostra consiste numa imagem RGB e num PNG de profundidade uint16 emparelhado, com 256 unidades por metro (depth_scale: 256), seguindo o formato de conjunto de dados de profundidade da Ultralytics. Isto proporciona uma resolução de 3,90625 mm, representando simultaneamente todo o alcance exterior de 80 m.

Função no YOLO26-Depth#

DIODE é uma fonte de treino na mistura de pré-treino multidataset Ultralytics YOLO26-Depth, com aproximadamente 2,19 milhões de pares imagem–profundidade. Contribui com ground truth denso de alta precisão que faz a ligação entre os domínios interior e exterior num ú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 dataset. Ele contém informações sobre os caminhos, as classes e outras informações relevantes do dataset.

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")

Utilização#

Para treinar um modelo YOLO26n-depth no conjunto de dados DIODE com um tamanho de imagem de 640, podes usar os seguintes trechos de código. Para obter uma lista abrangente dos argumentos disponíveis, consulta a página de Treino do modelo.

Exemplo de treino
from ultralytics import YOLO

# Load a model
model = YOLO("yolo26n-depth.pt")  # load a pretrained depth model (recommended for training)

# Train the model
results = model.train(data="depth-diode.yaml", epochs=100, imgsz=640)

Modelos pré-treinados#

A família de modelos de profundidade YOLO26 é treinada na ampla mistura de pré-treino de profundidade multidataset da qual DIODE faz parte. Estes modelos são transferidos automaticamente a partir da versão mais recente da Ultralytics, por exemplo YOLO26x-depth a partir da v8.4.0, e abrangem vários tamanhos para diferentes requisitos de precisão e recursos.

Citações e agradecimentos#

Se utilizares o conjunto de dados DIODE no teu trabalho de investigação ou desenvolvimento, cita o seguinte artigo:

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}
}

Gostaríamos de agradecer aos autores por criarem e manterem este recurso valioso para a comunidade de visão computacional.

Perguntas frequentes#

  • O DIODE captura cenas internas e externas com o mesmo scanner a laser de precisão de nível topográfico FARO Focus, produzindo uma verdade de solo de profundidade muito densa e precisa em curtos alcances internos e longos alcances externos. Essa cobertura de sensor único torna o conjunto de dados DIODE uma ponte de alta precisão entre os domínios interno e externo na mistura de treinamento do YOLO26-Depth.

  • A configuração da Ultralytics fornece 25.458 pares de imagem e profundidade de treinamento e 771 de validação. A profundidade é armazenada como PNGs uint16 com 256 unidades por metro (depth_scale: 256), o que mantém uma resolução de 3,9 mm enquanto cobre todo o alcance externo de 80 m descrito no formato de conjunto de dados de profundidade da Ultralytics.

  • Carregue um ponto de verificação de profundidade pré-treinado e aponte data para o YAML empacotado, por exemplo, yolo depth train data=depth-diode.yaml model=yolo26n-depth.pt epochs=100 imgsz=640. Consulte a seção Uso para o equivalente em Python e a página de Treinamento para todos os argumentos.

Comentários