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
Supportstufe
Nur Inferenz, seit v. 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 kein optionales Zusatzpaket. Alle Importe sind in der Basisinstallation enthalten.

bash
pip install libreyolo

Vorhersage

MiDaS ist die einzige Tiefenfamilie, die LibreYOLO nicht in seiner eigenen Hugging-Face-Organisation erneut veröffentlicht. Wenn du einen Checkpoint über seinen LibreYOLO-Dateinamen anforderst, wird das passende offizielle Artefakt direkt aus den GitHub-Releases von isl-org/MiDaS geladen, anhand einer festgeschriebenen SHA-256 geprüft und vor der ersten Verwendung mit den Checkpoint-Metadaten von LibreYOLO versehen. Spätere Läufe nutzen die lokal zwischengespeicherte Datei. Den Grund findest du unter Lizenzierung.

Python
from libreyolo import LibreYOLO, SAMPLE_IMAGE # Noch nicht auf dem Datenträger: LibreYOLO lädt ihn aus dem offiziellen GitHub-# Release isl-org/MiDaS und prüft vor der Verwendung die feste SHA-256.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 eine geringere Entfernung zur Kamera. Die Werte haben weder eine metrische Einheit noch eine bildübergreifende Skala. save=True schreibt eine farbkodierte Visualisierung dieser Karte auf den Datenträger. Results.plot() unterstützt diese Familie nicht, weil es nur für Oberflächennormalen und Kanten definiert ist. Unter Vorhersage findest du Quellen, Streaming und die Verarbeitung von Ergebnissen.

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, von den Autoren verbreitet. LibreYOLO hostet oder spiegelt sie nicht.
Einordnung
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.

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.5.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.