DeepLabv3

Uma rede de segmentação semântica que agrega características em várias taxas de dilatação em paralelo (atrous spatial pyramid pooling) antes de classificar cada pixel. O LibreYOLO a inclui apenas para segmentação semântica.

Tarefas
semantic
Tamanhos
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
DeepLabv3 por PyTorch, BSD-3-Clause. Artigo, código-fonte
Licenças
Código BSD-3-Clause, pesos BSD-3-Clause. Uso comercial

Instalação

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

bash
pip install libreyolo

Predição

Os pesos são baixados do Hugging Face no primeiro uso e ficam em cache local. O sufixo -sem no nome do arquivo é obrigatório para esta família.

Python
from libreyolo import LibreYOLO, SAMPLE_IMAGE model = LibreYOLO("LibreDeepLabv3r50-sem.pt")result = model(SAMPLE_IMAGE, save=True) mask = result.semantic_maskprint(mask.data.shape)   # (H, W) ids de classeprint(mask.classes)      # ids de classe presentes na imagem, ordenados
CLI
libreyolo predict model=LibreDeepLabv3r50-sem.pt source=https://raw.githubusercontent.com/LibreYOLO/libreyolo/release/libreyolo/assets/parkour.jpg save=True

A segmentação semântica devolve um id de classe por pixel, não boxes, então result.semantic_mask traz um array (H, W) em .data e a lista de ids de classe presentes na imagem em .classes. conf, iou e max_det são aceitos por paridade de API, mas não têm efeito: o modelo atribui uma classe a cada pixel por argmax, sem limiar de confiança nem etapa de NMS. Veja predição para fontes, streaming e tratamento de resultados.

Variantes

Três backbones: ResNet-50 dilatada, ResNet-101 dilatada e MobileNetV3-Large dilatada. Este é o DeepLabv3, não o DeepLabv3+, então não há estágio de decoder nem refinamento por CRF, acompanhando a implementação do torchvision em vez do código de referência do próprio artigo.

O LibreYOLO não treina o DeepLabv3: train() levanta NotImplementedError para esta família, que o nível de suporte acima marca como somente inferência. Os três checkpoints publicados são os próprios pesos do torchvision treinados em COCO com os rótulos do VOC, convertidos para o loader do LibreYOLO.

Validação

val() devolve metrics/mIoU e metrics/pixel_accuracy, medidos sobre qualquer dataset no formato em que você treinou.

Python
from libreyolo import LibreYOLO model = LibreYOLO("LibreDeepLabv3r50-sem.pt")metrics = model.val(data="my-dataset.yaml") print(metrics["metrics/mIoU"])print(metrics["metrics/pixel_accuracy"])
CLI
libreyolo val model=LibreDeepLabv3r50-sem.pt data=my-dataset.yaml

Exportação

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

Um artefato exportado é carregado de volta por LibreYOLO() pelo sufixo do arquivo, então um arquivo .onnx ou .engine se comporta como um checkpoint e devolve o mesmo Results. Exportação lista os argumentos que todo formato aceita.

Python
from libreyolo import LibreYOLO model = LibreYOLO("LibreDeepLabv3r50-sem.pt")model.export(format="onnx")model.export(format="tensorrt", half=True)
CLI
libreyolo export model=LibreDeepLabv3r50-sem.pt format=onnxlibreyolo export model=LibreDeepLabv3r50-sem.pt format=tensorrt half=True
Usar o arquivo exportado
from libreyolo import LibreYOLO, SAMPLE_IMAGE # A factory roteia pelo sufixo do arquivo, então um artefato exportado# carrega como qualquer checkpoint e devolve o mesmo objeto Results.model = LibreYOLO("LibreDeepLabv3r50-sem.onnx")result = model(SAMPLE_IMAGE) print(result.semantic_mask.data.shape)

Checkpoints

Todos os arquivos de pesos publicados desta família.

ArquivoEntrada (px)Licença dos pesos
semantic
LibreDeepLabv3r50-sem.ptbsd-3-clause
LibreDeepLabv3r101-sem.ptbsd-3-clause
LibreDeepLabv3mv3-sem.ptbsd-3-clause

Todos os arquivos acima existem hoje na organização LibreYOLO e são baixados no primeiro uso.

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
DeepLabv3, PyTorch
Licença original
BSD-3-Clause
Código-fonte original
github.com/pytorch/vision
Código do LibreYOLO
MIT
Pesos
BSD-3-Clause, republicado em huggingface.co/LibreYOLO
Interpretação
BSD-3-Clause is a permissive license, so this code and these weights can be used in commercial and closed-source products. It asks you to keep the copyright notice, license text and a non-endorsement clause with any copy you redistribute. LibreYOLO's inference graph is torchvision's ASPP head over its ResNet-50, ResNet-101 and MobileNetV3-Large backbones; it is DeepLabv3, not DeepLabv3+, so there is no decoder or CRF, and the paper's training-only auxiliary FCN classifier is excluded. The three published checkpoints are torchvision's official COCO-with-VOC-label weights; their separate LibreYOLO Hugging Face mirrors carry BSD-3-Clause on an implied basis disclosed by torchvision rather than an explicit checkpoint-specific grant, and torchvision's own documentation notes that pretrained-model terms can depend on the training data, leaving that determination to the user.

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.