Papel | Proyecto
Esta es una implementación no oficial de la súper resolución de la imagen a través del refinamiento iterativo (SR3) por Pytorch .
Hay algunos detalles de implementación que pueden variar de la descripción del documento, que puede ser diferente de la estructura SR3 real debido a los detalles faltantes. Específicamente, nosotros:
DDPM .DDPM .FilM lo hizo en WaveGrad , y la incrustó sin transformación afina. Si solo quieres excluir
★★★ NUEVO: La paleta de seguimiento-imagen a la imagen-modelos de difusión ya está disponible; Vea los detalles aquí ★★★
Nota: Establecimos el presupuesto máximo de pasos inversos para Nvidia 1080Ti , el ruido de la imagen y la desviación del tono ocasionalmente aparecen en imágenes de alta resolución, lo que resulta en puntajes bajos. Hay mucho espacio para la optimización. Somos bienvenidos a cualquier contribución para experimentos más extensos y mejoras de código.
| Tareas/métricas | SSIM (+) | PSNR (+) | DEFENSOR(-) | Es (+) |
|---|---|---|---|---|
| 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 documento se basa en "modelos probabilísticos de difusión de difusión", y construimos estructuras de red DDPM/SR3, que utilizan TimesPs/Gamma como entradas de incrustación de modelo, respectivamente. En nuestros experimentos, el modelo SR3 puede lograr mejores resultados visuales con los mismos pasos inversos y la tasa de aprendizaje. Puede seleccionar los archivos JSON con nombres de sufijo anotados para entrenar los diferentes modelos.
| Tareas | Plataforma (Código: Qwer) |
|---|---|
| 16 × 16 -> 128 × 128 en FFHQ -Velebahq | Google Drive | Baidu Yun |
| 64 × 64 -> 512 × 512 en FFHQ -Velebahq | Google Drive | Baidu Yun |
| 128 × 128 Generación de cara en 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 ]Si no tenía los datos, puede prepararlos siguiendo pasos:
Descargue el conjunto de datos y prepárelo en formato LMDB o PNG usando 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 - lLuego debe cambiar la configuración de conjuntos de datos a su ruta de datos y resolución de imágenes:
"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
}
},También puede usar los datos de su imagen siguiendo los pasos, y tenemos algunos ejemplos en la carpeta del conjunto de datos.
Al principio, debe organizar el diseño de imágenes de esta manera, este paso puede ser terminado mediante data/prepare_data.py automáticamente:
# 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: El script anterior se puede utilizar si tiene las imágenes de alta resolución de vainilla o no.
Luego debe cambiar la configuración del conjunto de datos a su ruta de datos y su resolución de imagen:
"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 ] Establezca la ruta de imagen como pasos en Own Data , luego ejecute el script:
# run the script
python infer . py - c [ config file ]La biblioteca ahora admite el seguimiento del experimento, el punto de control del modelo y la visualización de predicción del modelo con pesos y sesgos. Deberá instalar W&B e iniciar sesión utilizando su token de acceso.
pip install wandb
# get your access token from wandb.ai/authorize
wandb login
La funcionalidad de registro de W&B se agrega a los archivos sr.py , sample.py e infer.py . Puede pasar -enable_wandb para comenzar a registrarse.
-log_wandb_ckpt : pase este argumento junto con -enable_wandb para guardar los puntos de control del modelo como artefactos W&B. Tanto sr.py como sample.py están habilitados con el punto de control del modelo.-log_eval : pase este argumento junto con -enable_wandb para guardar el resultado de la evaluación como tablas W&B interactivas. Tenga en cuenta que solo sr.py está habilitado con esta función. Si ejecuta sample.py en modo eval, las imágenes generadas se registrarán automáticamente como panel de medios de imagen.-log_infer : mientras se ejecuta infer.py pase este argumento junto con -enable_wandb para registrar los resultados de inferencia como tablas W&B interactivas.Puede encontrar más sobre el uso de estas funciones aquí.
Nuestro trabajo se basa en los siguientes trabajos teóricos:
Además, estamos beneficiando mucho de los siguientes proyectos: