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.
pip install libreyoloPredykcja
Przy pierwszym użyciu wagi są pobierane z Hugging Face i zapisywane w lokalnej pamięci podręcznej.
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=TrueKlasyfikator 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.
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"])libreyolo val model=LibreSwint-cls.pt data=imagenet-1k/Eksport
| Zadanie | ONNX | TorchScript | ExecuTorch | TensorRT | OpenVINO | Paddle | MNN | RKNN | ncnn | TFLite | CoreML | Core AI |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| classify | classify to ONNX: obsługiwane | classify to TorchScript: obsługiwane | classify to ExecuTorch: obsługiwane | classify to TensorRT: obsługiwane | classify to OpenVINO: obsługiwane | classify to Paddle: brak obsługi | classify to MNN: brak obsługi | classify to RKNN: brak obsługi | classify to ncnn: obsługiwane | classify to TFLite: brak obsługi | classify to CoreML: brak obsługi | classify 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.
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 # 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.
| Plik | Wejście (px) | Licencja wag |
|---|---|---|
| classify | ||
| LibreSwint-cls.pt | 224 | mit |
| LibreSwins-cls.pt | 224 | mit |
| LibreSwinb-cls.pt | 224 | mit |
| LibreSwinl-cls.pt | 224 | mit |
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 źródłowy projektu
- github.com/microsoft/Swin-Transformer
- 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.