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.
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("LibreSwint-cls.pt")result = model(SAMPLE_IMAGE, save=True) probs = result.probsprint(probs.top1, probs.top1conf)print(probs.top5, probs.top5conf)libreyolo predict model=LibreSwint-cls.pt source=https://raw.githubusercontent.com/LibreYOLO/libreyolo/release/libreyolo/assets/parkour.jpg save=TrueUm 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.
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"])libreyolo val model=LibreSwint-cls.pt data=imagenet-1k/Exportação
| Tarefa | ONNX | TorchScript | ExecuTorch | TensorRT | OpenVINO | Paddle | MNN | RKNN | ncnn | TFLite | CoreML | Core AI |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| classify | classify to ONNX: compatível | classify to TorchScript: compatível | classify to ExecuTorch: compatível | classify to TensorRT: compatível | classify to OpenVINO: compatível | classify to Paddle: incompatível | classify to MNN: incompatível | classify to RKNN: incompatível | classify to ncnn: compatível | classify to TFLite: incompatível | classify to CoreML: incompatível | classify 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.
from libreyolo import LibreYOLO model = LibreYOLO("LibreSwint-cls.pt")model.export(format="onnx")model.export(format="tensorrt", half=True)libreyolo export model=LibreSwint-cls.pt format=onnxlibreyolo export model=LibreSwint-cls.pt format=tensorrt half=Truefrom 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.
| Arquivo | Entrada (px) | Licença dos pesos |
|---|---|---|
| classify | ||
| LibreSwint-cls.pt | 224 | mit |
| LibreSwins-cls.pt | 224 | mit |
| LibreSwinb-cls.pt | 224 | mit |
| LibreSwinl-cls.pt | 224 | mit |
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-fonte original
- github.com/microsoft/Swin-Transformer
- 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.