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-пакетов. Всё, что он импортирует, входит в базовую установку.

bash
pip install libreyolo

Предсказание

LibreYOLO не поставляет чекпойнт TEED. Официально выпущенные веса обучены на BIPED, а опубликованные условия использования этого датасета ограничивают его некоммерческими целями, поэтому LibreYOLO не размещает у себя их копию. Конвертируйте чекпойнт, на который у вас есть лицензия, скриптом weights/convert_teed_weights.py: он сверяет ключи тензоров с архитектурой среды выполнения и только после этого записывает файл, который LibreYOLO загружает напрямую:

bash
python weights/convert_teed_weights.py upstream.pth weights/LibreTEEDt-edge.pt --verify

Python
from 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())  # число пикселей границ после порога
CLI
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 выдаёт понятную ошибку, если это не так.

Python
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-мера при оптимальном пороге для изображения
CLI
libreyolo val model=weights/LibreTEEDt-edge.pt data=my-dataset.yaml imgsz=352

Экспорт

ЗадачаONNXTorchScriptExecuTorchTensorRTOpenVINOPaddleMNNRKNNncnnTFLiteCoreMLCore AI
edgeedge 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.

Python
from libreyolo import LibreYOLO model = LibreYOLO("weights/LibreTEEDt-edge.pt")model.export(format="onnx", imgsz=352)model.export(format="tensorrt", imgsz=352, half=True)
CLI
libreyolo export model=weights/LibreTEEDt-edge.pt format=onnx imgsz=352libreyolo export model=weights/LibreTEEDt-edge.pt format=tensorrt imgsz=352 half=True
Использование экспортированного файла
from 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.

Проверено с LibreYOLO v1.5.0. Таблицы поддержки, чекпойнты и результаты бенчмарков на этой странице сгенерированы из выпущенной библиотеки и опубликованных весов, а не написаны вручную.