Ver como markdown

Swin Transformer

Swin Transformer V1: um vision transformer hierárquico que calcula atenção dentro de janelas locais deslocadas em vez de sobre a imagem inteira. O LibreYOLO traz quatro tamanhos para classificação de imagens.

Tarefas
classify
Tamanhos
t, s, b, l at 224 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
Swin Transformer por Microsoft Research, MIT. Artigo, código-fonte
Licenças
Código Apache-2.0, pesos MIT. Uso comercial

Instalação

O Swin 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.

Python
from libreyolo import LibreYOLO, SAMPLE_IMAGE model = LibreYOLO("LibreSwint-cls.pt")result = model(SAMPLE_IMAGE, save=True) probs = result.probsprint(probs.top1, probs.top1conf)print(probs.top5, probs.top5conf)
CLI
libreyolo predict model=LibreSwint-cls.pt source=https://raw.githubusercontent.com/LibreYOLO/libreyolo/release/libreyolo/assets/parkour.jpg save=True

Um classificador devolve result.probs em vez de result.boxes: top1 e top5 dão os índices das classes, top1conf e top5conf dão as confianças correspondentes. Todos os tamanhos são fixos em uma entrada de 224px, porque o estágio final de atenção é construído para essa resolução; predição, validação e exportação levantam erro se você passar um imgsz diferente. Veja predição para fontes, streaming e tratamento de resultados.

Variantes

Quatro tamanhos, de tiny a large, construídos a partir da mesma torre de janelas deslocadas e diferindo na largura do embedding e na profundidade dos estágios. O large é pré-treinado no ImageNet-22k e passa por fine-tuning no ImageNet-1k; os outros três são treinados direto no ImageNet-1k. O LibreYOLO traz esta família apenas para inferência: predição, validação top-1/top-5 no estilo ImageNet e exportação são suportadas, e a receita de treinamento ImageNet do projeto original não está implementada.

Validação

val() roda sobre um split no estilo ImageFolder (um diretório com subpastas train/ e val/, uma pasta por classe) e devolve a acurácia top-1 e top-5.

Python
from libreyolo import LibreYOLO model = LibreYOLO("LibreSwint-cls.pt") # data é a raiz de um diretório com splits train/ e val/ em pastas por# classe (layout ImageFolder), não um YAML de dataset.metrics = model.val(data="imagenet-1k/") print(metrics["metrics/accuracy_top1"])print(metrics["metrics/accuracy_top5"])
CLI
libreyolo val model=LibreSwint-cls.pt data=imagenet-1k/

Exportação

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

Um artefato exportado é carregado de volta pelo LibreYOLO() a partir da extensão 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 e os extras que alguns deles acrescentam.

Python
from libreyolo import LibreYOLO model = LibreYOLO("LibreSwint-cls.pt")model.export(format="onnx")model.export(format="tensorrt", half=True)
CLI
libreyolo export model=LibreSwint-cls.pt format=onnxlibreyolo export model=LibreSwint-cls.pt format=tensorrt half=True
Usar o arquivo exportado
from libreyolo import LibreYOLO, SAMPLE_IMAGE # A factory decide pela extensão do arquivo, então um artefato exportado# carrega como qualquer checkpoint e devolve o mesmo objeto Results.model = LibreYOLO("LibreSwint-cls.onnx")result = model(SAMPLE_IMAGE) print(result.probs.top1)

Checkpoints

Todos os arquivos de pesos publicados desta família.

ArquivoEntrada (px)Licença dos pesos
classify
LibreSwint-cls.pt224mit
LibreSwins-cls.pt224mit
LibreSwinb-cls.pt224mit
LibreSwinl-cls.pt224mit

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
Swin Transformer, Microsoft Research
Licença original
MIT
Código do LibreYOLO
MIT
Pesos
MIT, republicado em huggingface.co/LibreYOLO
Interpretação
MIT is a permissive license, so these weights can be used in commercial and closed-source products. It asks only that you keep the license text and copyright notice with any copy you redistribute, and it carries no explicit patent grant. LibreYOLO's runtime code for this family is a derived port of the Apache-2.0 timm Swin implementation (Ross Wightman, huggingface/pytorch-image-models), kept parameter-name compatible so the tensors load unchanged; the four released Tiny/Small/Base/Large checkpoints are Microsoft's own MIT-licensed patch-4/window-7 classifiers. Code and weights therefore sit under two different permissive licenses, both of which allow commercial use.

Citação

@inproceedings{liu2021Swin,
  title={Swin Transformer: Hierarchical Vision Transformer using Shifted Windows},
  author={Liu, Ze and Lin, Yutong and Cao, Yue and Hu, Han and Wei, Yixuan and Zhang, Zheng and Lin, Stephen and Guo, Baining},
  booktitle={Proceedings of the IEEE/CVF International Conference on Computer Vision (ICCV)},
  year={2021}
}

Copiado do bloco de citação dos autores em github.com/microsoft/Swin-Transformer#citing-swin-transformer.

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.