Convolutional Sparse Coding for Cmage Super-resolution

Convolutional Sparse Coding for Cmage Super-resolution

Abstract

        大多数基于稀疏编码的超分辨率方法首先将图片划分为具有重叠的小块,然后在得到的每个小块上单独处理,最后得到超分辨率图片。以上方法存在的问题就是各个patchpatch之间忽略了像素的一致性问题,最后在一定程度上限制了得到的超分辨率图片的质量。针对以上问题本文提出了一种基于卷积稀疏编码的图片超分辨率(CSCSR)(CSC-SR)方法,该方法主要学习以下三组参数:

  • a set of filters to decompose the low resolution(LR) image into LR sparse feature mapsa \ set \ of \ filters \ to \ decompose \ the \ low \ resolution (LR) \ image \ into \ LR \ sparse \ feature \ maps

  • a mapping function to predict the high resolution(HR) feature maps from the LR onesa \ mapping \ function \ to \ predict \ the \ high \ resolution (HR) \ feature \ maps \ from \ the \ LR \ ones

  • a set of filters to reconstruct the HR images from the predicted HR feature maps viaa \ set \ of \ filters \ to \ reconstruct \ the \ HR \ images \ from \ the \ predicted \ HR \ feature \ maps \ via

       simple convolution operationssimple \ convolution \ operations

由于本篇论文提出的方法是直接在整张图片上进行,不会对图片进行分块操作,所以最后得到的超分辨率图片质量更好。(利用整张图片的全局一致性重构得到局部特征更加鲁棒的超分辨率图片)

Introduction

        考虑到自然图像的复杂性和局部结构,目前大多数SISRSISR方法利用图像patch上的先验信息,而不是直接利用整张图片的先验信息建模,可以分为以下三个方向:

  • examplebasedexample-based
  • mappingbasedmapping-based
  • sparsecodingbasedsparse coding-based

        不同于以往的方法,本文提出的CSC方法首先利用N个滤波器将输入的图片分解为N个稀疏特征图。跟传统的基于patch的稀疏编码方法相比,还没有相对应的工作证明基于CSC的方法要优于传统的基于patchpatch的。

        由于先前方法中低分辨率字典和高分辨率字典的大小是一样的,因为高分辨率图片更加复杂,这样的话一定程度上会限制高分辨率字典的表示能力。为了解决这个问题,本篇论文中提出了一种低分辨率特征到高分辨率特征的映射函数,这样我们就可以实现低分辨率字典和高分辨率字典的大小不一致。一方面减少了计算代价,另一方面也可以增强高分辨率字典的表示能力。

        本篇论文的贡献主要包括三个方面:第一,跟传统的单独处理overlappedpatchoverlapped -patch的稀疏编码方法相比,我们的方法更加适合最后图片的重构;第二,为了充分利用由卷积编码生成的特征的优势,我们利用特征空间信息训练稀疏映射函数;第三,我们的实验结果跟其他方法相比不仅具有更高的PSNR,而且也具有较高的图片质量。

Convolutional Sparse Coding

Sparse Coding for SR

对于给定的向量xx,利用学习到的字典DDxx表示为一系列基的线性组合,如下公式所示:

xDα x \approx D\alpha

其中α\alpha是稀疏系数。

【思路】:对于给定的LRLRHRHR图像patchpatch pairspairs,在训练阶段我们联合学习对应的低分辨率字典DlD^l和高分辨率字典DhD^h,最后基于得到的字典重构低分辨率和高分辨率图像patchpatch

Convolutional Sparse Coding

尽管稀疏编码有着非常广泛的应用,但是在处理图像patchpatch时仍有一些缺点:

  • 由于l0l_0范数和l1l_1范数优化比较困难,在一定程度上限制了稀疏编码的应用范围

  • 图像patchpatch之间的consistencyconsistency被忽略

为了解决以上问题,研究人员又提出了一个基于ConvolutionalSparseCoding(CSC)Convolutional Sparse Coding(CSC)方法的图像超分辨率方法,该方法直接对输入的整张图片进行稀疏编码。模型定义如下:

minZXi=1nfiZiF2+λi=1NZi1min_Z||X-\sum_{i=1}^nf_i\bigotimes{Z_i}||^2_F+{\lambda\sum_{i=1}^N||Z_i||_1}

其中,XX是一个m×nm\times n的图片,{fi}i=1,2,...,N\{f_i\}_{i=1,2,...,N}是一组滤波器,ZiZ_i是大小为(m+s1)×(n+s1)(m+s-1) \times (n+s-1)featurefeature mapmap。基于以上模型我们就可以很好的避免之前提及的inconsistencyinconsistency问题。

同时卷积分解机制也使得模型优化很难,为了解决这个问题文献[31][31]提出了对原始的约束条件进行放松,利用共轭梯度下降算法来解决卷积最小二乘问题。

Convolutional Sparse Coding for Super resolution

本文提出的模型如下图所示:

Convolutional Sparse Coding for Cmage Super-resolution

LR filter learning for CSC decomposition

对于给定的一组高分辨率图片{x1,xk,...,xK}\{x_1,x_k,...,x_K\}和对应的低分辨率图片{y1,yk,...,yK}\{y_1,y_k,...,y_K\}用来训练我们的模型,由于索引kk不影响我们理解模型本身,所以在后面我们简单省略kk

为了得到更加稀疏的feature mapfeature\ map,在超分辨率之前我们把LRLR图片分解为平滑成分和残差成分。对于平滑部分进行双线性插值进行放大,我们提出的模型CSCSRCSC-SR在残差部分进行操作。

对于LRLR图片yy,为了得到一个较好的平滑成分,首先要解决下面的优化问题:

minZyfsZysF2+γfdhZysF2+γfdvZysF2, (1)min_Z||y-f^s\bigotimes Z^s_y||^2_F+\gamma||f^{dh} \bigotimes Z^s_y||^2_F + \gamma||f^{dv} \bigotimes Z^s_y||^2_F, \ (1)

其中,ZysZ^s_yLRLR图片yy的低频特征图,fsf^s是一个大小为3×33 \times 3、系数为1/91/9的低通滤波器。fdh fdvf^{dh} \ f^{dv}是水平和垂直梯度方向的操作运算子,[1,1][1,-1][1;1][1;-1]。公式(1)(1)在傅里叶频域闭式解为:

Zys=F1(F^sF(y)F^sFs+γF^dhFdh+γF^dvFdv) Z^s_y=\mathbb{F}^{-1}(\frac{\mathcal{\widehat{F}^s} \circ \mathbb{F(y)}} {\mathcal{\widehat{F}^{s}} \circ \mathcal{F^{s}} + \gamma\mathcal{\widehat{F}^{dh}} \circ \mathcal{F^{dh}} + \gamma\mathcal{\widehat{F}^{dv}} \circ \mathcal{F^{dv}}})

其中,F\mathbb{F}F1\mathbb{F^{-1}}分别是FFTFFTIFFTIFFT变换,Fs\mathcal{F^{s}}Fdh\mathcal{F^{dh}}Fdv\mathcal{F^{dv}}分别是fsf^sfdhf^{dh}fdvf^{dv}FFTFFT变换,符号’^'表示复共轭,\circ表示对应元素相乘。 得到ZysZ^s_y后,我们就可以分解对应的LRLR图片:

y=fsZys+Y y=f^s \bigotimes Z^s_y + Y

其中,fsZysf^s \bigotimes Z^s_y表示LRLR中平滑的部分,YY表示在LRLR图片中对应的高频边缘信息和纹理结构信息(也就是之前说的残差部分)。

接下来继续学习一组LRLR滤波器分解残差部分YYNNfeature mapfeature \ map

minZ,fYi=1NfilZilF2+λi=1NZil1, min_{Z,f} ||Y-\sum_{i=1}^N {f^l_i} \bigotimes {Z^l_i}||^2_F + \lambda {\sum_{i=1}^N ||Z^l_i||_1},

