一、ESRGAN测试:
1、代码下载:xinntao / ESRGAN
2、安装环境(这里略)
3、下载models:Google Drive or Baidu Drive. 然后把它们放在./models文件夹下面。
4、 然后运行test.py,就会将LR文件夹的低分辨率图像生成X4(可更改model)的高分辨率图像存在results文件夹内
二、ESRGAN训练
1、代码下载xinntao / BasicSR
2、下载预训练模型,下载数据集DIV2K,或者其他常见图像超分数据集
3、运行scripts/data_preparation/extract_subimages.py (DIV2K 数据集 2K 分辨率的 (比如: 2048x1080), 而我们在训练的时候往往并不要那么大 (常见的是 128x128 或者 192x192 的训练patch). )把2K的图片裁剪成有overlap的 480x480 的子图像块,这里放在文件夹HR_sub目录下。然后使用以下代码将HR_sub里面的图都缩小四倍,放至LR_bicubic目录下
import os
import PIL.Image as pil_image
img_dir = r"./HR_sub"
save_dir = r"./LR_bicubic"
imgs = os.listdir(img_dir)
for i in range(len(imgs)):
img_path = os.path.join(img_dir, imgs[i])
print()
image = pil_image.open(img_path).convert('RGB')
image = image.resize((int(image.width / 4), int(image.height / 4)), resample=pil_image.BICUBIC)
save_path = os.path.join(save_dir, imgs[i])
# image.save(save_path.replace('.', '_bicubic_x{}.'.format(4)))
image.save(save_path)
3、更改配置文件options/train/ESRGAN/train_ESRGAN_x4.yml里面,train下面的dataroot_gt和dataroot_lq目录,val目录也得修改。然后根据需要修改训练参数,主要是尺寸和batch_size.
然后就可以开始训练了,这里训练过程忘记截图了!
----------------------------------------------2021.04.18更新--------------------------------------------
三、ESRGAN训练自己的数据
1、代码准备不说了
2、自己准备数据,ESRGAN_HR(为训练所需要的高分辨图像,因为我的gt_size=128且scale=4,所以所有的HR图像尺寸都大于128且高宽都能被4整除不然会报错~)
ESRGAN_LR(HR图像使用Bicubic降采样为1/4大小)
3、训练PSNR模型,更改BasicSR目录下的options/train/ESRGAN/train_RRDBNet_PSNR_x4.yml配置文件。(这里我只更改了训练和验证目录)
训练完成得到的PSNR模型在BasicSR目录下的experiments/...目录下
4、训练ESRGAN的G网络
更改BasicSR目录下的options/train/ESRGAN/train_ESRGAN_x4.yml配置文件。(这里我只更改了训练和验证目录,和上面类似)
然后将其path下的pretrain_network_g目录更改为上面训练得到的panr模型(也可以直接用experiments/pretrain_models下的预训练模型)
.......
5、使用训练好的ESRGAN的G网络生成高分辨率
运行代码为:BasicSR目录下的inference/inference_esrgan.py
将--model_path路径更改为(../../models/net_g_185000.pth),再将--folder路径更改为自己要进行超分的图像路径,这里自己可以再更改代码,添加保存路径。
—————————————————————————————————————————————
另外:
这个BasicSR代码我在windows和ubuntu上都运行过;
曾经试过缩放比例为2倍,gt_size设置为64,可是报错了,暂未解决,若有好心人知道可以解惑啦
本人也不是特别懂,也只自学了一段时间用来做了些验证,若有不妥还请指正!