Convolutional Sparse Coding for Image Super-resolution
Abstract
大多数基于稀疏编码的超分辨率方法首先将图片划分为具有重叠的小块,然后在得到的每个小块上单独处理,最后得到超分辨率图片。以上方法存在的问题就是各个patchpatchpatch之间忽略了像素的一致性问题,最后在一定程度上限制了得到的超分辨率图片的质量。针对以上问题本文提出了一种基于卷积稀疏编码的图片超分辨率(CSC−SR)(CSC-SR)(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 \ 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 \ 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 \ viaa set of filters to reconstruct the HR images from the predicted HR feature maps via
simple convolution operationssimple \ convolution \ operationssimple convolution operations
由于本篇论文提出的方法是直接在整张图片上进行,不会对图片进行分块操作,所以最后得到的超分辨率图片质量更好。(利用整张图片的全局一致性重构得到局部特征更加鲁棒的超分辨率图片)
Introduction
考虑到自然图像的复杂性和局部结构,目前大多数SISRSISRSISR方法利用图像patch上的先验信息,而不是直接利用整张图片的先验信息建模,可以分为以下三个方向:
- example−basedexample-basedexample−based
- mapping−basedmapping-basedmapping−based
- sparsecoding−basedsparse coding-basedsparsecoding−based
不同于以往的方法,本文提出的CSC方法首先利用N个滤波器将输入的图片分解为N个稀疏特征图。跟传统的基于patch的稀疏编码方法相比,还没有相对应的工作证明基于CSC的方法要优于传统的基于patchpatchpatch的。
由于先前方法中低分辨率字典和高分辨率字典的大小是一样的,因为高分辨率图片更加复杂,这样的话一定程度上会限制高分辨率字典的表示能力。为了解决这个问题,本篇论文中提出了一种低分辨率特征到高分辨率特征的映射函数,这样我们就可以实现低分辨率字典和高分辨率字典的大小不一致。一方面减少了计算代价,另一方面也可以增强高分辨率字典的表示能力。
本篇论文的贡献主要包括三个方面:第一,跟传统的单独处理overlapped−patchoverlapped -patchoverlapped−patch的稀疏编码方法相比,我们的方法更加适合最后图片的重构;第二,为了充分利用由卷积编码生成的特征的优势,我们利用特征空间信息训练稀疏映射函数;第三,我们的实验结果跟其他方法相比不仅具有更高的PSNR,而且也具有较高的图片质量。
Convolutional Sparse Coding
Sparse Coding for SR
对于给定的向量xxx,利用学习到的字典DDD将xxx表示为一系列基的线性组合,如下公式所示:
x≈Dα x \approx D\alphax≈Dα
其中α\alphaα是稀疏系数。
【思路】:对于给定的LRLRLR、HRHRHR图像patchpatchpatch pairspairspairs,在训练阶段我们联合学习对应的低分辨率字典DlD^lDl和高分辨率字典DhD^hDh,最后基于得到的字典重构低分辨率和高分辨率图像patchpatchpatch。
Convolutional Sparse Coding
尽管稀疏编码有着非常广泛的应用,但是在处理图像patchpatchpatch时仍有一些缺点:
-
由于l0l_0l0范数和l1l_1l1范数优化比较困难,在一定程度上限制了稀疏编码的应用范围
-
图像patchpatchpatch之间的consistencyconsistencyconsistency被忽略
为了解决以上问题,研究人员又提出了一个基于ConvolutionalSparseCoding(CSC)Convolutional Sparse Coding(CSC)ConvolutionalSparseCoding(CSC)方法的图像超分辨率方法,该方法直接对输入的整张图片进行稀疏编码。模型定义如下:
minZ∣∣X−∑i=1nfi⨂Zi∣∣F2+λ∑i=1N∣∣Zi∣∣1min_Z||X-\sum_{i=1}^nf_i\bigotimes{Z_i}||^2_F+{\lambda\sum_{i=1}^N||Z_i||_1}minZ∣∣X−i=1∑nfi⨂Zi∣∣F2+λi=1∑N∣∣Zi∣∣1
其中,XXX是一个m×nm\times nm×n的图片,{fi}i=1,2,...,N\{f_i\}_{i=1,2,...,N}{fi}i=1,2,...,N是一组滤波器,ZiZ_iZi是大小为(m+s−1)×(n+s−1)(m+s-1) \times (n+s-1)(m+s−1)×(n+s−1)的featurefeaturefeature mapmapmap。基于以上模型我们就可以很好的避免之前提及的inconsistencyinconsistencyinconsistency问题。
同时卷积分解机制也使得模型优化很难,为了解决这个问题文献[31][31][31]提出了对原始的约束条件进行放松,利用共轭梯度下降算法来解决卷积最小二乘问题。
Convolutional Sparse Coding for Super resolution
本文提出的模型如下图所示:
LR filter learning for CSC decomposition
对于给定的一组高分辨率图片{x1,xk,...,xK}\{x_1,x_k,...,x_K\}{x1,xk,...,xK}和对应的低分辨率图片{y1,yk,...,yK}\{y_1,y_k,...,y_K\}{y1,yk,...,yK}用来训练我们的模型,由于索引kkk不影响我们理解模型本身,所以在后面我们简单省略kkk。
为了得到更加稀疏的feature mapfeature\ mapfeature map,在超分辨率之前我们把LRLRLR图片分解为平滑成分和残差成分。对于平滑部分进行双线性插值进行放大,我们提出的模型CSC−SRCSC-SRCSC−SR在残差部分进行操作。
对于LRLRLR图片yyy,为了得到一个较好的平滑成分,首先要解决下面的优化问题:
minZ∣∣y−fs⨂Zys∣∣F2+γ∣∣fdh⨂Zys∣∣F2+γ∣∣fdv⨂Zys∣∣F2, (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)minZ∣∣y−fs⨂Zys∣∣F2+γ∣∣fdh⨂Zys∣∣F2+γ∣∣fdv⨂Zys∣∣F2, (1)
其中,ZysZ^s_yZys是LRLRLR图片yyy的低频特征图,fsf^sfs是一个大小为3×33 \times 33×3、系数为1/91/91/9的低通滤波器。fdh fdvf^{dh} \ f^{dv}fdh fdv是水平和垂直梯度方向的操作运算子,[1,−1][1,-1][1,−1]和[1;−1][1;-1][1;−1]。公式(1)(1)(1)在傅里叶频域闭式解为:
Zys=F−1(F^s∘F(y)F^s∘Fs+γF^dh∘Fdh+γF^dv∘Fdv) 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}}}) Zys=F−1(Fs∘Fs+γFdh∘Fdh+γFdv∘FdvFs∘F(y))
其中,F\mathbb{F}F和F−1\mathbb{F^{-1}}F−1分别是FFTFFTFFT和IFFTIFFTIFFT变换,Fs\mathcal{F^{s}}Fs,Fdh\mathcal{F^{dh}}Fdh,Fdv\mathcal{F^{dv}}Fdv分别是fsf^sfs,fdhf^{dh}fdh,fdvf^{dv}fdv的FFTFFTFFT变换,符号’^'表示复共轭,∘\circ∘表示对应元素相乘。 得到ZysZ^s_yZys后,我们就可以分解对应的LRLRLR图片:
y=fs⨂Zys+Y y=f^s \bigotimes Z^s_y + Y y=fs⨂Zys+Y
其中,fs⨂Zysf^s \bigotimes Z^s_yfs⨂Zys表示LRLRLR中平滑的部分,YYY表示在LRLRLR图片中对应的高频边缘信息和纹理结构信息(也就是之前说的残差部分)。
接下来继续学习一组LRLRLR滤波器分解残差部分YYY到NNN个feature mapfeature \ mapfeature map:
minZ,f∣∣Y−∑i=1Nfil⨂Zil∣∣F2+λ∑i=1N∣∣Zil∣∣1, 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}, minZ,f∣∣Y−i=1∑Nfil⨂Zil∣∣F2+λi=1∑N∣∣Zil∣∣1,
s.t.∣∣fil∣∣F2⩽1 s.t. ||f^l_i||^2_F \leqslant 1s.t.∣∣fil∣∣F2⩽1
其中,{fil}i=1∼N\{f^l_i \}_{i=1\sim N}{fil}i=1∼N是NNN个LRLRLR滤波器,ZilZ^l_iZil是第iii个滤波器的稀疏特征图。
对于ZZZ和fff的更新是交替进行的,而且并不是直接更新ZZZ和fff,而是更新它们的子问题。其中ZZZ的优化是标准的CSCCSCCSC问题,可以利用文献[23][23][23]的方法求解,对于fff我们可以利用ADMMADMMADMM算法在傅里叶频域进行求解。fff的子问题如下:
fl=arg minf∣∣Y−∑i=1Nfil⨂Zil∣∣F2, s.t.∥fil∥F2⩽1. 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. fl=arg minf∣∣Y−i=1∑Nfil⨂Zil∣∣F2, s.t.∥∥fil∥∥F2⩽1.
Joint HR filter and mapping function learning
跟LRLRLR滤波器的学习一样,首先对HRHRHR图片分解得到平滑成分和残差成分,然后学习映射函数和HRHRHR滤波器。(基于LRLRLR feature mapsfeature \ mapsfeature maps)具体分解过程如下:
x=fs⨂Zxs+X x=f^s \bigotimes Z^s_x + X x=fs⨂Zxs+X
在之前的工作中,LRLRLR和HRHRHR的字典大小是一样的。而在本篇工作中,LRLRLR的字典要比HRHRHR的小这样做的目的是减少计算代价,而对于HRHRHR图片由于包含的细节信息更多,所以利用更多的滤波器来提取特征。
现在的挑战就是我们训练的映射函数具有尺度缩放功能,因为低分辨率的特征和高分辨率的特征数量是不一样的,所以映射函数的功能不仅要实现低分辨率到高分辨率的映射,还要实现尺度上的映射,具体的映射函数如下:
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 ) Zjh(kx,ky)=g(Z1l(x,y),Z2l(x,y),⋯,ZNl(x,y);W)
kkk是缩放因子,Zjh(kx,ky)Z^h_j(kx,ky)Zjh(kx,ky)是位置(kx,ky)(kx,ky)(kx,ky)的系数,Zil(x,y)Z^l_i(x,y)Zil(x,y)是在特征图ZilZ^l_iZil中对应点(x,y)(x,y)(x,y)的系数,WWW是映射函数的参数。
映射函数ggg最后输出的应该是系数编码,然后在利用一系列的线性转换矩阵计算HRHRHR的系数:
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), Zjh(kx,ky)=g(Z:l(x,y);wj)=wjTz:l(x,y),
s.t. wj⪰0, ∣wj∣1=1 s.t. \ w_j \succeq 0,\ |w_j|_1 = 1s.t. wj⪰0, ∣wj∣1=1
其中,z:l(x,y)z^l_:(x,y)z:l(x,y)是NNN个LRLRLR feature mapsfeature \ mapsfeature maps在点(x,y)(x,y)(x,y)的系数向量,wjTw^T_jwjT是HRHRHR feature map Zjhfeature \ map \ Z^h_jfeature map Zjh的转换向量。这里我们约束wj⪰1w_j \succeq 1wj⪰1, ∣wj∣1=1| w_j| _1=1∣wj∣1=1保证WWW的稀疏性。
确定映射函数ggg之后,就可以利用HRHRHR filterfilterfilter 和ggg确定我们的模型了:
{fh,W}=minf,W∣∣X−∑j=1Mfjh⨂g(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, {fh,W}=minf,W∣∣X−j=1∑Mfjh⨂g(Z:l;wj)∣∣F2,
s.t. ∣∣fjh∣∣F2≤e; wj⪰0, ∣wj∣1=1 s.t. \ ||f^h_j||^2_F \leq e; \ \ w_j \succeq 0, \ |w_j|_1={1}s.t. ∣∣fjh∣∣F2≤e; wj⪰0, ∣wj∣1=1
其中,eee是HRHRHR滤波器的能量约束。对于以上目标函数我们交替更新fhf^hfh和WWW。
我们的CSC−SRCSC-SRCSC−SR方法的算法流程如下图所示: