MiDaS

O MiDaS é estimativa de profundidade relativa monocular treinada com uma loss invariante a escala e deslocamento sobre datasets mistos, a linha de trabalho que estabeleceu o protocolo de transferência zero-shot de profundidade que as famílias seguintes reutilizam. O LibreYOLO oferece suporte a ele na tarefa de profundidade: predição e validação zero-shot, sem caminho de treinamento.

Tarefas
depth
Tamanhos
s, l at 256 to 384 px
Instalação
pip install "libreyolo[midas]"
Nível de suporte
Somente inferência, desde a v1.5.0. Somente predição, validação e exportação. Os recursos de treinamento não se aplicam.
Origem
MiDaS por Intel Intelligent Systems Lab (Intel ISL), MIT. Artigo, código-fonte
Licenças
Código MIT, pesos MIT. Uso comercial

Instalação

MiDaS precisa do extra midas para seus encoders timm.

bash
pip install "libreyolo[midas]"

Predição

Os checkpoints s e l são baixados dos espelhos do LibreYOLO sob a licença MIT do publicador e ficam em cache localmente.

Python
from libreyolo import LibreYOLO, SAMPLE_IMAGE # Baixa o checkpoint espelhado no primeiro uso.model = LibreYOLO("LibreMiDaSl-depth.pt")result = model(SAMPLE_IMAGE, save=True) depth = result.depth_mapprint(depth.min, depth.max, depth.mean)
CLI
libreyolo predict model=LibreMiDaSl-depth.pt source=https://raw.githubusercontent.com/LibreYOLO/libreyolo/release/libreyolo/assets/parkour.jpg save=True
Variante Small
from libreyolo import LibreYOLO, SAMPLE_IMAGE # Encoder EfficientNet-Lite3, menor e mais rápido que o tamanho l, DPT-Large.model = LibreYOLO("LibreMiDaSs-depth.pt")result = model(SAMPLE_IMAGE, save=True)

result.depth_map contém um mapa denso de profundidade inversa relativa: valores maiores indicam maior proximidade da câmera, e os valores não têm unidade métrica nem escala entre imagens. save=True grava no disco uma visualização desse mapa com cores; Results.plot() renderiza o mapa de profundidade. Veja predição para fontes, streaming e tratamento de resultados.

Variantes

Duas variantes com encoders diferentes, não apenas escalas diferentes do mesmo encoder. s é o MiDaS v2.1 Small, um encoder EfficientNet-Lite3. l é o DPT-Large, um encoder ViT-L/16 com o decoder DPT que o MiDaS introduziu para predição densa. Elas também fazem o pré-processamento de forma diferente: s usa um redimensionamento de proporção com limite superior e normalização por média/desvio padrão do ImageNet, l usa um redimensionamento de proporção mínimo com média e desvio padrão de 0.5. Escolha s para uma CNN mais leve, l para a acurácia do decoder transformer.

Treinamento não é oferecido para esta família. LibreMiDaS.train() levanta NotImplementedError incondicionalmente.

Validação

val() roda o validador de profundidade compartilhado: ele alinha cada predição ao seu ground truth com uma escala e um deslocamento de mínimos quadrados por imagem, e depois reporta as métricas padrão de profundidade relativa zero-shot, AbsRel, RMSE e os três limiares delta.

Python
from libreyolo import LibreYOLO model = LibreYOLO("LibreMiDaSl-depth.pt")metrics = model.val(data="my-dataset.yaml") print(metrics["metrics/abs_rel"])print(metrics["metrics/rmse"])print(metrics["metrics/delta1"])
CLI
libreyolo val model=LibreMiDaSl-depth.pt data=my-dataset.yaml

Exportação

TarefaONNXTorchScriptExecuTorchTensorRTOpenVINOPaddleMNNRKNNncnnTFLiteCoreMLCore AI
DepthDepth to ONNX: compatívelDepth to TorchScript: compatívelDepth to ExecuTorch: compatívelDepth to TensorRT: compatívelDepth to OpenVINO: compatívelDepth to Paddle: incompatívelDepth to MNN: incompatívelDepth to RKNN: incompatívelDepth to ncnn: compatívelDepth to TFLite: incompatívelDepth to CoreML: incompatívelDepth to Core AI: incompatível

Um artefato exportado é carregado de volta por LibreYOLO() pelo sufixo do arquivo, então um arquivo .onnx ou .engine se comporta como um checkpoint e devolve o mesmo Results, com depth_map no lugar dos boxes.

Python
from libreyolo import LibreYOLO model = LibreYOLO("LibreMiDaSl-depth.pt")model.export(format="onnx")model.export(format="tensorrt", half=True)
CLI
libreyolo export model=LibreMiDaSl-depth.pt format=onnxlibreyolo export model=LibreMiDaSl-depth.pt format=tensorrt half=True
Usar o arquivo exportado
from libreyolo import LibreYOLO, SAMPLE_IMAGE # A factory roteia pelo sufixo do arquivo, então um artefato exportado# carrega como qualquer checkpoint e devolve o mesmo objeto Results.model = LibreYOLO("LibreMiDaSl-depth.onnx")result = model(SAMPLE_IMAGE) print(result.depth_map.data.shape)

Licenciamento

Confira a licença no repositório do Hugging Face correspondente aos pesos que você baixar. Cada checkpoint na organização LibreYOLO tem uma licença, e ela nem sempre é a mesma em toda a família. Esse repositório é a fonte oficial. O resumo abaixo descreve o que se aplicava na última verificação desta página.

Esta é uma descrição das licenças envolvidas, não uma orientação jurídica. Se a resposta tiver importância comercial, leia as licenças e procure sua própria assessoria.

Trabalho original
MiDaS, Intel Intelligent Systems Lab (Intel ISL)
Licença original
MIT
Código-fonte original
github.com/isl-org/MiDaS
Código do LibreYOLO
MIT
Pesos
MIT, republicado em huggingface.co/LibreYOLO
Interpretação
The upstream repository and released weights declare MIT. LibreYOLO mirrors the s and l checkpoints under that publisher grant.

Citação

@ARTICLE {Ranftl2022,
    author  = "Ren\'{e} Ranftl and Katrin Lasinger and David Hafner and Konrad Schindler and Vladlen Koltun",
    title   = "Towards Robust Monocular Depth Estimation: Mixing Datasets for Zero-Shot Cross-Dataset Transfer",
    journal = "IEEE Transactions on Pattern Analysis and Machine Intelligence",
    year    = "2022",
    volume  = "44",
    number  = "3"
}

@article{Ranftl2021,
	author    = {Ren\'{e} Ranftl and Alexey Bochkovskiy and Vladlen Koltun},
	title     = {Vision Transformers for Dense Prediction},
	journal   = {ICCV},
	year      = {2021},
}

Copiado do bloco de citação dos autores em github.com/isl-org/MiDaS#citation.

Verificado com o LibreYOLO v1.6.0. As tabelas de suporte, os checkpoints e os números de benchmark desta página são gerados a partir da biblioteca lançada e dos pesos publicados, não escritos à mão.

Arquitetura de MiDaS

Escolha uma variante ou a visão da família e selecione um bloco para ver os detalhes. Abra o diagrama completo para ampliar ou baixar SVG e PNG. Os diagramas estão em inglês.