SwinIR

Sieć Swin Transformer do odtwarzania obrazów. LibreYOLO udostępnia inferencję i walidację dla jej checkpointów superrozdzielczości 4x: oficjalnego lekkiego generatora oraz generatorów medium i large do rzeczywistych obrazów.

Zadania
restore
Rozmiary
s, m, l at 64 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
SwinIR, autorzy: Computer Vision Lab, ETH Zurich, licencja: Apache-2.0. Publikacja, kod źródłowy
Licencje
Kod: Apache-2.0, wagi: Apache-2.0. Użycie komercyjne

Instalacja

SwinIR 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("LibreSwinIRm-restore.pt")result = model(SAMPLE_IMAGE, save=True) restored = result.restoredprint(restored.array.shape, restored.array.dtype)
CLI
libreyolo predict model=LibreSwinIRm-restore.pt source=https://raw.githubusercontent.com/LibreYOLO/libreyolo/release/libreyolo/assets/parkour.jpg save=True
Kafelki dla dużych obrazów
from libreyolo import LibreYOLO model = LibreYOLO("LibreSwinIRl-restore.pt") # tile dzieli przebieg w przód na nakładające się kafelki i scala ich szwy.# tile_pad to obwódka dodawana wokół każdego kafelka przed ponownym przycięciem.# Oba są argumentami nazwanymi tylko dla Pythona, a nie flagami CLI.result = model("large-photo.jpg", tile=512, tile_pad=16, save=True)

Wynik odtwarzania nie zawiera ramek. result.restored jest gęstym obrazem RGB uint8 (H, W, 3) na obszarze 4 razy większym od wejścia w każdym wymiarze. Ustawienie save=True zapisuje bezpośrednio ten obraz zamiast wykresu z adnotacjami. Wejście jest dopełniane do wielokrotności 8 zamiast skalowane, dlatego predykcja działa w oryginalnej rozdzielczości zdjęcia. Źródło większe niż dostępna pamięć można podzielić argumentami tile i tile_pad, które scalają szwy kafelków w wyniku. Więcej informacji o źródłach, streamingu i obsłudze wyników zawiera strona predykcji.

Warianty

Dostępne są trzy rozmiary, wszystkie ze stałym skalowaniem 4x. s jest oficjalnym lekkim generatorem z czterema etapami residual Swin Transformer block (RSTB) i skalowaniem pixel-shuffle-direct. m i l są generatorami medium i large do rzeczywistych obrazów, z sześcioma i dziewięcioma etapami RSTB oraz skalowaniem najbliższy sąsiad plus splot, zbudowanym dla rzeczywistych degradacji zamiast wyłącznie zmniejszania dwusześciennego.

Walidacja

val() mierzy PSNR i SSIM między odtworzonym wynikiem a czystym obrazem docelowym. Obie metryki są obliczane w RGB na oryginalnym obszarze, bez przycinania granic i bez zmiany rozmiaru. SSIM używa okna Gaussa 11x11 z sigma 1.5, uśrednionego w trzech kanałach koloru.

Python
from libreyolo import LibreYOLO model = LibreYOLO("LibreSwinIRm-restore.pt")metrics = model.val(data="my-restore-dataset.yaml") print(metrics["metrics/PSNR"])print(metrics["metrics/SSIM"])
CLI
libreyolo val model=LibreSwinIRm-restore.pt data=my-restore-dataset.yaml

Argument zbioru danych to plik YAML łączący katalog zdegradowanych obrazów wejściowych z katalogiem czystych obrazów docelowych o zgodnej rozdzielczości. Dokładne klucze opisują formaty zbiorów danych.

Eksport

ZadanieONNXTorchScriptExecuTorchTensorRTOpenVINOPaddleMNNRKNNncnnTFLiteCoreMLCore AI
restorerestore to ONNX: obsługiwanerestore to TorchScript: obsługiwanerestore to ExecuTorch: brak obsługirestore to TensorRT: obsługiwanerestore to OpenVINO: obsługiwanerestore to Paddle: brak obsługirestore to MNN: brak obsługirestore to RKNN: brak obsługirestore to ncnn: brak obsługirestore to TFLite: obsługiwanerestore to CoreML: brak obsługirestore 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. ExecuTorch i każdy format oznaczony w macierzy jako zablokowany nie są dostępne dla tej rodziny. Obsługiwane są ONNX, TorchScript, TensorRT, OpenVINO i TFLite. 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("LibreSwinIRm-restore.pt") # Gdy imgsz pominięto, domyślnie przyjmuje mały wewnętrzny rozmiar patcha,# a nie rozdzielczość roboczą. Podaj rozmiar faktycznie przekazywany modelowi# przez wdrożenie.model.export(format="onnx", imgsz=512)model.export(format="tensorrt", imgsz=512, half=True)
CLI
libreyolo export model=LibreSwinIRm-restore.pt format=onnx imgsz=512
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("LibreSwinIRm-restore.onnx")result = model(SAMPLE_IMAGE) print(result.restored.array.shape)

Checkpointy

Wszystkie opublikowane pliki wag dla tej rodziny.

PlikWejście (px)Licencja wag
restore
LibreSwinIRs-restore.ptapache-2.0
LibreSwinIRm-restore.ptapache-2.0
LibreSwinIRl-restore.ptapache-2.0

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
SwinIR, Computer Vision Lab, ETH Zurich
Licencja projektu źródłowego
Apache-2.0
Kod źródłowy projektu
github.com/JingyunLiang/SwinIR
Kod LibreYOLO
MIT
Wagi
Apache-2.0, ponownie opublikowane w huggingface.co/LibreYOLO
Interpretacja
Apache-2.0 is a permissive license, so these weights can be used in commercial and closed-source products. It asks you to keep its license text and attribution notices with any copy of the weights you redistribute, and it grants a patent license. It places no obligation on your own application code. LibreYOLO's checkpoints are format conversions of the official pretrained generators, with the learned parameters unchanged; SwinIR's real-world variants need a degradation and GAN training pipeline that is not wired into this library, so there is no LibreYOLO-trained variant to license separately.

Cytowanie

@article{liang2021swinir,
  title={SwinIR: Image Restoration Using Swin Transformer},
  author={Liang, Jingyun and Cao, Jiezhang and Sun, Guolei and Zhang, Kai and Van Gool, Luc and Timofte, Radu},
  journal={arXiv preprint arXiv:2108.10257},
  year={2021}
}

Skopiowano z bloku cytowania autorów w github.com/JingyunLiang/SwinIR#citation.

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.