Real-ESRGAN
Um upscaler de super-resolução cega voltado para uso prático, treinado com degradações sintéticas em vez de apenas redução bicúbica. O LibreYOLO inclui inferência e validação para seus checkpoints 4x, 2x e 4x rápido.
- Tarefas
- restore
- Tamanhos
- x4, x2, x4t 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
- Real-ESRGAN por Tencent ARC Lab and Shenzhen Institutes of Advanced Technology, Chinese Academy of Sciences, BSD-3-Clause. Artigo, código-fonte
- Licenças
- Código Apache-2.0 and BSD-3-Clause, pesos BSD-3-Clause. Uso comercial
Instalação
O Real-ESRGAN 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("LibreRealESRGANx4-restore.pt")result = model(SAMPLE_IMAGE, save=True) restored = result.restoredprint(restored.array.shape, restored.array.dtype)libreyolo predict model=LibreRealESRGANx4-restore.pt source=https://raw.githubusercontent.com/LibreYOLO/libreyolo/release/libreyolo/assets/parkour.jpg save=Truefrom libreyolo import LibreYOLO model = LibreYOLO("LibreRealESRGANx4-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=10, save=True)Um resultado de restauração não carrega boxes; result.restored é uma imagem
RGB densa (H, W, 3) uint8, em um canvas Results.restore_scale vezes o da
entrada em cada dimensão. save=True grava essa imagem direto, em vez de um
plot anotado. A entrada é convertida para RGB e qualquer canal alfa é
descartado. 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 checkpoints, nomeados pelo seu fator de aumento de escala. x4 é RRDBNet
(RealESRGAN_x4plus), 23 blocos densos residual-in-residual, o padrão de
qualidade em 4x. x2 é a mesma arquitetura RRDBNet em 2x. x4t é
SRVGGNetCompact (realesr-general-x4v3), um gerador menor e mais rápido,
feito para vídeo e usos de menor latência em 4x. O modelo de propósito geral
do projeto original também inclui uma rede pareada de força de remoção de
ruído, misturada no momento da inferência; esse controle de força não faz
parte deste port, que roda o gerador x4t base.
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("LibreRealESRGANx4-restore.pt")metrics = model.val(data="my-restore-dataset.yaml") print(metrics["metrics/PSNR"])print(metrics["metrics/SSIM"])libreyolo val model=LibreRealESRGANx4-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: compatí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: compatível | restore to TFLite: compatível | restore to CoreML: incompatível | restore to Core AI: compatí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. Exportação lista os argumentos que
todo formato aceita e os extras que alguns poucos adicionam.
from libreyolo import LibreYOLO model = LibreYOLO("LibreRealESRGANx4-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=LibreRealESRGANx4-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("LibreRealESRGANx4-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 | ||
| LibreRealESRGANx4t-restore.pt | bsd-3-clause | |
| LibreRealESRGANx4-restore.pt | bsd-3-clause | |
| LibreRealESRGANx2-restore.pt | bsd-3-clause | |
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
- Real-ESRGAN, Tencent ARC Lab and Shenzhen Institutes of Advanced Technology, Chinese Academy of Sciences
- Licença original
- BSD-3-Clause
- Código-fonte original
- github.com/xinntao/Real-ESRGAN
- Código do LibreYOLO
- MIT
- Pesos
- BSD-3-Clause, republicado em huggingface.co/LibreYOLO
- Interpretação
- BSD-3-Clause is a permissive license, so these weights can be used in commercial and closed-source products. It asks you to keep the copyright notice, the condition list and the disclaimer with any copy you redistribute, in source or compiled form, and its third clause forbids using the names of Xintao Wang or the project's contributors to endorse or promote a derived product without separate written permission. It carries no patent grant, unlike Apache-2.0. LibreYOLO's checkpoints are format conversions of the official pretrained generators, with the learned parameters unchanged; Real-ESRGAN's training is a GAN over a synthetic degradation pipeline that is not wired into this library, so there is no LibreYOLO-trained variant to license separately.
Citação
@InProceedings{wang2021realesrgan,
author = {Xintao Wang and Liangbin Xie and Chao Dong and Ying Shan},
title = {Real-ESRGAN: Training Real-World Blind Super-Resolution with Pure Synthetic Data},
booktitle = {International Conference on Computer Vision Workshops (ICCVW)},
date = {2021}
}Copiado do bloco de citação dos autores em github.com/xinntao/Real-ESRGAN#bibtex.