MiDaS

MiDaS è la stima della profondità relativa monoculare addestrata con una loss invariante a scala e shift su dataset misti, la linea di lavoro che ha definito il protocollo di trasferimento zero-shot della profondità che le famiglie successive riutilizzano. LibreYOLO lo supporta per il task depth: predizione e validazione zero-shot, senza percorso di addestramento.

Task
depth
Dimensioni
s, l at 256 to 384 px
Installa
pip install libreyolo
Livello di supporto
Solo inferenza, dalla v. Solo predizione, validazione ed esportazione. Le funzionalità di addestramento non si applicano.
Origine
MiDaS di Intel Intelligent Systems Lab (Intel ISL), MIT. Articolo, sorgente
Licenze
Codice MIT, pesi MIT. Uso commerciale

Installazione

MiDaS non richiede nessun extra opzionale. Tutto ciò che importa è già nell'installazione base.

bash
pip install libreyolo

Predizione

MiDaS è l'unica famiglia depth che LibreYOLO non ripubblica sulla propria organizzazione Hugging Face. Richiedere un checkpoint con il suo nome file LibreYOLO scarica l'asset ufficiale corrispondente direttamente dalle release GitHub di isl-org/MiDaS, lo verifica contro uno SHA-256 fissato e lo avvolge nei metadati di checkpoint di LibreYOLO prima del primo utilizzo; le esecuzioni successive riusano il file locale in cache. Vedi Licenze per il motivo.

Python
from libreyolo import LibreYOLO, SAMPLE_IMAGE # Non ancora su disco: LibreYOLO lo scarica dalla release GitHub# ufficiale isl-org/MiDaS e lo verifica contro uno SHA-256 fissato.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, più piccolo e veloce della dimensione l DPT-Large.model = LibreYOLO("LibreMiDaSs-depth.pt")result = model(SAMPLE_IMAGE, save=True)

result.depth_map contiene una mappa densa di profondità inversa relativa: valori più alti indicano una maggiore vicinanza alla camera, e i valori non hanno unità metrica né scala confrontabile fra immagini. save=True scrive su disco una visualizzazione della mappa con una colormap; Results.plot() non copre questa famiglia, perché è definito solo per le normali di superficie e i contorni. Vedi predizione per sorgenti, streaming e gestione dei risultati.

Varianti

Due varianti con encoder diversi, non semplicemente scale diverse dello stesso encoder. s è MiDaS v2.1 Small, un encoder EfficientNet-Lite3. l è DPT-Large, un encoder ViT-L/16 con il decoder DPT che MiDaS ha introdotto per la predizione densa. Anche il preprocessing è diverso: s usa un ridimensionamento a proporzioni mantenute con vincolo superiore e normalizzazione mean/std di ImageNet, l usa un ridimensionamento minimo a proporzioni mantenute con media e deviazione standard di 0.5. Scegli s per una CNN più leggera, l per l'accuratezza del decoder transformer.

L'addestramento non è offerto per questa famiglia. LibreMiDaS.train() solleva sempre NotImplementedError.

Validazione

val() esegue il validatore depth condiviso: allinea ogni predizione al suo ground truth con una scala e uno shift ai minimi quadrati calcolati per immagine, poi riporta le metriche standard di profondità relativa zero-shot, AbsRel, RMSE e le tre soglie 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

Esportazione

TaskONNXTorchScriptExecuTorchTensorRTOpenVINOPaddleMNNRKNNncnnTFLiteCoreMLCore AI
depthdepth to ONNX: supportatodepth to TorchScript: supportatodepth to ExecuTorch: supportatodepth to TensorRT: supportatodepth to OpenVINO: supportatodepth to Paddle: non supportatodepth to MNN: non supportatodepth to RKNN: non supportatodepth to ncnn: supportatodepth to TFLite: non supportatodepth to CoreML: non supportatodepth to Core AI: non supportato

Un artefatto esportato si ricarica con LibreYOLO() in base al suffisso del file, quindi un file .onnx o .engine si comporta come un checkpoint e restituisce lo stesso Results, con depth_map al posto dei box.

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
Usare il file esportato
from libreyolo import LibreYOLO, SAMPLE_IMAGE # La factory sceglie in base al suffisso del file, quindi un artefatto# esportato si carica come un qualsiasi checkpoint e restituisce lo# stesso oggetto Results.model = LibreYOLO("LibreMiDaSl-depth.onnx")result = model(SAMPLE_IMAGE) print(result.depth_map.data.shape)

Licenze

Controlla la licenza nel repository Hugging Face degli specifici pesi che scarichi. Ogni checkpoint nell<link>organizzazione LibreYOLO</link> ne include una e non è sempre la stessa per tutta la famiglia. Quel repository è la fonte autorevole; il riepilogo seguente descrive le condizioni applicabili al momento dellultima verifica di questa pagina.

Questa è una descrizione delle licenze coinvolte, non una consulenza legale. Se la risposta è importante a fini commerciali, leggi personalmente le licenze e chiedi una consulenza indipendente.

Lavoro originale
MiDaS, Intel Intelligent Systems Lab (Intel ISL)
Licenza upstream
MIT
Sorgente upstream
github.com/isl-org/MiDaS
Codice LibreYOLO
MIT
Pesi
MIT, distribuiti dai rispettivi autori. LibreYOLO non li ospita né ne mantiene una copia.
Interpretazione
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.

Citazione

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

Copiato dal blocco di citazione degli autori disponibile su github.com/isl-org/MiDaS#citation.

Verificato con LibreYOLO v1.5.0. Le tabelle di supporto, i checkpoint e i dati dei benchmark in questa pagina vengono generati dalla libreria rilasciata e dai pesi pubblicati, non scritti a mano.