SwinIR
Una red Swin Transformer para restauración de imágenes. LibreYOLO incluye inferencia y validación para sus checkpoints de superresolución a 4x: el generador oficial lightweight y los generadores real-world medium y large.
- Tareas
- restore
- Tamaños
- s, m, l at 64 px
- Instalación
pip install libreyolo- Nivel de compatibilidad
- Solo inferencia, desde v. Solo permite predecir, validar y exportar. Las funciones de entrenamiento no se aplican.
- Licencias
- Código Apache-2.0, pesos Apache-2.0. Uso comercial
Instalación
SwinIR no necesita ningún extra opcional. Todo lo que importa está en la instalación base.
pip install libreyoloPredicción
Los pesos se descargan de Hugging Face en el primer uso y se guardan en la caché local.
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 divide el forward pass en tiles solapados y funde de nuevo# las costuras; tile_pad es el halo que se añade alrededor de cada# tile antes de recortarlo de vuelta. Ambos son argumentos con# nombre solo de Python, no flags de la CLI.result = model("large-photo.jpg", tile=512, tile_pad=16, save=True)Un resultado de restauración no lleva cajas; result.restored es una imagen
RGB densa (H, W, 3) uint8, sobre un lienzo 4x el de entrada en cada
dimensión. save=True escribe esa imagen directamente en lugar de un gráfico
anotado. La entrada se rellena hasta un múltiplo de 8 en vez de redimensionarse,
así que la predicción se ejecuta a la resolución propia de la foto; una fuente
más grande de lo que permite la memoria se puede dividir con tile y
tile_pad, que funden de nuevo las costuras de los tiles en la salida. Consulta
predicción para fuentes, streaming y manejo de resultados.
Variantes
Tres tamaños, todos fijos en un escalado 4x. s es el generador oficial
lightweight, con cuatro etapas de bloque residual Swin Transformer (RSTB) y
upsampling pixel-shuffle directo. m y l son los generadores real-world
medium y large, con seis y nueve etapas RSTB y un upsampler de vecino más
cercano más convolución construido para degradaciones del mundo real y no solo
para la reducción bicúbica.
Validación
val() mide PSNR y SSIM entre la salida restaurada y una imagen objetivo
limpia, ambas calculadas en RGB sobre el lienzo original, sin recorte de bordes
y sin redimensionar. SSIM usa una ventana gaussiana de 11x11 con sigma 1.5,
promediada sobre los tres canales de color.
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.yamlEl argumento de dataset es un YAML que empareja un directorio de imágenes de entrada degradadas con un directorio de imágenes objetivo limpias de la misma resolución; consulta formatos de dataset para las claves exactas.
Exportación
| Tarea | ONNX | TorchScript | ExecuTorch | TensorRT | OpenVINO | Paddle | MNN | RKNN | ncnn | TFLite | CoreML | Core AI |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| restore | restore to ONNX: compatible | restore to TorchScript: compatible | restore to ExecuTorch: no compatible | restore to TensorRT: compatible | restore to OpenVINO: compatible | restore to Paddle: no compatible | restore to MNN: no compatible | restore to RKNN: no compatible | restore to ncnn: no compatible | restore to TFLite: compatible | restore to CoreML: no compatible | restore to Core AI: no compatible |
Un artefacto exportado se vuelve a cargar con LibreYOLO() según su extensión
de archivo, así que un archivo .onnx o .engine se comporta como un
checkpoint y devuelve el mismo Results. ExecuTorch y todos los formatos que
la matriz marca como bloqueados no están disponibles para esta familia; ONNX,
TorchScript, TensorRT, OpenVINO y TFLite sí lo están. Exportación
enumera los argumentos que acepta cada formato y los extras que añaden unos
pocos.
from libreyolo import LibreYOLO model = LibreYOLO("LibreSwinIRm-restore.pt") # si se omite, imgsz toma por defecto un tamaño de patch interno# pequeño, no tu resolución de trabajo, así que pasa el tamaño que# tu despliegue le da realmente al modelo.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 # La factoría enruta según la extensión del archivo, así que un# artefacto exportado se carga como cualquier checkpoint y devuelve# el mismo objeto Results.model = LibreYOLO("LibreSwinIRm-restore.onnx")result = model(SAMPLE_IMAGE) print(result.restored.array.shape)Checkpoints
Todos los archivos de pesos publicados de esta familia.
| Archivo | Entrada (px) | Licencia de los pesos |
|---|---|---|
| restore | ||
| LibreSwinIRs-restore.pt | apache-2.0 | |
| LibreSwinIRm-restore.pt | apache-2.0 | |
| LibreSwinIRl-restore.pt | apache-2.0 | |
Todos los archivos anteriores existen hoy en la organización de LibreYOLO y se descargan la primera vez que se usan.
Licencia
Comprueba la licencia en el repositorio de Hugging Face de los pesos concretos que descargues. Cada checkpoint de la organización de LibreYOLO incluye una, y no siempre es la misma en toda una familia. Ese repositorio es la fuente autorizada; el resumen siguiente describe qué se aplicaba cuando se verificó esta página por última vez.
Esta es una descripción de las licencias implicadas, no asesoramiento legal. Si la respuesta es importante a nivel comercial, lee las licencias y busca tu propio asesoramiento.
- Trabajo original
- SwinIR, Computer Vision Lab, ETH Zurich
- Licencia del proyecto original
- Apache-2.0
- Fuente del proyecto original
- github.com/JingyunLiang/SwinIR
- Código de LibreYOLO
- MIT
- Pesos
- Apache-2.0, republicados en huggingface.co/LibreYOLO
- Interpretación
- 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.
Cita
@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}
}Copiado del bloque de cita de los autores en github.com/JingyunLiang/SwinIR#citation.