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.
pip install libreyoloVorhersage
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.
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)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 # 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.
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.yamlExport
| Aufgabe | ONNX | TorchScript | ExecuTorch | TensorRT | OpenVINO | Paddle | MNN | RKNN | ncnn | TFLite | CoreML | Core AI |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| depth | depth to ONNX: unterstützt | depth to TorchScript: unterstützt | depth to ExecuTorch: unterstützt | depth to TensorRT: unterstützt | depth to OpenVINO: unterstützt | depth to Paddle: nicht unterstützt | depth to MNN: nicht unterstützt | depth to RKNN: nicht unterstützt | depth to ncnn: unterstützt | depth to TFLite: nicht unterstützt | depth to CoreML: nicht unterstützt | depth 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.
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 # 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
- Upstream-Quelle
- github.com/isl-org/MiDaS
- 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.