s.t.filF21 s.t. ||f^l_i||^2_F \leqslant 1

其中,{fil}i=1N\{f^l_i \}_{i=1\sim N}NNLRLR滤波器,ZilZ^l_i是第ii个滤波器的稀疏特征图。

对于ZZff的更新是交替进行的,而且并不是直接更新ZZff,而是更新它们的子问题。其中ZZ的优化是标准的CSCCSC问题,可以利用文献[23][23]的方法求解,对于ff我们可以利用ADMMADMM算法在傅里叶频域进行求解。ff的子问题如下:

fl=arg minfYi=1NfilZilF2, s.t.filF21. f^l = arg \ min_f || Y-\sum_{i=1}^N {f^l_i \bigotimes Z^l_i} ||^2_F, \ s.t. \left \| f^l_i \right \|^2_F \leqslant1.

Joint HR filter and mapping function learning

LRLR滤波器的学习一样,首先对HRHR图片分解得到平滑成分和残差成分,然后学习映射函数和HRHR滤波器。(基于LRLR feature mapsfeature \ maps)具体分解过程如下:
x=fsZxs+X x=f^s \bigotimes Z^s_x + X

在之前的工作中,LRLRHRHR的字典大小是一样的。而在本篇工作中,LRLR的字典要比HRHR的小这样做的目的是减少计算代价,而对于HRHR图片由于包含的细节信息更多,所以利用更多的滤波器来提取特征。

现在的挑战就是我们训练的映射函数具有尺度缩放功能,因为低分辨率的特征和高分辨率的特征数量是不一样的,所以映射函数的功能不仅要实现低分辨率到高分辨率的映射,还要实现尺度上的映射,具体的映射函数如下:

Zjh(kx,ky)=g(Z1l(x,y),Z2l(x,y), ,ZNl(x,y);W) Z^h_j(kx,ky) = g(Z^l_1(x,y),Z^l_2(x,y),\cdots,Z^l_N(x,y);W )

kk是缩放因子,Zjh(kx,ky)Z^h_j(kx,ky)是位置(kx,ky)(kx,ky)的系数,Zil(x,y)Z^l_i(x,y)是在特征图ZilZ^l_i中对应点(x,y)(x,y)的系数,WW是映射函数的参数。

映射函数gg最后输出的应该是系数编码,然后在利用一系列的线性转换矩阵计算HRHR的系数:

Zjh(kx,ky)=g(Z:l(x,y);wj)=wjTz:l(x,y), Z^h_j(kx,ky) = g(Z^l_:(x,y); w_j) = w^T_jz^l_:(x,y),

s.t. wj0, wj1=1 s.t. \ w_j \succeq 0,\ |w_j|_1 = 1

其中,z:l(x,y)z^l_:(x,y)NNLRLR feature mapsfeature \ maps在点(x,y)(x,y)的系数向量,wjTw^T_jHRHR feature map Zjhfeature \ map \ Z^h_j的转换向量。这里我们约束wj1w_j \succeq 1wj1=1| w_j| _1=1保证WW的稀疏性。

Convolutional Sparse Coding for Cmage Super-resolution

确定映射函数gg之后,就可以利用HRHR filterfiltergg确定我们的模型了:

{fh,W}=minf,WXj=1Mfjhg(Z:l;wj)F2, \{f^h,W\} = min_{f,W} || X-\sum_{j=1}^M {f^h_j \bigotimes g(Z^l_:;w_j)} ||^2_F,

s.t. fjhF2e;  wj0, wj1=1 s.t. \ ||f^h_j||^2_F \leq e; \ \ w_j \succeq 0, \ |w_j|_1={1}

其中,eeHRHR滤波器的能量约束。对于以上目标函数我们交替更新fhf^hWW

Convolutional Sparse Coding for Cmage Super-resolution

我们的CSCSRCSC-SR方法的算法流程如下图所示:

Convolutional Sparse Coding for Cmage Super-resolution

Test Phase

Convolutional Sparse Coding for Cmage Super-resolution