FCN
Um classificador denso por pixel que troca as camadas totalmente conectadas de um detector por convoluções, entregando um mapa de classes em resolução plena em vez de boxes. O LibreYOLO o inclui apenas para segmentação semântica.
- Tarefas
- semantic
- Tamanhos
- r50, r101 at 520 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
- FCN 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 FCN não precisa de nenhum extra opcional. Tudo o que ele importa está na instalação base.
pip install libreyoloPredição
Os pesos são baixados do Hugging Face no primeiro uso e ficam em cache local.
from libreyolo import LibreYOLO, SAMPLE_IMAGE model = LibreYOLO("LibreFCNr50.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, ordenadoslibreyolo predict model=LibreFCNr50.pt source=https://raw.githubusercontent.com/LibreYOLO/libreyolo/release/libreyolo/assets/parkour.jpg save=TrueA 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
Duas profundidades de ResNet, ambas com entrada fixa de 520 px. O grafo de inferência da biblioteca é o FCN com ResNet dilatada do torchvision, não a rede FCN-8s original do artigo, baseada em VGG e com conexões de salto.
O LibreYOLO não treina o FCN: train() levanta NotImplementedError para esta
família, que o nível de suporte acima marca como somente
inferência. Os dois checkpoints publicados são os próprios pesos do torchvision
treinados em COCO, 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.
from libreyolo import LibreYOLO model = LibreYOLO("LibreFCNr50.pt")metrics = model.val(data="my-dataset.yaml") print(metrics["metrics/mIoU"])print(metrics["metrics/pixel_accuracy"])libreyolo val model=LibreFCNr50.pt data=my-dataset.yamlExportação
| Tarefa | ONNX | TorchScript | ExecuTorch | TensorRT | OpenVINO | Paddle | MNN | RKNN | ncnn | TFLite | CoreML | Core AI |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| semantic | semantic to ONNX: compatível | semantic to TorchScript: compatível | semantic to ExecuTorch: incompatível | semantic to TensorRT: compatível | semantic to OpenVINO: compatível | semantic to Paddle: incompatível | semantic to MNN: incompatível | semantic to RKNN: incompatível | semantic to ncnn: incompatível | semantic to TFLite: incompatível | semantic to CoreML: incompatível | semantic 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.
from libreyolo import LibreYOLO model = LibreYOLO("LibreFCNr50.pt")model.export(format="onnx")model.export(format="tensorrt", half=True)libreyolo export model=LibreFCNr50.pt format=onnxlibreyolo export model=LibreFCNr50.pt format=tensorrt half=Truefrom 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("LibreFCNr50.onnx")result = model(SAMPLE_IMAGE) print(result.semantic_mask.data.shape)Checkpoints
Todos os arquivos de pesos publicados desta família.
| Arquivo | Entrada (px) | Licença dos pesos |
|---|---|---|
| semantic | ||
| LibreFCNr50.pt | 520 | bsd-3-clause |
| LibreFCNr101.pt | 520 | bsd-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
- FCN, 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 dilated-ResNet FCN, not the original VGG-based FCN-8s skip-fusion network from the paper. The two published checkpoints are torchvision's official COCO-trained 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.