Papel | Projeto
Esta é uma implementação não oficial da paleta: modelos de difusão de imagem a imagem por Pytorch e é herdado principalmente de sua versão de super-resolução, imagem-super-resolução-revolução-refinamento. O modelo de código é do meu outro projeto de semente: Distributed-Pytorch-Template.
Existem alguns detalhes da implementação com descrições de papel:
Guided-Diffusion , que dão um impulso substancial à qualidade da amostra.DDPM de baunilha.Palette e incorporá -la com transformação afim.Palette . Eu tento terminar as seguintes tarefas em ordem:
O experimento de acompanhamento é incerto, devido à falta de tempo e aos recursos da GPU:
O modelo DDPM requer recursos computacionais significativos, e construímos apenas alguns modelos de exemplo para validar as idéias neste artigo.
Resultados com 200 épocas e iterações de 930k, e as 100 primeiras amostras em máscara central e máscara irregular.
![]() | ![]() |
|---|
Resultados com 16 épocas e iterações de 660k, e as várias amostras escolhidas na máscara central.
![]() | ![]() | ![]() | ![]() |
|---|---|---|---|
![]() | ![]() | ![]() | ![]() |
Resultados com 8 épocas e iterações de 330k, e as várias amostras escolhidas em desbropping.
![]() | ![]() |
|---|
| Tarefas | Conjunto de dados | Ema | Fid (-) | É (+) |
|---|---|---|---|---|
| Pintando com a Máscara de Centração | Celeba-HQ | Falso | 5.7873 | 3.0705 |
| Passando com máscara irregular | Celeba-HQ | Falso | 5.4026 | 3.1221 |
pip install - r requirements . txt| Conjunto de dados | Tarefa | Iterações | GPUS × Days × Bs | Url |
|---|---|---|---|---|
| Celeba-HQ | Painting | 930K | 2 × 5 × 3 | Google Drive |
| Places2 | Painting | 660K | 4 × 8 × 10 | Google Drive |
BS indica o tamanho da amostra por GPU.
Recebemos a maioria deles de Kaggle, que pode ser um pouco diferente da versão oficial, e você também pode baixá -los no site oficial.
Utilizamos a divisão padrão desses conjuntos de dados para treinamento e avaliação. As listas de arquivos que usamos podem ser encontradas no Celeba-HQ, Places2.
Depois de preparar os dados próprios, você precisa modificar o arquivo de configuração correspondente para apontar para seus dados. Tome o seguinte como exemplo:
" which_dataset " : { // import designated dataset using arguments
" name " : ["data.dataset", "InpaintDataset"], // import Dataset() class
" args " :{ // arguments to initialize dataset
" data_root " : " your data path " ,
" data_len " : -1,
" mask_mode " : " hybrid "
}
}, Mais opções sobre Dataloader e Split de validação também podem ser encontradas nos datasets em parte do arquivo de configuração.
resume_state do arquivo de configuração no diretório do ponto de verificação anterior. Tome o seguinte como exemplo, este diretório contém estados de treinamento e modelo salvo: " path " : { //set every part file path
" resume_state " : "experiments/inpainting_celebahq_220426_150122/checkpoint/100"
},load_everything of model.py , o padrão é uma rede . Siga as configurações do tutorial, os otimizadores e modelos serão carregados em 100.State e 100_Network.PTH, respectivamente. netG_label = self . netG . __class__ . __name__
self . load_network ( network = self . netG , network_label = netG_label , strict = False ) python run . py - p train - c config / inpainting_celebahq . json Testamos o backbone da rede U usada no SR3 e Guided Diffusion , e Guided Diffusion é um desempenho mais robusto em nossos experimentos atuais. Mais opções sobre backbone , perda e métrica podem ser encontradas na which_networks parte do arquivo de configuração.
python run . py - p test - c config / inpainting_celebahq . jsonCrie duas pastas salvando imagens da verdade do solo e imagens de amostra, e seus nomes de arquivos precisam corresponder um ao outro.
Execute o script:
python eval . py - s [ ground image path ] - d [ sample image path ]Nosso trabalho é baseado nos seguintes trabalhos teóricos:
E estamos nos beneficiando muito dos seguintes projetos: