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- Nível de suporte
- Somente inferência, desde a v. 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
O MiDaS não precisa de nenhum extra opcional. Tudo o que ele importa está na instalação base.
pip install libreyoloPredição
O MiDaS é a única família de profundidade que o LibreYOLO não republica na sua
própria organização no Hugging Face. Pedir um checkpoint pelo nome de arquivo do
LibreYOLO baixa o asset oficial correspondente direto dos releases do
isl-org/MiDaS no GitHub, confere contra um SHA-256 fixado e o embrulha com os
metadados de checkpoint do LibreYOLO antes do primeiro uso; as execuções
seguintes reutilizam o arquivo local em cache. Veja Licenciamento para saber por
quê.
from libreyolo import LibreYOLO, SAMPLE_IMAGE # Ainda não está em disco: o LibreYOLO baixa do release oficial# isl-org/MiDaS no GitHub e confere contra um SHA-256 fixado antes de usar.model = LibreYOLO("LibreMiDaSl-depth.pt")result = model(SAMPLE_IMAGE, save=True) depth = result.depth_mapprint(depth.min, depth.max, depth.mean)libreyolo predict model=LibreMiDaSl-depth.pt source=https://raw.githubusercontent.com/LibreYOLO/libreyolo/release/libreyolo/assets/parkour.jpg save=Truefrom 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 carrega um mapa denso de profundidade inversa relativa:
valores maiores significam mais perto da câmera, e os valores não têm unidade
métrica nem escala entre imagens. save=True grava em disco uma visualização
desse mapa com mapa de cores; Results.plot() não cobre esta família, já que
está definido apenas para normais de superfície e bordas. 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.
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"])libreyolo val model=LibreMiDaSl-depth.pt data=my-dataset.yamlExportação
| Tarefa | ONNX | TorchScript | ExecuTorch | TensorRT | OpenVINO | Paddle | MNN | RKNN | ncnn | TFLite | CoreML | Core AI |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| depth | depth to ONNX: compatível | depth to TorchScript: compatível | depth to ExecuTorch: compatível | depth to TensorRT: compatível | depth to OpenVINO: compatível | depth to Paddle: incompatível | depth to MNN: incompatível | depth to RKNN: incompatível | depth to ncnn: compatível | depth to TFLite: incompatível | depth to CoreML: incompatível | depth 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.
from libreyolo import LibreYOLO model = LibreYOLO("LibreMiDaSl-depth.pt")model.export(format="onnx")model.export(format="tensorrt", half=True)libreyolo export model=LibreMiDaSl-depth.pt format=onnxlibreyolo export model=LibreMiDaSl-depth.pt format=tensorrt half=Truefrom 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, distribuído pelos autores. O LibreYOLO não hospeda nem espelha esses pesos.
- Interpretação
- The isl-org/MiDaS repository, code and released checkpoints included, is MIT. LibreYOLO's own port code is MIT as well. LibreYOLO does not republish the checkpoints on its own Hugging Face organization, though: the family downloads the two official release assets directly from GitHub and checks them against a pinned SHA-256 before wrapping them, because an internal LibreYOLO policy (ADR 0006) requires the training-dataset mixture's commercial-redistribution terms to be cleared before LibreYOLO hosts a depth checkpoint itself, and that clearance has not happened for MiDaS. The bytes you get are upstream's own MIT-licensed release either way.
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.