Papel | Projeto
Esta é uma implementação não oficial da super resolução de imagem por meio de refinamento iterativo (SR3) por Pytorch .
Existem alguns detalhes da implementação que podem variar da descrição do artigo, que podem ser diferentes da estrutura real SR3 devido a detalhes ausentes. Especificamente, nós:
DDPM .DDPM .FilM fez em WaveGrad , e incorporá -la sem transformação afim. Se você só quer sofrer uma escala
★★★ Novo: os modelos de acompanhamento da paleta de imagens para imagens de difusão estão agora disponíveis; Veja os detalhes aqui ★★★
Nota: Definimos o orçamento máximo de etapas reversas para Nvidia 1080Ti , o ruído da imagem e o desvio da matiz ocasionalmente aparecem em imagens de alta resolução, resultando em pontuações baixas. Há muito espaço para otimização. Somos bem -vindos a quaisquer contribuições para experimentos e aprimoramentos de código mais extensos.
| Tarefas/métricas | SSIM (+) | PSNR (+) | Fid (-) | É (+) |
|---|---|---|---|---|
| 16 × 16 -> 128 × 128 | 0,675 | 23.26 | - | - |
| 64 × 64 -> 512 × 512 | 0,445 | 19.87 | - | - |
| 128 × 128 | - | - | ||
| 1024 × 1024 | - | - |
![]() | ![]() | ![]() |
|---|
![]() | ![]() | ![]() |
|---|---|---|
![]() | ![]() | ![]() |
![]() | ![]() | ![]() |
|---|
pip install - r requirement . txtEste artigo é baseado em "modelos probabilísticos de difusão de denoising" e construímos as estruturas de rede DDPM/SR3, que usam Timsteps/Gamma como entradas de incorporação de modelo, respectivamente. Em nossos experimentos, o modelo SR3 pode obter melhores resultados visuais com as mesmas etapas reversas e taxa de aprendizado. Você pode selecionar os arquivos JSON com nomes de sufixo anotados para treinar os diferentes modelos.
| Tarefas | Plataforma (Código: Qwer) |
|---|---|
| 16 × 16 -> 128 × 128 em FFHQ -CELEBAHQ | Google Drive | Baidu Yun |
| 64 × 64 -> 512 × 512 no FFHQ -CELEBAHQ | Google Drive | Baidu Yun |
| 128 × 128 geração de face no FFHQ | Google Drive | Baidu Yun |
# Download the pretrained model and edit [sr|sample]_[ddpm|sr3]_[resolution option].json about "resume_state":
"resume_state" : [ your pretrained model ' s path ]Se você não tinha os dados, pode prepará -los seguindo as etapas:
Faça o download do conjunto de dados e prepare -o no formato LMDB ou PNG usando o script.
# Resize to get 16×16 LR_IMGS and 128×128 HR_IMGS, then prepare 128×128 Fake SR_IMGS by bicubic interpolation
python data / prepare_data . py - - path [ dataset root ] - - out [ output root ] - - size 16 , 128 - lEntão você precisa alterar a configuração dos conjuntos de dados para o caminho dos dados e a resolução da imagem:
"datasets" : {
"train" : {
"dataroot" : " dataset/ffhq_16_128 " , // [output root] in prepare.py script
"l_resolution" : 16 , // low resolution need to super_resolution
"r_resolution" : 128 , // high resolution
"datatype" : " lmdb " , //lmdb or img, path of img files
},
"val" : {
"dataroot" : " dataset/celebahq_16_128 " , // [output root] in prepare.py script
}
},Você também pode usar os dados da sua imagem seguindo as etapas e temos alguns exemplos na pasta do conjunto de dados.
No começo, você deve organizar o layout das imagens como este, esta etapa pode ser concluída por data/prepare_data.py automaticamente:
# set the high/low resolution images, bicubic interpolation images path
dataset/celebahq_16_128/
├── hr_128 # it's same with sr_16_128 directory if you don't have ground-truth images.
├── lr_16 # vinilla low resolution images
└── sr_16_128 # images ready to super resolution # super resolution from 16 to 128
python data / prepare_data . py - - path [ dataset root ] - - out celebahq - - size 16 , 128 - lNota: O script acima pode ser usado se você tem imagens de alta resolução de baunilha ou não.
Então você precisa alterar a configuração do conjunto de dados para o caminho de dados e a resolução da imagem:
"datasets" : {
"train|val" : { // train and validation part
"dataroot" : " dataset/celebahq_16_128 " ,
"l_resolution" : 16 , // low resolution need to super_resolution
"r_resolution" : 128 , // high resolution
"datatype" : " img " , //lmdb or img, path of img files
}
}, # Use sr.py and sample.py to train the super resolution task and unconditional generation task, respectively.
# Edit json files to adjust network structure and hyperparameters
python sr . py - p train - c config / sr_sr3 . json # Edit json to add pretrain model path and run the evaluation
python sr . py - p val - c config / sr_sr3 . json
# Quantitative evaluation alone using SSIM/PSNR metrics on given result root
python eval . py - p [ result root ] Defina o caminho da imagem como etapas em Own Data e execute o script:
# run the script
python infer . py - c [ config file ]A biblioteca agora suporta rastreamento de experimentos, verificação de modelo e visualização de previsão de modelos com pesos e vieses. Você precisará instalar o W&B e o login usando seu token de acesso.
pip install wandb
# get your access token from wandb.ai/authorize
wandb login
A funcionalidade de log W&B é adicionada aos arquivos sr.py , sample.py e infer.py . Você pode passar -enable_wandb para iniciar o log.
-log_wandb_ckpt : passe este argumento junto com -enable_wandb para salvar pontos de verificação do modelo como artefatos W&B. sr.py e sample.py estão ativados com o check -inging de modelo.-log_eval : passe este argumento junto com -enable_wandb para salvar o resultado da avaliação como tabelas interativas W&B. Observe que apenas sr.py está ativado com esse recurso. Se você executar sample.py no modo de avaliação, as imagens geradas serão automaticamente registradas como painel de mídia de imagem.-log_infer : enquanto executa infer.py Passe esse argumento junto com -enable_wandb para registrar os resultados da inferência como tabelas interativas W&B.Você pode encontrar mais sobre o uso desses recursos aqui.
Nosso trabalho é baseado nos seguintes trabalhos teóricos:
Além disso, estamos nos beneficiando muito dos seguintes projetos: