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.
pip install libreyoloPrediçã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:
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 em [0, 1]print(edges.binary(0.5).sum()) # contagem de pixels de borda após o limiarlibreyolo predict model=weights/LibreTEEDt-edge.pt source=https://raw.githubusercontent.com/LibreYOLO/libreyolo/release/libreyolo/assets/parkour.jpg save=Trueresult.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.
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 imagemlibreyolo val model=weights/LibreTEEDt-edge.pt data=my-dataset.yaml imgsz=352Exportação
| Tarefa | ONNX | TorchScript | ExecuTorch | TensorRT | OpenVINO | Paddle | MNN | RKNN | ncnn | TFLite | CoreML | Core AI |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| edge | edge to ONNX: compatível | edge to TorchScript: compatível | edge to ExecuTorch: compatível | edge to TensorRT: compatível | edge to OpenVINO: compatível | edge to Paddle: incompatível | edge to MNN: incompatível | edge to RKNN: incompatível | edge to ncnn: incompatível | edge to TFLite: compatível | edge to CoreML: incompatível | edge 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.
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)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.