SwinIR

Una rete Swin Transformer per il restauro delle immagini. LibreYOLO include inferenza e validazione per i suoi checkpoint di super-risoluzione 4x: il generatore lightweight ufficiale e i generatori real-world medium e large.

Task
restore
Dimensioni
s, m, l at 64 px
Installa
pip install libreyolo
Livello di supporto
Solo inferenza, dalla v. Solo predizione, validazione ed esportazione. Le funzionalità di addestramento non si applicano.
Origine
SwinIR di Computer Vision Lab, ETH Zurich, Apache-2.0. Articolo, sorgente
Licenze
Codice Apache-2.0, pesi Apache-2.0. Uso commerciale

Installazione

SwinIR non richiede nessun extra opzionale. Tutto quello che importa è nell'installazione base.

bash
pip install libreyolo

Predizione

I pesi vengono scaricati da Hugging Face al primo utilizzo e restano nella cache locale.

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
A tasselli, per immagini grandi
from libreyolo import LibreYOLO model = LibreYOLO("LibreSwinIRl-restore.pt") # tile divide il forward pass in tasselli sovrapposti e ricompone le# giunture; tile_pad è l'alone aggiunto attorno a ogni tassello# prima che venga ritagliato via. Sono entrambi argomenti keyword# solo Python, non flag della CLI.result = model("large-photo.jpg", tile=512, tile_pad=16, save=True)

Un risultato di restauro non porta box; result.restored è un'immagine RGB uint8 densa (H, W, 3), su un canvas grande 4 volte l'input in ciascuna dimensione. save=True scrive direttamente quell'immagine invece di un plot annotato. L'input viene riempito con padding fino a un multiplo di 8 invece di essere ridimensionato, quindi la predizione gira alla risoluzione originale della foto; una sorgente più grande di quanto la memoria consenta si può dividere con tile e tile_pad, che ricompongono le giunture dei tasselli nell'output. Vedi predizione per sorgenti, streaming e gestione dei risultati.

Varianti

Tre dimensioni, tutte fisse a un upscaling 4x. s è il generatore lightweight ufficiale, con quattro stage di residual Swin Transformer block (RSTB) e upsampling pixel-shuffle diretto. m e l sono i generatori real-world medium e large, con sei e nove stage RSTB e un upsampler nearest-neighbor più convoluzione, costruito per le degradazioni del mondo reale e non solo per la riduzione bicubica.

Validazione

val() misura PSNR e SSIM tra l'output restaurato e un'immagine target pulita, entrambi calcolati in RGB sul canvas originale, senza ritaglio dei bordi e senza ridimensionamento. SSIM usa una finestra gaussiana 11x11 con sigma 1.5, mediata sui tre canali di colore.

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

L'argomento dataset è un YAML che accoppia una cartella di immagini di input degradate con una cartella di immagini target pulite alla stessa risoluzione; vedi formati dei dataset per le chiavi esatte.

Esportazione

TaskONNXTorchScriptExecuTorchTensorRTOpenVINOPaddleMNNRKNNncnnTFLiteCoreMLCore AI
restorerestore to ONNX: supportatorestore to TorchScript: supportatorestore to ExecuTorch: non supportatorestore to TensorRT: supportatorestore to OpenVINO: supportatorestore to Paddle: non supportatorestore to MNN: non supportatorestore to RKNN: non supportatorestore to ncnn: non supportatorestore to TFLite: supportatorestore to CoreML: non supportatorestore to Core AI: non supportato

Un artefatto esportato si ricarica con LibreYOLO() in base all'estensione del file, quindi un file .onnx o .engine si comporta come un checkpoint e restituisce lo stesso Results. ExecuTorch e tutti i formati che la matrice segna come bloccati non sono disponibili per questa famiglia; ONNX, TorchScript, TensorRT, OpenVINO e TFLite invece sì. Esportazione elenca gli argomenti che ogni formato accetta e gli extra che qualcuno di essi aggiunge.

Python
from libreyolo import LibreYOLO model = LibreYOLO("LibreSwinIRm-restore.pt") # se omesso, imgsz assume una piccola dimensione di patch interna,# non la tua risoluzione di lavoro, quindi passa la dimensione che# il tuo deployment dà davvero in pasto al modello.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
Usare il file esportato
from libreyolo import LibreYOLO, SAMPLE_IMAGE # La factory smista in base all'estensione del file, quindi un# artefatto esportato si carica come qualsiasi checkpoint e# restituisce lo stesso oggetto Results.model = LibreYOLO("LibreSwinIRm-restore.onnx")result = model(SAMPLE_IMAGE) print(result.restored.array.shape)

Checkpoint

Tutti i file di pesi pubblicati per questa famiglia.

FileIngresso (px)Licenza dei pesi
restore
LibreSwinIRs-restore.ptapache-2.0
LibreSwinIRm-restore.ptapache-2.0
LibreSwinIRl-restore.ptapache-2.0

Oggi tutti i file elencati sopra sono presenti nell<link>organizzazione LibreYOLO</link> e vengono scaricati al primo utilizzo.

Licenza

Controlla la licenza nel repository Hugging Face degli specifici pesi che scarichi. Ogni checkpoint nell<link>organizzazione LibreYOLO</link> ne include una e non è sempre la stessa per tutta la famiglia. Quel repository è la fonte autorevole; il riepilogo seguente descrive le condizioni applicabili al momento dellultima verifica di questa pagina.

Questa è una descrizione delle licenze coinvolte, non una consulenza legale. Se la risposta è importante a fini commerciali, leggi personalmente le licenze e chiedi una consulenza indipendente.

Lavoro originale
SwinIR, Computer Vision Lab, ETH Zurich
Licenza upstream
Apache-2.0
Codice LibreYOLO
MIT
Pesi
Apache-2.0, ripubblicati su huggingface.co/LibreYOLO
Interpretazione
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.

Citazione

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

Copiato dal blocco di citazione degli autori disponibile su github.com/JingyunLiang/SwinIR#citation.

Verificato con LibreYOLO v1.5.0. Le tabelle di supporto, i checkpoint e i dati dei benchmark in questa pagina vengono generati dalla libreria rilasciata e dai pesi pubblicati, non scritti a mano.