MiDaS

MiDaS estymuje monokularną głębię względną i jest trenowany z funkcją straty niezmienną względem skali i przesunięcia na mieszanych zbiorach danych. To linia prac, która ustanowiła protokół transferu głębi zero-shot używany przez późniejsze rodziny. LibreYOLO obsługuje go w zadaniu estymacji głębi: do predykcji i walidacji zero-shot, bez ścieżki trenowania.

Zadania
depth
Rozmiary
s, l at 256 to 384 px
Instalacja
pip install libreyolo
Poziom obsługi
Tylko inferencja, od wersji v. Tylko predykcja, walidacja i eksport. Funkcje trenowania nie mają zastosowania.
Projekt źródłowy
MiDaS, autorzy: Intel Intelligent Systems Lab (Intel ISL), licencja: MIT. Publikacja, kod źródłowy
Licencje
Kod: MIT, wagi: MIT. Użycie komercyjne

Instalacja

MiDaS nie wymaga żadnego opcjonalnego dodatku. Wszystkie importowane elementy znajdują się w instalacji podstawowej.

bash
pip install libreyolo

Predykcja

MiDaS jest jedyną rodziną głębi, której LibreYOLO nie publikuje ponownie we własnej organizacji Hugging Face. Żądanie checkpointu przez nazwę pliku LibreYOLO pobiera odpowiedni oficjalny artefakt bezpośrednio z wydań isl-org/MiDaS na GitHubie, sprawdza go względem przypiętego SHA-256 i przed pierwszym użyciem opakowuje metadanymi checkpointu LibreYOLO. Późniejsze uruchomienia ponownie używają lokalnego pliku z pamięci podręcznej. Przyczynę wyjaśnia sekcja Licencja.

Python
from libreyolo import LibreYOLO, SAMPLE_IMAGE # Jeśli pliku nie ma jeszcze na dysku, LibreYOLO pobiera go z oficjalnego wydania# isl-org/MiDaS na GitHubie i przed użyciem sprawdza względem przypiętego 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
Mały wariant
from libreyolo import LibreYOLO, SAMPLE_IMAGE # Enkoder EfficientNet-Lite3, mniejszy i szybszy niż rozmiar DPT-Large l.model = LibreYOLO("LibreMiDaSs-depth.pt")result = model(SAMPLE_IMAGE, save=True)

result.depth_map zawiera gęstą mapę względnej odwrotności głębi: wyższe wartości oznaczają mniejszą odległość od kamery, a wartości nie mają jednostki metrycznej ani skali wspólnej dla obrazów. Ustawienie save=True zapisuje na dysku wizualizację tej mapy z nałożoną paletą kolorów. Results.plot() nie obsługuje tej rodziny, ponieważ zdefiniowano go tylko dla normalnych powierzchni i krawędzi. Więcej informacji o źródłach, streamingu i obsłudze wyników zawiera strona predykcji.

Warianty

Dostępne są dwa warianty z różnymi enkoderami, a nie tylko różne skale tej samej architektury. s to MiDaS v2.1 Small z enkoderem EfficientNet-Lite3. l to DPT-Large z enkoderem ViT-L/16 i dekoderem DPT wprowadzonym przez MiDaS do gęstej predykcji. Różni je także przetwarzanie wstępne. s stosuje zmianę rozmiaru proporcji z górną granicą oraz normalizację średnią/odchyleniem standardowym ImageNet. l stosuje minimalną zmianę rozmiaru proporcji ze średnią i odchyleniem standardowym 0.5. s należy wybrać jako lżejszą sieć CNN, a l dla dokładności dekodera transformerowego.

Ta rodzina nie obsługuje trenowania. LibreMiDaS.train() zawsze zgłasza NotImplementedError.

Walidacja

val() uruchamia wspólny walidator głębi. Dopasowuje każdą predykcję do jej danych referencyjnych (ground truth), obliczając dla każdego obrazu skalę i przesunięcie metodą najmniejszych kwadratów, po czym zwraca standardowe metryki głębi względnej zero-shot: AbsRel, RMSE i trzy progi 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

Eksport

ZadanieONNXTorchScriptExecuTorchTensorRTOpenVINOPaddleMNNRKNNncnnTFLiteCoreMLCore AI
depthdepth to ONNX: obsługiwanedepth to TorchScript: obsługiwanedepth to ExecuTorch: obsługiwanedepth to TensorRT: obsługiwanedepth to OpenVINO: obsługiwanedepth to Paddle: brak obsługidepth to MNN: brak obsługidepth to RKNN: brak obsługidepth to ncnn: obsługiwanedepth to TFLite: brak obsługidepth to CoreML: brak obsługidepth to Core AI: brak obsługi

Wyeksportowany artefakt jest ponownie ładowany przez LibreYOLO() na podstawie rozszerzenia pliku, więc plik .onnx lub .engine zachowuje się jak checkpoint i zwraca ten sam obiekt Results, z depth_map zamiast ramek.

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
Użycie wyeksportowanego pliku
from libreyolo import LibreYOLO, SAMPLE_IMAGE # Fabryka wybiera ścieżkę na podstawie rozszerzenia pliku, więc wyeksportowany artefakt# ładuje się jak każdy checkpoint i zwraca ten sam obiekt Results.model = LibreYOLO("LibreMiDaSl-depth.onnx")result = model(SAMPLE_IMAGE) print(result.depth_map.data.shape)

Licencja

Sprawdź licencję w repozytorium konkretnych pobieranych wag na Hugging Face. Każdy checkpoint w organizacji LibreYOLO ma licencję, która nie zawsze jest taka sama w całej rodzinie. To repozytorium jest źródłem rozstrzygającym, a poniższe podsumowanie opisuje stan z chwili ostatniej weryfikacji tej strony.

To opis obowiązujących licencji, a nie porada prawna. Jeśli odpowiedź ma znaczenie komercyjne, przeczytaj licencje i zasięgnij własnej porady prawnej.

Oryginalna praca
MiDaS, Intel Intelligent Systems Lab (Intel ISL)
Licencja projektu źródłowego
MIT
Kod źródłowy projektu
github.com/isl-org/MiDaS
Kod LibreYOLO
MIT
Wagi
MIT, rozpowszechniane przez autorów. LibreYOLO ich nie hostuje ani nie udostępnia kopii.
Interpretacja
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.

Cytowanie

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

Skopiowano z bloku cytowania autorów w github.com/isl-org/MiDaS#citation.

Zweryfikowano z LibreYOLO v1.5.0. Tabele obsługi, checkpointy i wyniki benchmarków na tej stronie są generowane na podstawie wydanej biblioteki i opublikowanych wag, a nie wpisywane ręcznie.