【图像超分辨】SRCNN

论文地址:[1501.00092] Image Super-Resolution Using Deep Convolutional Networks

代码地址:GitHub - yjn870/SRCNN-pytorch: PyTorch implementation of Image Super-Resolution Using Deep Convolutional Networks (ECCV 2014)

上述代码使用的第二层卷积层是5*5的卷积核。 

1.网络结构

【图像超分辨】SRCNN_第1张图片

  • 第一层CNN:对输入图片的特征提取。(9 x 9 x 64卷积核)
  • 第二层CNN:对第一层提取的特征的非线性映射(1 x 1 x 32卷积核)
  • 第三层CNN:对映射后的特征进行重建,生成高分辨率图像(5 x 5 x 1卷积核)。

2.设计思路

作者这个思路是从稀疏编码得来的,并把上述过程分别表述为:Patch extraction, Non-linear mapping, Reconstruction。

  • Patch extraction: 提取图像Patch,进行卷积提取特征,类似于稀疏编码中的将图像patch映射到低分辨率字典中

  • Non-linear mapping: 将低分辨率的特征映射为高分辨率特征,类似于字典学习中的找到图像patch对应的高分辨字典

  • Reconstruction:根据高分辨率特征进行图像重建。类似于字典学习中的根据高分辨率字典进行图像重建

【图像超分辨】SRCNN_第2张图片

3. 如何训练

3.1训练数据集

论文中某一实验采用91张自然图像作为训练数据集。

(1)对训练集中的原始图像先使用双三次差值缩小到低分辨率尺寸(例如缩小两倍);

(2)将(1)中低分辨率尺寸图像再放大到原来的尺寸,此时的图像称之为低分辨率图像

(3)将低分辨率图像最后切割成33×33图像块作为训练数据。以33像素×33像素中心点位置为依据,从原始图像中的对应位置选取21×21图像块(与卷积层细节设置相关);

为什么是33×33和21×21?

第一层卷积核9×9,得到特征图尺寸为(33-9)/1+1=25,第二层卷积核1×1,得到特征图尺寸不变,第三层卷积核5×5,得到特征图尺寸为(25-5)/1+1=21。训练时得到的尺寸为21×21,因此图像中心的21×21图像块作为标签数据。(卷积训练时不进行padding)。

我设置网络的时候可以一样吗?

当然可以设置为一样都是33×33,只要你训练和测试的时候都padding就行,其结果没什么影响。

3.2损失函数

采用MSE函数作为卷积神经网络损失函数。

4. 如何测试

(1)全卷积网络:所用网络为全卷积网络,因此作为实际测试时,直接输入完整图像即可;

(2)Padding:训练时得到的实际上是除去四周(33-21)/2=6像素外的图像,若直接采用训练时的设置(无padding),得到的图像最后会减少四周各6像素(如插值放大后输入512×512,输出500×500)。因此在测试时每一层卷积都进行了padding(卷积核尺寸为1×1的不需要进行padding)。这样保证插值放大后输入与输出尺寸的一致性。

使用Tensorflow或Pytorch进行复现时,图像预处理时将像素点取值归一化至[0,1],测试时,得到的最后一层特征图即重建结果直接乘以255再使用uint8转换时为0-255取值时会出现一些问题,如左下图2中方框所示,因此在乘以255前,将负值设置为0,大于255的设置为255,再使用uint转换即可解决

【图像超分辨】SRCNN_第3张图片
5. 重建结果

图像质量评价指标之 PSNR 和 SSIM_mjiansun的博客-CSDN博客

原始图像与其评估版本(噪声强度)之间图像(信号强度)可能的最大像素值与最大均方误差(MSE)的对数比率。PSNR 值越大,重建效果越好

import numpy
import math

def psnr(img1, img2):
    mse = numpy.mean( (img1 - img2) ** 2 )
    if mse == 0:
        return 100
    PIXEL_MAX = 255.0
    return 20 * math.log10(PIXEL_MAX / math.sqrt(mse))

(1)客观评价指标PSNR与SSIM:相比其他传统方法,SRCNN取得更好的重建效果

 【图像超分辨】SRCNN_第4张图片

(2)主观效果:相比其他传统方法,SRCNN重建效果更具优势 

【图像超分辨】SRCNN_第5张图片

6.为什么只训练YCbCr的Y通道?

图像被转化为 YCbCr 色彩空间,尽管该网络只使用亮度通道(Y)。然后,网络的输出合并已插值的 CbCr 通道,输出最终彩色图像。我们选择这一步骤是因为我们感兴趣的不是颜色变化(存储在 CbCr 通道中的信息)而只是其亮度(Y 通道);根本原因在于相较于色差,人类视觉对亮度变化更为敏感。

7.注意点

  • mse损失有缺点,以后论文的改进方向
  • 更加复杂的网络结构

参考

技术成就梦想51CTO-中国领先的IT技术网站

https://www.jianshu.com/p/827ce3de0e36

你可能感兴趣的:(图像处理,深度学习,人工智能,计算机视觉)