MiDaS

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

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

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

MiDaS не потребує додаткових залежностей. Усе, що вона імпортує, входить до базового встановлення.

bash
pip install libreyolo

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

MiDaS є єдиним сімейством глибини, яке LibreYOLO не перевидає у власній організації Hugging Face. Запит контрольної точки за назвою файлу LibreYOLO завантажує відповідний офіційний ресурс безпосередньо з релізів isl-org/MiDaS на GitHub, перевіряє за зафіксованим SHA-256 і перед першим використанням обгортає метаданими контрольної точки LibreYOLO. Наступні запуски повторно використовують кешований локальний файл. Причину пояснено в розділі «Ліцензування».

Python
from libreyolo import LibreYOLO, SAMPLE_IMAGE # Якщо файлу ще немає на диску, LibreYOLO завантажує його з офіційного# релізу isl-org/MiDaS на GitHub і перевіряє зафіксований 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
Малий варіант
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, поширюється авторами. LibreYOLO не розміщує й не дублює ці ваги.
Тлумачення
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.

Цитування

@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.5.0. Таблиці підтримки, контрольні точки й результати бенчмарків на цій сторінці згенеровано з випущеної бібліотеки та опублікованих ваг, а не написано вручну.