TEED

O TEED (Tiny and Efficient Edge Detector) é uma rede convolucional pequena que prediz um mapa denso de probabilidade de bordas a partir de uma imagem RGB. O LibreYOLO envolve a arquitetura dele apenas para detecção de bordas; nenhum checkpoint acompanha a biblioteca.

Tarefas
edge
Tamanhos
t at 352 px
Instalação
pip install libreyolo
Nível de suporte
Somente inferência, desde a v. Somente predição, validação e exportação. Os recursos de treinamento não se aplicam.
Origem
TEED por Xavier Soria, MIT. Artigo, código-fonte
Licenças
Código MIT, pesos MIT. Uso comercial

Instalação

O TEED não precisa de nenhum extra opcional. Tudo o que ele importa está na instalação base.

bash
pip install libreyolo

Predição

O LibreYOLO não inclui nenhum checkpoint do TEED. Os pesos lançados oficialmente são treinados no BIPED, cujos termos publicados de dataset restringem o uso a fins não comerciais, então o LibreYOLO não os espelha. Converta um checkpoint que você tenha licença para usar com weights/convert_teed_weights.py, que confere as chaves dos tensores contra a arquitetura de runtime antes de escrever um arquivo que o LibreYOLO consegue carregar diretamente:

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 em [0, 1]print(edges.binary(0.5).sum())  # contagem de pixels de borda após o limiar
CLI
libreyolo predict model=weights/LibreTEEDt-edge.pt source=https://raw.githubusercontent.com/LibreYOLO/libreyolo/release/libreyolo/assets/parkour.jpg save=True

result.edges guarda o resultado: um array float32 (H, W) em [0, 1], com .binary(threshold) retornando uma máscara booleana de bordas. Não há bounding boxes, então conf, iou e max_det não têm efeito. Veja predição para fontes, streaming e tratamento dos resultados.

Variantes

O TEED vem em um único tamanho no LibreYOLO. O harness de benchmark do LibreYOLO não mediu essa família, então não há números publicados para comparação.

Validação

val() reporta as F-measures ODS e OIS no estilo BSDS contra um dataset pareado de bordas: imagens ao lado de mapas de bordas de mesmo nome-base, com uma máscara de validade opcional para que pixels de padding nunca contem. imgsz precisa ser divisível pelo stride de downsample da rede, e o LibreYOLO levanta um erro claro se não for.

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-measure na escala ótima do datasetprint(metrics["metrics/OIS"])   # F-measure na escala ótima da imagem
CLI
libreyolo val model=weights/LibreTEEDt-edge.pt data=my-dataset.yaml imgsz=352

Exportação

TarefaONNXTorchScriptExecuTorchTensorRTOpenVINOPaddleMNNRKNNncnnTFLiteCoreMLCore AI
edgeedge to ONNX: compatíveledge to TorchScript: compatíveledge to ExecuTorch: compatíveledge to TensorRT: compatíveledge to OpenVINO: compatíveledge to Paddle: incompatíveledge to MNN: incompatíveledge to RKNN: incompatíveledge to ncnn: incompatíveledge to TFLite: compatíveledge to CoreML: incompatíveledge to Core AI: incompatível

A exportação de bordas usa um contrato de runtime de resolução fixa e batch 1: dynamic e um batch diferente de 1 são rejeitados, e o grafo exportado gera um único mapa de probabilidade fundido. Um artefato exportado é carregado de volta pelo LibreYOLO() a partir do sufixo do arquivo, então um arquivo .onnx se comporta como um checkpoint e retorna os mesmos 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
Usar o arquivo exportado
from libreyolo import LibreYOLO, SAMPLE_IMAGE model = LibreYOLO("weights/LibreTEEDt-edge.onnx")result = model(SAMPLE_IMAGE) print(result.edges.array.shape)

Licenciamento

Confira a licença no repositório do Hugging Face correspondente aos pesos que você baixar. Cada checkpoint na organização LibreYOLO tem uma licença, e ela nem sempre é a mesma em toda a família. Esse repositório é a fonte oficial. O resumo abaixo descreve o que se aplicava na última verificação desta página.

Esta é uma descrição das licenças envolvidas, não uma orientação jurídica. Se a resposta tiver importância comercial, leia as licenças e procure sua própria assessoria.

Trabalho original
TEED, Xavier Soria
Licença original
MIT
Código-fonte original
github.com/xavysp/TEED
Código do LibreYOLO
MIT
Pesos
MIT, distribuído pelos autores. O LibreYOLO não hospeda nem espelha esses pesos.
Interpretação
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.

O LibreYOLO não publica nenhum checkpoint do TEED. Nada é espelhado na organização LibreYOLO; em vez disso, converta um checkpoint para o qual você tenha licença com weights/convert_teed_weights.py.

Citação

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

Copiado do bloco de citação dos autores em github.com/xavysp/TEED#citation.

Verificado com o LibreYOLO v1.5.0. As tabelas de suporte, os checkpoints e os números de benchmark desta página são gerados a partir da biblioteca lançada e dos pesos publicados, não escritos à mão.