Swin Transformer

Swin Transformer V1: hierarchiczny transformer wizyjny, który oblicza uwagę wewnątrz przesuniętych okien lokalnych zamiast na całym obrazie. LibreYOLO udostępnia cztery rozmiary do klasyfikacji obrazów.

Zadania
classify
Rozmiary
t, s, b, l at 224 px
Instalacja
pip install libreyolo
Poziom obsługi
Tylko inferencja, od wersji v. Tylko predykcja, walidacja i eksport. Funkcje trenowania nie mają zastosowania.
Projekt źródłowy
Swin Transformer, autorzy: Microsoft Research, licencja: MIT. Publikacja, kod źródłowy
Licencje
Kod: Apache-2.0, wagi: MIT. Użycie komercyjne

Instalacja

Swin nie wymaga żadnego opcjonalnego dodatku. Wszystkie importowane elementy znajdują się w instalacji podstawowej.

bash
pip install libreyolo

Predykcja

Przy pierwszym użyciu wagi są pobierane z Hugging Face i zapisywane w lokalnej pamięci podręcznej.

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

Klasyfikator zwraca result.probs zamiast result.boxes. Pola top1 i top5 zawierają indeksy klas, a top1conf i top5conf ich pewności. Każdy rozmiar ma stałe wejście 224 px, ponieważ ostatni etap uwagi jest zbudowany dla tej rozdzielczości. Predykcja, walidacja i eksport zgłaszają błąd po przekazaniu innego imgsz. Więcej informacji o źródłach, streamingu i obsłudze wyników zawiera strona predykcji.

Warianty

Dostępne są cztery rozmiary, od tiny do large. Powstały z tej samej wieży przesuniętych okien, a różnią się szerokością embeddingu i głębokością etapów. Large jest wstępnie wytrenowany na ImageNet-22k i dostrojony na ImageNet-1k, natomiast pozostałe trzy wytrenowano bezpośrednio na ImageNet-1k. LibreYOLO udostępnia tę rodzinę wyłącznie do inferencji. Obsługiwane są predykcja, walidacja top-1/top-5 w stylu ImageNet oraz eksport, a źródłowa procedura trenowania ImageNet nie jest zaimplementowana.

Walidacja

val() działa na podziale w stylu ImageFolder (katalog z podfolderami train/ i val/, po jednym folderze na klasę) i zwraca metryki accuracy top-1 i top-5.

Python
from libreyolo import LibreYOLO model = LibreYOLO("LibreSwint-cls.pt") # data to katalog główny z podziałem train/ i val/ na foldery klas# (układ ImageFolder), a nie plik YAML zbioru danych.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/

Eksport

ZadanieONNXTorchScriptExecuTorchTensorRTOpenVINOPaddleMNNRKNNncnnTFLiteCoreMLCore AI
classifyclassify to ONNX: obsługiwaneclassify to TorchScript: obsługiwaneclassify to ExecuTorch: obsługiwaneclassify to TensorRT: obsługiwaneclassify to OpenVINO: obsługiwaneclassify to Paddle: brak obsługiclassify to MNN: brak obsługiclassify to RKNN: brak obsługiclassify to ncnn: obsługiwaneclassify to TFLite: brak obsługiclassify to CoreML: brak obsługiclassify to Core AI: brak obsługi

Wyeksportowany artefakt jest ponownie ładowany przez LibreYOLO() na podstawie rozszerzenia pliku, więc plik .onnx lub .engine zachowuje się jak checkpoint i zwraca ten sam obiekt Results. Strona eksportu wymienia argumenty obsługiwane przez każdy format oraz dodatki wymagane przez niektóre z nich.

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
Użycie wyeksportowanego pliku
from libreyolo import LibreYOLO, SAMPLE_IMAGE # Fabryka wybiera ścieżkę na podstawie rozszerzenia pliku, więc wyeksportowany artefakt# ładuje się jak każdy checkpoint i zwraca ten sam obiekt Results.model = LibreYOLO("LibreSwint-cls.onnx")result = model(SAMPLE_IMAGE) print(result.probs.top1)

Checkpointy

Wszystkie opublikowane pliki wag dla tej rodziny.

PlikWejście (px)Licencja wag
classify
LibreSwint-cls.pt224mit
LibreSwins-cls.pt224mit
LibreSwinb-cls.pt224mit
LibreSwinl-cls.pt224mit

Każdy z powyższych plików jest obecnie dostępny w organizacji LibreYOLO i pobierany przy pierwszym użyciu.

Licencja

Sprawdź licencję w repozytorium konkretnych pobieranych wag na Hugging Face. Każdy checkpoint w organizacji LibreYOLO ma licencję, która nie zawsze jest taka sama w całej rodzinie. To repozytorium jest źródłem rozstrzygającym, a poniższe podsumowanie opisuje stan z chwili ostatniej weryfikacji tej strony.

To opis obowiązujących licencji, a nie porada prawna. Jeśli odpowiedź ma znaczenie komercyjne, przeczytaj licencje i zasięgnij własnej porady prawnej.

Oryginalna praca
Swin Transformer, Microsoft Research
Licencja projektu źródłowego
MIT
Kod LibreYOLO
MIT
Wagi
MIT, ponownie opublikowane w huggingface.co/LibreYOLO
Interpretacja
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.

Cytowanie

@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}
}

Skopiowano z bloku cytowania autorów w github.com/microsoft/Swin-Transformer#citing-swin-transformer.

Zweryfikowano z LibreYOLO v1.5.0. Tabele obsługi, checkpointy i wyniki benchmarków na tej stronie są generowane na podstawie wydanej biblioteki i opublikowanych wag, a nie wpisywane ręcznie.