Papier | Projekt
Dies ist eine inoffizielle Implementierung der Bild-Super-Auflösung durch iterative Verfeinerung (SR3) durch Pytorch .
Es gibt einige Implementierungsdetails, die sich von der Beschreibung des Papiers unterscheiden können, die sich aufgrund der fehlenden Details von der tatsächlichen SR3 -Struktur unterscheiden können. Insbesondere wir:
DDPM .DDPM .FilM im WaveGrad und einbetten Sie sie ohne affine Transformation ein. Wenn Sie nur hochskalten wollen
★★★ Neu: Die Follow-up-Palette-Image-zu-Image-Diffusion-Modelle ist jetzt verfügbar. Siehe die Details hier ★★★
HINWEIS: Wir setzen das Budget der maximalen Umkehrschritte auf Nvidia 1080Ti beschränkt, Bildrauschen und Farbtonabweichung erscheinen gelegentlich in hochauflösenden Bildern, was zu niedrigen Punktzahlen führt. Es gibt viel Platz für die Optimierung. Wir sind willkommen zu Beiträgen für umfangreichere Experimente und Codeverbesserungen.
| Aufgaben/Metriken | SSIM (+) | PSNR (+) | Fid (-) | Ist (+) |
|---|---|---|---|---|
| 16 × 16 -> 128 × 128 | 0,675 | 23.26 | - - | - - |
| 64 × 64 -> 512 × 512 | 0,445 | 19.87 | - - | - - |
| 128 × 128 | - - | - - | ||
| 1024 × 1024 | - - | - - |
![]() | ![]() | ![]() |
|---|
![]() | ![]() | ![]() |
|---|---|---|
![]() | ![]() | ![]() |
![]() | ![]() | ![]() |
|---|
pip install - r requirement . txtDieses Papier basiert auf "Denoising diffusion probabilistische Modelle", und wir bauen beide DDPM/SR3 -Netzwerkstrukturen auf, die Timesteps/Gamma als Modellbettinpuls verwenden. In unseren Experimenten kann das SR3 -Modell bessere visuelle Ergebnisse mit den gleichen umgekehrten Schritten und Lernrate erzielen. Sie können die JSON -Dateien mit kommentierten Suffix -Namen auswählen, um die verschiedenen Modelle zu trainieren.
| Aufgaben | Plattform (Code: QWER) |
|---|---|
| 16 × 16 -> 128 × 128 auf ffhq -celebahq | Google Drive | Baidu Yun |
| 64 × 64 -> 512 × 512 auf ffhq -celebahq | Google Drive | Baidu Yun |
| 128 × 128 Gesichtserzeugung auf 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 ]Wenn Sie die Daten nicht hatten, können Sie diese durch folgende Schritte vorbereiten:
Laden Sie den Datensatz herunter und bereiten Sie ihn im LMDB- oder PNG -Format mit dem Skript vor.
# 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 - lAnschließend müssen Sie die Datasets -Konfiguration in Ihren Datenpfad und Bildauflösung ändern:
"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
}
},Sie können Ihre Bilddaten auch verwenden, indem Sie Schritte ausagen, und wir haben einige Beispiele im Datensatzordner.
Zuerst sollten Sie das Bilderlayout wie dieses organisieren. Dieser Schritt kann durch data/prepare_data.py automatisch abgeschlossen werden:
# 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 - lHinweis: Das obige Skript kann verwendet werden, unabhängig davon, ob Sie die hochauflösenden Vanille-Bilder haben oder nicht.
Anschließend müssen Sie die Datensatzkonfiguration in Ihren Datenpfad und Bildauflösung ändern:
"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 ] Legen Sie den Bildpfad in Own Data fest und führen Sie das Skript aus:
# run the script
python infer . py - c [ config file ]Die Bibliothek unterstützt nun die Experimentverfolgung, die Modellprüfung und die Visualisierung der Modellvorhersage mit Gewichten und Verzerrungen. Sie müssen W & B und Anmeldung mit Ihrem Zugriffstoken installieren.
pip install wandb
# get your access token from wandb.ai/authorize
wandb login
W & B -Protokollierungsfunktionalität wird den Dateien sr.py , sample.py und infer.py hinzugefügt. Sie können -enable_wandb übergeben, um mit der Protokollierung zu beginnen.
-log_wandb_ckpt : Übergeben Sie dieses Argument zusammen mit -enable_wandb , um Modell -Checkpoints als W & B -Artefakte zu speichern. Sowohl sr.py als auch sample.py ist mit Modellprüfungen aktiviert.-log_eval : Übergeben Sie dieses Argument zusammen mit -enable_wandb , um das Bewertungsergebnis als interaktive W & B -Tabellen zu speichern. Beachten Sie, dass mit dieser Funktion nur sr.py aktiviert ist. Wenn Sie sample.py im Evaly -Modus ausführen, werden die generierten Bilder automatisch als Bildmedienfeld protokolliert.-log_infer : Während des Ausführens infer.py passieren dieses Argument zusammen mit -enable_wandb , um die Inferenzergebnisse als interaktive W & B -Tabellen zu protokollieren.Hier finden Sie mehr über die Verwendung dieser Funktionen.
Unsere Arbeit basiert auf folgenden theoretischen Werken:
Darüber hinaus profitieren wir viel aus den folgenden Projekten: