Бумага | Проект
Это неофициальная реализация супер-разрешения изображения посредством итеративной уточнения (SR3) Pytorch .
Есть некоторые детали реализации, которые могут отличаться от описания статьи, которые могут отличаться от фактической структуры SR3 из -за отсутствующих деталей. В частности, мы:
DDPM .DDPM .FilM в WaveGrad , и встраивает ее без аффинной трансформации. Если вы просто хотите высококлажаться
★ ★ ★ Новая: последующая палитра-изображение-изображение-диффузионные модели теперь доступны; Смотрите детали здесь ★★★
Примечание. Мы устанавливаем максимальный бюджет обратных шагов на Nvidia 1080Ti , шум изображения и отклонение оттенка иногда появляются на изображениях с высоким разрешением, что приводит к низким оценкам. Есть много места для оптимизации. Мы приветствуем любые взносы для более обширных экспериментов и улучшений кода.
| Задачи/метрики | Ssim (+) | PSNR (+) | Фид (-) | IS (+) |
|---|---|---|---|---|
| 16 × 16 -> 128 × 128 | 0,675 | 23.26 | - | - |
| 64 × 64 -> 512 × 512 | 0,445 | 19.87 | - | - |
| 128 × 128 | - | - | ||
| 1024 × 1024 | - | - |
![]() | ![]() | ![]() |
|---|
![]() | ![]() | ![]() |
|---|---|---|
![]() | ![]() | ![]() |
![]() | ![]() | ![]() |
|---|
pip install - r requirement . txtЭта статья основана на «вероятностных моделях диффузии диффузии», и мы строим обе сетевые структуры DDPM/SR3, которые используют временные рамки/гамма в качестве ввода модели, соответственно. В наших экспериментах модель SR3 может достичь лучших визуальных результатов с теми же обратными этапами и скоростью обучения. Вы можете выбрать файлы JSON с аннотированными именами суффиксов для обучения различных моделей.
| Задачи | Платформа (код : QWER) |
|---|---|
| 16 × 16 -> 128 × 128 на FFHQ -CELEBAHQ | Google Drive | Baidu Yun |
| 64 × 64 -> 512 × 512 на FFHQ -CELEBAHQ | Google Drive | Baidu Yun |
| 128 × 128 Генерация лица на 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 ]Если у вас не было данных, вы можете подготовить их к следующим шагам:
Загрузите набор данных и подготовьте его в формате LMDB или PNG , используя скрипт.
# 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 - lЗатем вам нужно изменить конфигурацию наборов данных на свой путь данных и разрешение изображений:
"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
}
},Вы также можете использовать данные изображения, выполняющие следующие шаги, и у нас есть несколько примеров в папке набора данных.
Сначала вы должны организовать макет изображений, как это, этот шаг может быть завершен data/prepare_data.py автоматически:
# 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 - lПримечание. Выше сценарий можно использовать независимо от того, есть ли у вас ванильные изображения с высоким разрешением или нет.
Затем вам нужно изменить конфигурацию набора данных на свой путь данных и разрешение изображений:
"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 ] Установите путь изображения, как шаги в Own Data , затем запустите скрипт:
# run the script
python infer . py - c [ config file ]В настоящее время библиотека поддерживает отслеживание экспериментов, модели контрольной точки и визуализацию прогнозирования модели с весами и смещениями. Вам нужно будет установить W & B и входить в систему, используя токен доступа.
pip install wandb
# get your access token from wandb.ai/authorize
wandb login
Функциональность журнала W & B добавляется в файлы sr.py , sample.py и infer.py . Вы можете пройти -enable_wandb , чтобы начать регистрацию.
-log_wandb_ckpt : передать этот аргумент вместе с -enable_wandb , чтобы сохранить модель контрольно -пропускных пунктов как артефакты W & B. Как sr.py , так и sample.py включены с моделью контрольной точки.-log_eval : пройти этот аргумент вместе с -enable_wandb , чтобы сохранить результат оценки в виде интерактивных таблиц W & B. Обратите внимание, что только sr.py включен с помощью этой функции. Если вы запускаете sample.py в режиме Eval, сгенерированные изображения будут автоматически регистрироваться как панель Media Media.-log_infer : при запуске infer.py пройдите этот аргумент вместе с -enable_wandb , чтобы регистрировать результаты вывода в виде интерактивных таблиц W & B.Вы можете найти больше об использовании этих функций здесь.
Наша работа основана на следующих теоретических работах:
Кроме того, мы получаем большую пользу от следующих проектов: