TEED
TEED (Tiny and Efficient Edge Detector) — небольшая свёрточная сеть, которая по одному RGB-изображению предсказывает плотную карту вероятности границ. LibreYOLO использует её архитектуру только для выделения границ; чекпойнт с библиотекой не поставляется.
- Задачи
- edge
- Размеры
- t at 352 px
- Установка
pip install libreyolo- Уровень поддержки
- Только инференс, начиная с v. Только предсказание, валидация и экспорт. Функции обучения неприменимы.
- Исходный проект
- TEED от Xavier Soria, MIT. Статья, исходный код
- Лицензии
- Код: MIT, веса: MIT. Коммерческое использование
Установка
TEED не требует установки дополнительных extra-пакетов. Всё, что он импортирует, входит в базовую установку.
pip install libreyoloПредсказание
LibreYOLO не поставляет чекпойнт TEED. Официально выпущенные веса обучены
на BIPED, а опубликованные условия использования этого датасета ограничивают
его некоммерческими целями, поэтому LibreYOLO не размещает у себя их копию.
Конвертируйте чекпойнт, на который у вас есть лицензия, скриптом
weights/convert_teed_weights.py: он сверяет ключи тензоров с архитектурой
среды выполнения и только после этого записывает файл, который LibreYOLO
загружает напрямую:
python weights/convert_teed_weights.py upstream.pth weights/LibreTEEDt-edge.pt --verifyfrom libreyolo import LibreYOLO, SAMPLE_IMAGE model = LibreYOLO("weights/LibreTEEDt-edge.pt")result = model(SAMPLE_IMAGE, save=True) edges = result.edgesprint(edges.array.shape) # (H, W) float32 в [0, 1]print(edges.binary(0.5).sum()) # число пикселей границ после порогаlibreyolo predict model=weights/LibreTEEDt-edge.pt source=https://raw.githubusercontent.com/LibreYOLO/libreyolo/release/libreyolo/assets/parkour.jpg save=TrueВ result.edges лежит результат — массив (H, W) типа float32 со значениями
в [0, 1], а .binary(threshold) возвращает булеву маску границ. Рамок здесь
нет, поэтому conf, iou и max_det ни на что не влияют. Об источниках,
стриминге и обработке результатов — в разделе предсказание.
Варианты
В LibreYOLO у TEED один размер. Бенчмарк-стенд LibreYOLO это семейство не измерял, поэтому опубликованных цифр для сравнения нет.
Валидация
val() считает F-меры ODS и OIS в стиле BSDS по парному датасету границ:
изображения и лежащие рядом одноимённые карты границ, плюс необязательная
маска валидности, чтобы пиксели дополнения никогда не учитывались. imgsz
должен делиться на суммарный шаг понижения разрешения сети, и LibreYOLO
выдаёт понятную ошибку, если это не так.
from libreyolo import LibreYOLO model = LibreYOLO("weights/LibreTEEDt-edge.pt")metrics = model.val(data="my-dataset.yaml", imgsz=352) print(metrics["metrics/ODS"]) # F-мера при оптимальном пороге для датасетаprint(metrics["metrics/OIS"]) # F-мера при оптимальном пороге для изображенияlibreyolo val model=weights/LibreTEEDt-edge.pt data=my-dataset.yaml imgsz=352Экспорт
| Задача | ONNX | TorchScript | ExecuTorch | TensorRT | OpenVINO | Paddle | MNN | RKNN | ncnn | TFLite | CoreML | Core AI |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| edge | edge to ONNX: поддерживается | edge to TorchScript: поддерживается | edge to ExecuTorch: поддерживается | edge to TensorRT: поддерживается | edge to OpenVINO: поддерживается | edge to Paddle: не поддерживается | edge to MNN: не поддерживается | edge to RKNN: не поддерживается | edge to ncnn: не поддерживается | edge to TFLite: поддерживается | edge to CoreML: не поддерживается | edge to Core AI: не поддерживается |
Экспорт границ работает по контракту среды выполнения с фиксированным
разрешением и batch=1: dynamic и batch, отличный от 1, отклоняются, а
экспортированный граф выдаёт одну объединённую карту вероятности.
Экспортированный артефакт загружается обратно через LibreYOLO() по суффиксу
файла, поэтому файл .onnx ведёт себя как чекпойнт и возвращает тот же
Results.
from libreyolo import LibreYOLO model = LibreYOLO("weights/LibreTEEDt-edge.pt")model.export(format="onnx", imgsz=352)model.export(format="tensorrt", imgsz=352, half=True)libreyolo export model=weights/LibreTEEDt-edge.pt format=onnx imgsz=352libreyolo export model=weights/LibreTEEDt-edge.pt format=tensorrt imgsz=352 half=Truefrom libreyolo import LibreYOLO, SAMPLE_IMAGE model = LibreYOLO("weights/LibreTEEDt-edge.onnx")result = model(SAMPLE_IMAGE) print(result.edges.array.shape)Лицензирование
Проверяйте лицензию в репозитории конкретных весов на Hugging Face. Она указана для каждого чекпойнта в организации LibreYOLO и может различаться даже внутри одного семейства. Этот репозиторий считается авторитетным источником, а сводка ниже описывает условия на момент последней проверки страницы.
Это описание соответствующих лицензий, а не юридическая консультация. Если ответ важен для коммерческого использования, прочитайте лицензии самостоятельно и проконсультируйтесь с юристом.
- Оригинальная работа
- TEED, Xavier Soria
- Лицензия исходного проекта
- MIT
- Исходный код проекта
- github.com/xavysp/TEED
- Код LibreYOLO
- MIT
- Веса
- MIT, распространяются авторами. LibreYOLO не размещает и не зеркалирует их.
- Толкование
- MIT is a permissive license, so the TEED architecture LibreYOLO ports can be used in commercial and closed-source products, with the license text and copyright notice kept alongside any copy you redistribute. LibreYOLO ships no checkpoint for this family: the officially released weights are trained on BIPED, whose published dataset terms restrict use to non-commercial purposes, and mirroring them would carry that restriction into a nominally MIT-licensed download. Convert a checkpoint you hold a license for with `weights/convert_teed_weights.py`; the MIT code license does not change the terms attached to whatever checkpoint you convert.
LibreYOLO не публикует чекпойнт TEED. В организации LibreYOLO не размещено
ни одной копии; вместо этого конвертируйте скриптом
weights/convert_teed_weights.py чекпойнт, на который у вас есть лицензия.
Цитирование
@InProceedings{Soria_2023teed,
author = {Soria, Xavier and Li, Yachuan and Rouhani, Mohammad and Sappa, Angel D.},
title = {Tiny and Efficient Model for the Edge Detection Generalization},
booktitle = {Proceedings of the IEEE/CVF International Conference on Computer Vision (ICCV) Workshops},
month = {October},
year = {2023},
pages = {1364-1373}
}Скопировано из блока цитирования авторов на странице github.com/xavysp/TEED#citation.