MiDaS

MiDaS ist eine monokulare relative Tiefenschätzung, die mit einem skalierungs- und verschiebungsinvarianten Loss auf gemischten Datensätzen trainiert wurde. Diese Arbeit etablierte das später von anderen Familien wiederverwendete Protokoll zur Zero-Shot-Tiefenübertragung. LibreYOLO unterstützt es für die Tiefenaufgabe: Vorhersage und Zero-Shot-Validierung ohne Trainingspfad.

Aufgaben
depth
Größen
s, l at 256 to 384 px
Installation
pip install "libreyolo[midas]"
Supportstufe
Nur Inferenz, seit v1.5.0. Nur Vorhersage, Validierung und Export. Trainingsfunktionen sind nicht verfügbar.
Upstream
MiDaS von Intel Intelligent Systems Lab (Intel ISL), MIT. Publikation, Quelle
Lizenzen
Code MIT, Gewichte MIT. Kommerzielle Nutzung

Installation

MiDaS benötigt das Extra midas für seine timm-Encoder.

bash
pip install "libreyolo[midas]"

Vorhersage

Die Checkpoints s und l werden von LibreYOLO-Mirrors unter der MIT-Lizenz des Herausgebers heruntergeladen und lokal zwischengespeichert.

Python
from libreyolo import LibreYOLO, SAMPLE_IMAGE # Lädt den gespiegelten Checkpoint bei der ersten Verwendung.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
Kleine Variante
from libreyolo import LibreYOLO, SAMPLE_IMAGE # EfficientNet-Lite3-Encoder, kleiner und schneller als DPT-Large der Größe l.model = LibreYOLO("LibreMiDaSs-depth.pt")result = model(SAMPLE_IMAGE, save=True)

result.depth_map enthält eine dichte Karte der relativen inversen Tiefe: Höhere Werte bedeuten näher an der Kamera; die Werte haben weder eine metrische Einheit noch eine bildübergreifende Skala. save=True speichert eine farbcodierte Visualisierung der Karte; Results.plot() stellt die Tiefenkarte dar. Siehe Vorhersage für Quellen, Streaming und Ergebnisverarbeitung.

Varianten

Es gibt zwei Varianten mit unterschiedlichen Encodern, nicht nur verschiedene Skalierungen desselben Encoders. s ist MiDaS v2.1 Small mit einem EfficientNet-Lite3-Encoder. l ist DPT-Large mit einem ViT-L/16-Encoder und dem von MiDaS für dichte Vorhersagen eingeführten DPT-Decoder. Auch ihre Vorverarbeitung unterscheidet sich: s verwendet eine Seitenverhältnis-Skalierung mit Obergrenze und die ImageNet-Normalisierung für Mittelwert und Standardabweichung. l verwendet eine minimale Seitenverhältnis-Skalierung mit Mittelwert und Standardabweichung 0.5. Wähle s für ein leichteres CNN und l für die Accuracy des Transformer-Decoders.

Für diese Familie wird kein Training angeboten. LibreMiDaS.train() löst immer NotImplementedError aus.

Validierung

val() führt den gemeinsamen Tiefenvalidator aus: Er richtet jede Vorhersage mit einer bildweisen Least-Squares-Skalierung und -Verschiebung an ihrer Ground Truth aus und meldet anschließend die üblichen relativen Zero-Shot-Tiefenmetriken AbsRel, RMSE und die drei Delta-Schwellenwerte.

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

Export

AufgabeONNXTorchScriptExecuTorchTensorRTOpenVINOPaddleMNNRKNNncnnTFLiteCoreMLCore AI
DepthDepth to ONNX: unterstütztDepth to TorchScript: unterstütztDepth to ExecuTorch: unterstütztDepth to TensorRT: unterstütztDepth to OpenVINO: unterstütztDepth to Paddle: nicht unterstütztDepth to MNN: nicht unterstütztDepth to RKNN: nicht unterstütztDepth to ncnn: unterstütztDepth to TFLite: nicht unterstütztDepth to CoreML: nicht unterstütztDepth to Core AI: nicht unterstützt

Ein exportiertes Artefakt wird anhand seiner Dateiendung wieder über LibreYOLO() geladen. Eine .onnx- oder .engine-Datei verhält sich daher wie ein Checkpoint, gibt dasselbe Results-Objekt zurück und enthält depth_map anstelle von Boxen.

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
Exportierte Datei verwenden
from libreyolo import LibreYOLO, SAMPLE_IMAGE # Die Factory entscheidet anhand der Dateiendung, daher wird ein Exportartefakt# wie jeder Checkpoint geladen und gibt dasselbe Results-Objekt zurück.model = LibreYOLO("LibreMiDaSl-depth.onnx")result = model(SAMPLE_IMAGE) print(result.depth_map.data.shape)

Lizenzierung

Prüfe die Lizenz im Hugging-Face-Repository der konkreten Gewichte, die du herunterlädst. Jeder Checkpoint in der LibreYOLO-Organisation hat eine Lizenz, und sie ist innerhalb einer Familie nicht immer gleich. Dieses Repository ist die maßgebliche Quelle. Die Zusammenfassung unten beschreibt den Stand bei der letzten Verifizierung dieser Seite.

Dies ist eine Beschreibung der beteiligten Lizenzen und keine Rechtsberatung. Wenn die Antwort kommerziell relevant ist, lies die Lizenzen selbst und hole eigenen Rechtsrat ein.

Originalarbeit
MiDaS, Intel Intelligent Systems Lab (Intel ISL)
Upstream-Lizenz
MIT
LibreYOLO-Code
MIT
Gewichte
MIT, erneut unter huggingface.co/LibreYOLO veröffentlicht
Einordnung
The upstream repository and released weights declare MIT. LibreYOLO mirrors the s and l checkpoints under that publisher grant.

Zitieren

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

Aus dem Zitierblock der Autoren unter github.com/isl-org/MiDaS#citation kopiert.

Mit LibreYOLO v1.6.0 verifiziert. Supporttabellen, Checkpoints und Benchmarkwerte auf dieser Seite werden aus der veröffentlichten Bibliothek und den publizierten Gewichten generiert und nicht von Hand geschrieben.

Wähle eine Variante oder die Familienübersicht und dann einen Block für Details. Öffne das vollständige Diagramm zum Zoomen oder Herunterladen als SVG und PNG. Die Diagramme sind auf Englisch.