MiDaS

MiDaS виконує монокулярне оцінювання відносної глибини та навчається зі сталою до масштабу й зсуву функцією втрат на змішаних датасетах. Ця лінія досліджень започаткувала протокол перенесення глибини без навчальних прикладів, який повторно використовують пізніші сімейства. LibreYOLO підтримує її для завдання глибини: передбачення та валідація без прикладів без шляху навчання.

Задачі
depth
Розміри
s, l at 256 to 384 px
Встановлення
pip install "libreyolo[midas]"
Рівень підтримки
Лише інференс, починаючи з v1.5.0. Лише передбачення, валідація та експорт. Функції навчання не застосовуються.
Першоджерело
MiDaS, автори: Intel Intelligent Systems Lab (Intel ISL), ліцензія MIT. Стаття, джерело
Ліцензії
Код: MIT, ваги: MIT. Комерційне використання

Встановлення

MiDaS потребує додаткового пакета midas для своїх енкодерів timm.

bash
pip install "libreyolo[midas]"

Передбачення

Контрольні точки s і l завантажуються з дзеркал LibreYOLO за дозволом MIT від видавця й кешуються локально.

Python
from libreyolo import LibreYOLO, SAMPLE_IMAGE # Завантажує контрольну точку з дзеркала під час першого використання.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
Малий варіант
from libreyolo import LibreYOLO, SAMPLE_IMAGE # Енкодер EfficientNet-Lite3, менший і швидший за розмір DPT-Large l.model = LibreYOLO("LibreMiDaSs-depth.pt")result = model(SAMPLE_IMAGE, save=True)

result.depth_map містить щільну карту відносної оберненої глибини: більші значення означають ближче до камери, а значення не мають метричної одиниці чи спільного масштабу між зображеннями. save=True записує на диск візуалізацію цієї карти з кольоровою шкалою; Results.plot() відображає карту глибини. Типи джерел, потокове передбачення та обробку результатів описано в розділі передбачення.

Варіанти

Доступні два варіанти з різними енкодерами, а не просто різними масштабами одного. s є MiDaS v2.1 Small з енкодером EfficientNet-Lite3. l є DPT-Large з енкодером ViT-L/16 і декодером DPT, який MiDaS запровадила для щільного передбачення. Вони також мають різну попередню обробку: s використовує зміну розміру зі збереженням пропорцій і верхньою межею та нормалізацію середнім/стандартним відхиленням ImageNet; l використовує мінімальну зміну розміру зі збереженням пропорцій і середнє та стандартне відхилення 0.5. Вибирайте s для легшої CNN, а l для правильності трансформерного декодера.

Навчання для цього сімейства не пропонується. LibreMiDaS.train() завжди спричиняє NotImplementedError.

Валідація

val() запускає спільний валідатор глибини: він вирівнює кожне передбачення з еталонними даними за масштабом і зсувом методом найменших квадратів для кожного зображення, а потім повідомляє стандартні метрики відносної глибини без навчальних прикладів AbsRel, RMSE і три пороги 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

Експорт

ЗадачаONNXTorchScriptExecuTorchTensorRTOpenVINOPaddleMNNRKNNncnnTFLiteCoreMLCore AI
DepthDepth to ONNX: підтримуєтьсяDepth to TorchScript: підтримуєтьсяDepth to ExecuTorch: підтримуєтьсяDepth to TensorRT: підтримуєтьсяDepth to OpenVINO: підтримуєтьсяDepth to Paddle: не підтримуєтьсяDepth to MNN: не підтримуєтьсяDepth to RKNN: не підтримуєтьсяDepth to ncnn: підтримуєтьсяDepth to TFLite: не підтримуєтьсяDepth to CoreML: не підтримуєтьсяDepth to Core AI: не підтримується

Експортований артефакт знову завантажується через LibreYOLO() відповідно до суфікса файлу, тому файл .onnx або .engine поводиться як контрольна точка й повертає той самий об'єкт Results із depth_map замість рамок.

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
Використання експортованого файлу
from libreyolo import LibreYOLO, SAMPLE_IMAGE # Фабрика маршрутизує за суфіксом файлу, тому експортований артефакт# завантажується як будь-яка контрольна точка й повертає той самий об'єкт Results.model = LibreYOLO("LibreMiDaSl-depth.onnx")result = model(SAMPLE_IMAGE) print(result.depth_map.data.shape)

Ліцензування

Перевіряйте ліцензію в репозиторії Hugging Face конкретних ваг, які завантажуєте. Кожна контрольна точка в організації LibreYOLO має ліцензію, і вона не завжди однакова для всього сімейства. Цей репозиторій є авторитетним джерелом, а наведене нижче резюме описує умови на момент останньої перевірки сторінки.

Це опис відповідних ліцензій, а не юридична консультація. Якщо відповідь має комерційне значення, самостійно прочитайте ліцензії та зверніться по юридичну консультацію.

Оригінальна робота
MiDaS, Intel Intelligent Systems Lab (Intel ISL)
Ліцензія першоджерела
MIT
Джерело першоджерела
github.com/isl-org/MiDaS
Код LibreYOLO
MIT
Ваги
MIT, повторно опубліковано на huggingface.co/LibreYOLO
Тлумачення
The upstream repository and released weights declare MIT. LibreYOLO mirrors the s and l checkpoints under that publisher grant.

Цитування

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

Скопійовано з блоку цитування авторів на сторінці github.com/isl-org/MiDaS#citation.

Перевірено з LibreYOLO v1.6.0. Таблиці підтримки, контрольні точки й результати бенчмарків на цій сторінці згенеровано з випущеної бібліотеки та опублікованих ваг, а не написано вручну.

Архітектура MiDaS

Виберіть варіант або огляд сімейства, а потім блок для перегляду подробиць. Відкрийте повну схему для масштабування або завантаження SVG і PNG. Схеми англійською мовою.