DexiNed

O DexiNed (Dense Extreme Inception Network) é uma rede convolucional 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
b 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
DexiNed por Xavier Soria, MIT. Artigo, código-fonte
Licenças
Código MIT, pesos MIT. Uso comercial

Instalação

O DexiNed 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 DexiNed. 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_dexined_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_dexined_weights.py upstream.pth weights/LibreDexiNedb-edge.pt --verify

Python
from libreyolo import LibreYOLO, SAMPLE_IMAGE model = LibreYOLO("weights/LibreDexiNedb-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/LibreDexiNedb-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 DexiNed 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/LibreDexiNedb-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/LibreDexiNedb-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/LibreDexiNedb-edge.pt")model.export(format="onnx", imgsz=352)model.export(format="tensorrt", imgsz=352, half=True)
CLI
libreyolo export model=weights/LibreDexiNedb-edge.pt format=onnx imgsz=352libreyolo export model=weights/LibreDexiNedb-edge.pt format=tensorrt imgsz=352 half=True
Usar o arquivo exportado
from libreyolo import LibreYOLO, SAMPLE_IMAGE model = LibreYOLO("weights/LibreDexiNedb-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
DexiNed, Xavier Soria
Licença original
MIT
Código-fonte original
github.com/xavysp/DexiNed
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 DexiNed 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_dexined_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 DexiNed. Nada é espelhado na organização LibreYOLO; em vez disso, converta um checkpoint para o qual você tenha licença com weights/convert_dexined_weights.py.

Citação

@INPROCEEDINGS {xsoria2020dexined,
author = {X. Soria and E. Riba and A. Sappa},
booktitle = {2020 IEEE Winter Conference on Applications of Computer Vision (WACV)},
title = {Dense Extreme Inception Network: Towards a Robust CNN Model for Edge Detection},
year = {2020},
volume = {},
issn = {},
pages = {1912-1921},
keywords = {image edge detection;convolution;training;feeds;machine learning;task analysis;kernel},
doi = {10.1109/WACV45572.2020.9093290},
url = {https://doi.ieeecomputersociety.org/10.1109/WACV45572.2020.9093290},
publisher = {IEEE Computer Society},
address = {Los Alamitos, CA, USA},
month = {mar}
}

@article{soria2023dexined_ext,
title = {Dense extreme inception network for edge detection},
journal = {Pattern Recognition},
volume = {139},
pages = {109461},
year = {2023},
issn = {0031-3203},
doi = {https://doi.org/10.1016/j.patcog.2023.109461},
url = {https://www.sciencedirect.com/science/article/pii/S0031320323001619},
author = {Xavier Soria and Angel Sappa and Patricio Humanante and Arash Akbarinia},
keywords = {Edge detection, Deep learning, CNN, Contour detection, Boundary detection, Segmentation}
}

Copiado do bloco de citação dos autores em github.com/xavysp/DexiNed#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.