MiDaS
MiDaS виконує монокулярне оцінювання відносної глибини та навчається зі сталою до масштабу й зсуву функцією втрат на змішаних датасетах. Ця лінія досліджень започаткувала протокол перенесення глибини без навчальних прикладів, який повторно використовують пізніші сімейства. LibreYOLO підтримує її для завдання глибини: передбачення та валідація без прикладів без шляху навчання.
- Задачі
- depth
- Розміри
- s, l at 256 to 384 px
- Встановлення
pip install libreyolo- Рівень підтримки
- Лише інференс, починаючи з v. Лише передбачення, валідація та експорт. Функції навчання не застосовуються.
- Ліцензії
- Код: MIT, ваги: MIT. Комерційне використання
Встановлення
MiDaS не потребує додаткових залежностей. Усе, що вона імпортує, входить до базового встановлення.
pip install libreyoloПередбачення
MiDaS є єдиним сімейством глибини, яке LibreYOLO не перевидає у власній
організації Hugging Face. Запит контрольної точки за назвою файлу LibreYOLO
завантажує відповідний офіційний ресурс безпосередньо з релізів
isl-org/MiDaS на GitHub, перевіряє за зафіксованим SHA-256 і перед першим
використанням обгортає метаданими контрольної точки LibreYOLO. Наступні
запуски повторно використовують кешований локальний файл. Причину пояснено в
розділі «Ліцензування».
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)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, менший і швидший за розмір 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.
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.yamlЕкспорт
| Задача | ONNX | TorchScript | ExecuTorch | TensorRT | OpenVINO | Paddle | MNN | RKNN | ncnn | TFLite | CoreML | Core AI |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| depth | depth 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 замість рамок.
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 # Фабрика маршрутизує за суфіксом файлу, тому експортований артефакт# завантажується як будь-яка контрольна точка й повертає той самий об'єкт 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.