SwinIR
Ein Swin-Transformer-Netzwerk zur Bildrestauration. LibreYOLO bietet Inferenz und Validierung für seine Checkpoints mit 4-facher Super-Resolution: den offiziellen Lightweight-Generator sowie die Real-World-Generatoren in Medium und Large.
- Aufgaben
- restore
- Größen
- s, m, l at 64 px
- Installation
pip install libreyolo- Supportstufe
- Nur Inferenz, seit v. Nur Vorhersage, Validierung und Export. Trainingsfunktionen sind nicht verfügbar.
- Upstream
- SwinIR von Computer Vision Lab, ETH Zurich, Apache-2.0. Publikation, Quelle
- Lizenzen
- Code Apache-2.0, Gewichte Apache-2.0. Kommerzielle Nutzung
Installation
SwinIR benötigt kein optionales Extra. Alle Importe sind in der Basisinstallation enthalten.
pip install libreyoloVorhersage
Die Gewichte werden bei der ersten Verwendung von Hugging Face heruntergeladen und lokal zwischengespeichert.
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)libreyolo predict model=LibreSwinIRm-restore.pt source=https://raw.githubusercontent.com/LibreYOLO/libreyolo/release/libreyolo/assets/parkour.jpg save=Truefrom libreyolo import LibreYOLO model = LibreYOLO("LibreSwinIRl-restore.pt") # tile teilt den Vorwärtsdurchlauf in überlappende Kacheln und fügt# die Übergänge wieder zusammen; tile_pad ist der Rand um jede Kachel,# der vor dem Zurückschneiden hinzugefügt wird. Beides sind nur in Python# verfügbare Schlüsselwortargumente, keine CLI-Flags.result = model("large-photo.jpg", tile=512, tile_pad=16, save=True)Ein Restaurationsergebnis enthält keine Boxen. result.restored ist ein dichtes RGB-Bild vom Typ uint8 mit der Form (H, W, 3), dessen Canvas in jeder Dimension viermal so groß wie die Eingabe ist. save=True schreibt dieses Bild direkt statt einer annotierten Darstellung. Die Eingabe wird auf ein Vielfaches von 8 aufgefüllt und nicht skaliert, sodass die Vorhersage in der ursprünglichen Auflösung des Fotos ausgeführt wird. Eine Quelle, die größer als der verfügbare Speicher ist, lässt sich mit tile und tile_pad aufteilen. Dabei werden die Übergänge zwischen den Kacheln in der Ausgabe zusammengefügt. Unter Vorhersage findest du Informationen zu Quellen, Streaming und Ergebnisverarbeitung.
Varianten
Es gibt drei Größen, alle mit fester 4-facher Hochskalierung. s ist der offizielle Lightweight-Generator mit vier Stufen aus Residual Swin Transformer Blocks (RSTB) und Pixel-Shuffle-Direct-Upsampling. m und l sind die Real-World-Generatoren in Medium und Large. Sie besitzen sechs beziehungsweise neun RSTB-Stufen und einen Upsampler aus Nächster-Nachbar-Skalierung und Faltung, der für reale Bildverschlechterungen statt nur für bikubische Verkleinerung ausgelegt ist.
Validierung
val() misst PSNR und SSIM zwischen der restaurierten Ausgabe und einem unverfälschten Zielbild. Beide Metriken werden in RGB auf dem ursprünglichen Canvas ohne Randbeschnitt oder Skalierung berechnet. SSIM verwendet ein gaußsches Fenster von 11x11 mit Sigma 1,5 und bildet den Mittelwert über die drei Farbkanäle.
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"])libreyolo val model=LibreSwinIRm-restore.pt data=my-restore-dataset.yamlDas Datensatzargument ist eine YAML-Datei, die ein Verzeichnis mit beeinträchtigten Eingabebildern einem Verzeichnis mit unverfälschten Zielbildern gleicher Auflösung zuordnet. Die genauen Schlüssel findest du unter Datensatzformate.
Export
| Aufgabe | ONNX | TorchScript | ExecuTorch | TensorRT | OpenVINO | Paddle | MNN | RKNN | ncnn | TFLite | CoreML | Core AI |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| restore | restore to ONNX: unterstützt | restore to TorchScript: unterstützt | restore to ExecuTorch: nicht unterstützt | restore to TensorRT: unterstützt | restore to OpenVINO: unterstützt | restore to Paddle: nicht unterstützt | restore to MNN: nicht unterstützt | restore to RKNN: nicht unterstützt | restore to ncnn: nicht unterstützt | restore to TFLite: unterstützt | restore to CoreML: nicht unterstützt | restore to Core AI: nicht unterstützt |
Ein exportiertes Artefakt wird über seine Dateiendung wieder durch LibreYOLO() geladen. Eine .onnx- oder .engine-Datei verhält sich daher wie ein Checkpoint und gibt dasselbe Results-Objekt zurück. ExecuTorch und alle in der Matrix als gesperrt markierten Formate sind für diese Familie nicht verfügbar. ONNX, TorchScript, TensorRT, OpenVINO und TFLite werden unterstützt. Unter Export findest du die Argumente, die jedes Format akzeptiert, sowie zusätzliche Argumente einzelner Formate.
from libreyolo import LibreYOLO model = LibreYOLO("LibreSwinIRm-restore.pt") # Wenn imgsz fehlt, wird standardmäßig eine kleine interne Patch-Größe# und nicht deine Arbeitsauflösung verwendet. Übergib deshalb die Größe,# die dein Deployment tatsächlich an das Modell übergibt.model.export(format="onnx", imgsz=512)model.export(format="tensorrt", imgsz=512, half=True)libreyolo export model=LibreSwinIRm-restore.pt format=onnx imgsz=512from libreyolo import LibreYOLO, SAMPLE_IMAGE # Die Factory leitet anhand der Dateiendung weiter, daher wird ein exportiertes Artefakt# wie jeder Checkpoint geladen und gibt dasselbe Results-Objekt zurück.model = LibreYOLO("LibreSwinIRm-restore.onnx")result = model(SAMPLE_IMAGE) print(result.restored.array.shape)Checkpoints
Alle für diese Familie veröffentlichten Gewichtsdateien.
| Datei | Eingabe (px) | Lizenz der Gewichte |
|---|---|---|
| restore | ||
| LibreSwinIRs-restore.pt | apache-2.0 | |
| LibreSwinIRm-restore.pt | apache-2.0 | |
| LibreSwinIRl-restore.pt | apache-2.0 | |
Jede oben aufgeführte Datei ist heute in der LibreYOLO-Organisation verfügbar und wird bei der ersten Verwendung heruntergeladen.
Lizenzierung
Prüfe die Lizenz im Hugging-Face-Repository der konkreten Gewichte, die du herunterlädst. Jeder Checkpoint in der LibreYOLO-Organisation hat eine Lizenz, und sie ist innerhalb einer Familie nicht immer gleich. Dieses Repository ist die maßgebliche Quelle. Die Zusammenfassung unten beschreibt den Stand bei der letzten Verifizierung dieser Seite.
Dies ist eine Beschreibung der beteiligten Lizenzen und keine Rechtsberatung. Wenn die Antwort kommerziell relevant ist, lies die Lizenzen selbst und hole eigenen Rechtsrat ein.
- Originalarbeit
- SwinIR, Computer Vision Lab, ETH Zurich
- Upstream-Lizenz
- Apache-2.0
- Upstream-Quelle
- github.com/JingyunLiang/SwinIR
- LibreYOLO-Code
- MIT
- Gewichte
- Apache-2.0, erneut unter huggingface.co/LibreYOLO veröffentlicht
- Einordnung
- 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.
Zitieren
@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}
}Aus dem Zitierblock der Autoren unter github.com/JingyunLiang/SwinIR#citation kopiert.