目录
一、数据集的制作
二、模型的搭建
三、评价指标
四、训练与评估
由于代码能力较弱,以及对Super-resolution(SR)领域的模型理解不够深刻,打算从SR最基本的模型开始逐个学习,通过工程项目的学习来强化对知识的理解。我是做图像超分辨率重建方向的,主要用的是眼底图像。此篇文章是对本次学习的记录以及复盘。
-
数据集的制作
最开始上来就给我整蒙了,因为我理解的是直接把图片下载至文件夹,然后遍历文件夹即可,但是由于使用的代码是用图片制作成的h5文件。这里我们用了一个prepare.py来准备制作Train以及Test数据集的h5文件。
模块的引用:
import argparse
import glob
import h5py
import numpy as np
import PIL.Image as pil_image
from utils import convert_rgb_to_y
Train.h5的制作: 首先遍历原始图片的文件夹,转化为RGB格式,用scale参数去制作出一对高低分辨率的图像对,并将之转换为亮度通道(YCrCb中的Y), Y通道可以被认为是对人类视觉最为重要的,因为它包含了图像的亮度信息,而人类视觉系统对亮度的敏感度要高于颜色.
def train(args):
h5_file = h5py.File(args.output_path, 'w')
lr_patches = []
hr_patches = []
for image_path in sorted(glob.glob('{}/*'.format(args.images_dir))):
hr = pil_image.open(image_path).convert('RGB')
hr_width = (hr.width // args.scale) * args.scale
hr_height = (hr.height // args.scale) * args.scale
hr = hr.resize((hr_width, hr_height), resample=pil_image.BICUBIC)
lr = hr.resize((hr_width // args.scale, hr_height // args.scale), resample=pil_image.BICUBIC)
lr = lr.resize((lr.width * args.scale, lr.height * args.scale), resample=pil_image.BICUBIC)
hr = np.array(hr).astype(np.float32)
lr = np.array(lr).astype(np.float32)
hr = convert_rgb_to_y(hr)
lr = convert_rgb_to_y(lr)
for i in range(0, lr.shape[0] - args.patch_size + 1, args.stride):
'''这行代码遍历低分辨率图像的高度维度。range 函数从 0 开始,到 lr.shape[0] - args.patch_size + 1 结束(不包括后者),每次增加 args.stride。这意味着每次循环 i 的值会增加 args.stride,直到达到图像高度的边缘。args.patch_size 是想要提取的 patch 的大小,而 args.stride 是提取 patch 时每次移动的步长。'''