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.

bash
pip install libreyolo

Predição

Os pesos são baixados do Hugging Face no primeiro uso e ficam em cache local.

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
Por blocos (tiles), para imagens grandes
from 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.

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

O 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

TarefaONNXTorchScriptExecuTorchTensorRTOpenVINOPaddleMNNRKNNncnnTFLiteCoreMLCore AI
restorerestore to ONNX: compatívelrestore to TorchScript: compatívelrestore to ExecuTorch: incompatívelrestore to TensorRT: compatívelrestore to OpenVINO: compatívelrestore to Paddle: incompatívelrestore to MNN: incompatívelrestore to RKNN: incompatívelrestore to ncnn: incompatívelrestore to TFLite: compatívelrestore to CoreML: incompatívelrestore 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.

Python
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)
CLI
libreyolo export model=LibreSwinIRm-restore.pt format=onnx imgsz=512
Usar o arquivo exportado
from 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.

ArquivoEntrada (px)Licença dos pesos
restore
LibreSwinIRs-restore.ptapache-2.0
LibreSwinIRm-restore.ptapache-2.0
LibreSwinIRl-restore.ptapache-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.

Verificado com o LibreYOLO v1.5.0. As tabelas de suporte, os checkpoints e os números de benchmark desta página são gerados a partir da biblioteca lançada e dos pesos publicados, não escritos à mão.