超分辨率重建测试(DASR)

测试链接:GitHub - LongguangWang/DASR: [CVPR 2021] Unsupervised Degradation Representation Learning for Blind Super-Resolutionhttps://github.com/LongguangWang/DASR

 0.环境

windows10系统,python3.7.0,我这个是pytorch的虚拟环境,我这边基环境是CUDA11.1,python3.7.3,为了不破坏原有环境,建议你们也装虚拟环境

超分辨率重建测试(DASR)_第1张图片

这个环境有点老了,但请务必保持一致,新版本跑不了,尤其pytorch的版本不能大于1.1.0,至少我测试的是这个版本,在问答里原作者也说了版本号,在虚拟环境安装好以后,最好通过:

conda install pytorch==1.1.0 torchvision==0.3.0 -c pytorch -c conda-forge  的方式安装训练环境,这样会自动为你配置CUDA10.0。

1.数据准备

超分辨率重建测试(DASR)_第2张图片

我的数据是人脸,我框出来的部分是代码识别的标识,最好一致,不然要去改代码,反正图片放自己的就行了。数据准备好基本就可以训练了。

2.训练

python .\main.py --dir_data=./datasets/ --model=blindsr --scale=4 --blur_type=aniso_gaussian --noise=25.0 --lambda_min=0.2 --lambda_max=4.0

参数的意义在option.py文件里面已经有说明了,这里就不多说了,这里再次强调下,如果不想改代码,数据的路径./datasets(这是我的存放位置)里面文件必须是DF2K/HR

scale 这里4的意思就是最后模型预测的时候你给256的图像,输出的是1024大小的图像

blur_type的意思是你给的数据集会处理成对应的低质量图像,并且和你的数据集一起放进模型训练,这也是这篇文章无监督的体现,只需要给训练图,标签自动生成,生成方式给了几种在option.py中也有说明的

另外训练结果如模型、参数配置等文件都会自动创建,在./experiment中

训练过程的样子:

超分辨率重建测试(DASR)_第3张图片

 3.预测

python quick_test.py ----img_dir=./datasets/test_lr/0.png --scale=4 --resume=197 --blur_type=aniso_gaussian

这里采用quick_test.py快速测试单张图片的效果,输出位置自动存到训练时创建的文件中,resume给的是epoch值,也就是用哪一个epoch的模型做预测,其它参数和训练时保持一致

超分辨率重建测试(DASR)_第4张图片

            超分辨率重建测试(DASR)_第5张图片

                                                         原图(1024*1024)

                                            超分辨率重建测试(DASR)_第6张图片

                                                          测试图(256*256)

                超分辨率重建测试(DASR)_第7张图片

                                                       测试图resize(1024*1024)

                超分辨率重建测试(DASR)_第8张图片

                                                         预测输出图(1024*1024) 

                               超分辨率重建测试(DASR)_第9张图片

                             256低质量的测试图(左)与输出结果resize成256后(右)的对比

说明:测试图用的是欧美人脸,训练图用的是亚洲人脸,测试图是加了高斯噪声变模糊的,测试图生成的代码为

import os
import cv2
import numpy as np
 
path = './DASR-main/datasets/test/'
save = './DASR-main/datasets/test_lr/'
imgs = os.listdir(path)

for im in imgs:
    name = im.split('.')[0]
    im_full = os.path.join(path, im)
    img = cv2.imread(im_full)
    im_resize = cv2.resize(img, (256,256), interpolation=cv2.INTER_NEAREST)
    re_path = os.path.join(save,im)
    # cv2.imwrite(re_path,im_resize)
    save_full = os.path.join(save,im)
    im_ga = cv2.GaussianBlur(im_resize, (5, 5), 0)
    cv2.imwrite(save_full, im_ga)

结束:其实对比resize以后的图和预测输出图就很明显的看到,小图放大了肯定变模糊,而重建却基本能保证足够的清晰,多少还是有点效果的。和上一篇博客一样,这里用的也只是标准的高清正面照,而作者无监督的方式也是通过用高清训练数据人为降低了图像质量产生了对应的标签来训练模型,和自然状态下比如摄像头拍摄出的模糊图像还是有区别,后面再探索。

你可能感兴趣的:(python,pytorch,超分辨重建,超分辨率重建,r语言,人工智能)