SwinIR
Uma rede Swin Transformer para restauração de imagens. O LibreYOLO inclui inferência e validação para seus checkpoints de super-resolução em 4x: o gerador lightweight oficial e os geradores médio e grande para mundo real.
- Tarefas
- restore
- Tamanhos
- s, m, l at 64 px
- Instalação
pip install libreyolo- Nível de suporte
- Somente inferência, desde a v. Somente predição, validação e exportação. Os recursos de treinamento não se aplicam.
- Origem
- SwinIR por Computer Vision Lab, ETH Zurich, Apache-2.0. Artigo, código-fonte
- Licenças
- Código Apache-2.0, pesos Apache-2.0. Uso comercial
Instalação
O SwinIR não precisa de nenhum extra opcional. Tudo o que ele importa está na instalação base.
pip install libreyoloPredição
Os pesos são baixados do Hugging Face no primeiro uso e ficam em cache 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 o forward pass em tiles sobrepostos e funde as# emendas de volta; tile_pad é o halo adicionado ao redor de cada# tile antes de ele ser recortado de volta. Ambos são argumentos# nomeados só do Python, não flags da CLI.result = model("large-photo.jpg", tile=512, tile_pad=16, save=True)Um resultado de restauração não carrega boxes; result.restored é uma imagem
RGB densa (H, W, 3) uint8, em um canvas 4x o da entrada em cada dimensão.
save=True grava essa imagem direto, em vez de um plot anotado. A entrada
recebe padding até um múltiplo de 8 em vez de ser redimensionada, então a
predição roda na resolução original da foto; uma fonte maior do que a memória
permite pode ser dividida com tile e tile_pad, que fundem as emendas dos
tiles de volta na saída. Veja predição para fontes, streaming
e tratamento de resultados.
Variantes
Três tamanhos, todos fixos em um aumento de escala de 4x. s é o gerador
lightweight oficial, com quatro estágios de residual Swin Transformer block
(RSTB) e upsampling pixel-shuffle direto. m e l são os geradores médio e
grande para mundo real, com seis e nove estágios RSTB e um upsampler de
vizinho mais próximo mais convolução, feito para degradações do mundo real e
não apenas para redução bicúbica.
Validação
val() mede PSNR e SSIM entre a saída restaurada e uma imagem alvo limpa,
ambas calculadas em RGB no canvas original, sem recorte de borda e sem
redimensionamento. O SSIM usa uma janela gaussiana de 11x11 com sigma 1.5, com
média sobre os três canais de cor.
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.yamlO argumento de dataset é um YAML que pareia um diretório de imagens de entrada degradadas com um diretório de imagens alvo limpas de resolução equivalente; veja formatos de dataset para as chaves exatas.
Exportação
| Tarefa | ONNX | TorchScript | ExecuTorch | TensorRT | OpenVINO | Paddle | MNN | RKNN | ncnn | TFLite | CoreML | Core AI |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| restore | restore to ONNX: compatível | restore to TorchScript: compatível | restore to ExecuTorch: incompatível | restore to TensorRT: compatível | restore to OpenVINO: compatível | restore to Paddle: incompatível | restore to MNN: incompatível | restore to RKNN: incompatível | restore to ncnn: incompatível | restore to TFLite: compatível | restore to CoreML: incompatível | restore to Core AI: incompatível |
Um artefato exportado é carregado de volta por LibreYOLO() pelo sufixo do
arquivo, então um arquivo .onnx ou .engine se comporta como um checkpoint e
devolve o mesmo Results. O ExecuTorch e todo formato que a matriz marca como
bloqueado não estão disponíveis para esta família; ONNX, TorchScript, TensorRT,
OpenVINO e TFLite estão. Exportação lista os argumentos que todo
formato aceita e os extras que alguns poucos adicionam.
from libreyolo import LibreYOLO model = LibreYOLO("LibreSwinIRm-restore.pt") # quando omitido, imgsz assume um tamanho de patch interno pequeno,# não a sua resolução de trabalho, então passe o tamanho que o seu# deploy realmente entrega ao 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 # A factory roteia pelo sufixo do arquivo, então um artefato exportado# carrega como qualquer checkpoint e devolve o mesmo objeto Results.model = LibreYOLO("LibreSwinIRm-restore.onnx")result = model(SAMPLE_IMAGE) print(result.restored.array.shape)Checkpoints
Todos os arquivos de pesos publicados desta família.
| Arquivo | Entrada (px) | Licença dos pesos |
|---|---|---|
| restore | ||
| LibreSwinIRs-restore.pt | apache-2.0 | |
| LibreSwinIRm-restore.pt | apache-2.0 | |
| LibreSwinIRl-restore.pt | apache-2.0 | |
Todos os arquivos acima existem hoje na organização LibreYOLO e são baixados no primeiro uso.
Licenciamento
Confira a licença no repositório do Hugging Face correspondente aos pesos que você baixar. Cada checkpoint na organização LibreYOLO tem uma licença, e ela nem sempre é a mesma em toda a família. Esse repositório é a fonte oficial. O resumo abaixo descreve o que se aplicava na última verificação desta página.
Esta é uma descrição das licenças envolvidas, não uma orientação jurídica. Se a resposta tiver importância comercial, leia as licenças e procure sua própria assessoria.
- Trabalho original
- SwinIR, Computer Vision Lab, ETH Zurich
- Licença original
- Apache-2.0
- Código-fonte original
- github.com/JingyunLiang/SwinIR
- Código do LibreYOLO
- MIT
- Pesos
- Apache-2.0, republicado em huggingface.co/LibreYOLO
- Interpretação
- 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ção
@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 do bloco de citação dos autores em github.com/JingyunLiang/SwinIR#citation.