Convolutional Sparse Coding for Cmage Super-resolution
Abstract
大多数基于稀疏编码的超分辨率方法首先将图片划分为具有重叠的小块,然后在得到的每个小块上单独处理,最后得到超分辨率图片。以上方法存在的问题就是各个patch之间忽略了像素的一致性问题,最后在一定程度上限制了得到的超分辨率图片的质量。针对以上问题本文提出了一种基于卷积稀疏编码的图片超分辨率(CSC−SR)方法,该方法主要学习以下三组参数:
-
a 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 ones
-
a set of filters to reconstruct the HR images from the predicted HR feature maps via
simple convolution operations
由于本篇论文提出的方法是直接在整张图片上进行,不会对图片进行分块操作,所以最后得到的超分辨率图片质量更好。(利用整张图片的全局一致性重构得到局部特征更加鲁棒的超分辨率图片)
Introduction
考虑到自然图像的复杂性和局部结构,目前大多数SISR方法利用图像patch上的先验信息,而不是直接利用整张图片的先验信息建模,可以分为以下三个方向:
- example−based
- mapping−based
- sparsecoding−based
不同于以往的方法,本文提出的CSC方法首先利用N个滤波器将输入的图片分解为N个稀疏特征图。跟传统的基于patch的稀疏编码方法相比,还没有相对应的工作证明基于CSC的方法要优于传统的基于patch的。
由于先前方法中低分辨率字典和高分辨率字典的大小是一样的,因为高分辨率图片更加复杂,这样的话一定程度上会限制高分辨率字典的表示能力。为了解决这个问题,本篇论文中提出了一种低分辨率特征到高分辨率特征的映射函数,这样我们就可以实现低分辨率字典和高分辨率字典的大小不一致。一方面减少了计算代价,另一方面也可以增强高分辨率字典的表示能力。
本篇论文的贡献主要包括三个方面:第一,跟传统的单独处理overlapped−patch的稀疏编码方法相比,我们的方法更加适合最后图片的重构;第二,为了充分利用由卷积编码生成的特征的优势,我们利用特征空间信息训练稀疏映射函数;第三,我们的实验结果跟其他方法相比不仅具有更高的PSNR,而且也具有较高的图片质量。
Convolutional Sparse Coding
Sparse Coding for SR
对于给定的向量x,利用学习到的字典D将x表示为一系列基的线性组合,如下公式所示:
x≈Dα
其中α是稀疏系数。
【思路】:对于给定的LR、HR图像patch pairs,在训练阶段我们联合学习对应的低分辨率字典Dl和高分辨率字典Dh,最后基于得到的字典重构低分辨率和高分辨率图像patch。
Convolutional Sparse Coding
尽管稀疏编码有着非常广泛的应用,但是在处理图像patch时仍有一些缺点:
为了解决以上问题,研究人员又提出了一个基于ConvolutionalSparseCoding(CSC)方法的图像超分辨率方法,该方法直接对输入的整张图片进行稀疏编码。模型定义如下:
minZ∣∣X−i=1∑nfi⨂Zi∣∣F2+λi=1∑N∣∣Zi∣∣1
其中,X是一个m×n的图片,{fi}i=1,2,...,N是一组滤波器,Zi是大小为(m+s−1)×(n+s−1)的feature map。基于以上模型我们就可以很好的避免之前提及的inconsistency问题。
同时卷积分解机制也使得模型优化很难,为了解决这个问题文献[31]提出了对原始的约束条件进行放松,利用共轭梯度下降算法来解决卷积最小二乘问题。
Convolutional Sparse Coding for Super resolution
本文提出的模型如下图所示:

LR filter learning for CSC decomposition
对于给定的一组高分辨率图片{x1,xk,...,xK}和对应的低分辨率图片{y1,yk,...,yK}用来训练我们的模型,由于索引k不影响我们理解模型本身,所以在后面我们简单省略k。
为了得到更加稀疏的feature map,在超分辨率之前我们把LR图片分解为平滑成分和残差成分。对于平滑部分进行双线性插值进行放大,我们提出的模型CSC−SR在残差部分进行操作。
对于LR图片y,为了得到一个较好的平滑成分,首先要解决下面的优化问题:
minZ∣∣y−fs⨂Zys∣∣F2+γ∣∣fdh⨂Zys∣∣F2+γ∣∣fdv⨂Zys∣∣F2, (1)
其中,Zys是LR图片y的低频特征图,fs是一个大小为3×3、系数为1/9的低通滤波器。fdh fdv是水平和垂直梯度方向的操作运算子,[1,−1]和[1;−1]。公式(1)在傅里叶频域闭式解为:
Zys=F−1(Fs∘Fs+γFdh∘Fdh+γFdv∘FdvFs∘F(y))
其中,F和F−1分别是FFT和IFFT变换,Fs,Fdh,Fdv分别是fs,fdh,fdv的FFT变换,符号’^'表示复共轭,∘表示对应元素相乘。 得到Zys后,我们就可以分解对应的LR图片:
y=fs⨂Zys+Y
其中,fs⨂Zys表示LR中平滑的部分,Y表示在LR图片中对应的高频边缘信息和纹理结构信息(也就是之前说的残差部分)。
接下来继续学习一组LR滤波器分解残差部分Y到N个feature map:
minZ,f∣∣Y−i=1∑Nfil⨂Zil∣∣F2+λi=1∑N∣∣Zil∣∣1,
s.t.∣∣fil∣∣F2⩽1
其中,{fil}i=1∼N是N个LR滤波器,Zil是第i个滤波器的稀疏特征图。
对于Z和f的更新是交替进行的,而且并不是直接更新Z和f,而是更新它们的子问题。其中Z的优化是标准的CSC问题,可以利用文献[23]的方法求解,对于f我们可以利用ADMM算法在傅里叶频域进行求解。f的子问题如下:
fl=arg minf∣∣Y−i=1∑Nfil⨂Zil∣∣F2, s.t.∥∥fil∥∥F2⩽1.
Joint HR filter and mapping function learning
跟LR滤波器的学习一样,首先对HR图片分解得到平滑成分和残差成分,然后学习映射函数和HR滤波器。(基于LR feature maps)具体分解过程如下:
x=fs⨂Zxs+X
在之前的工作中,LR和HR的字典大小是一样的。而在本篇工作中,LR的字典要比HR的小这样做的目的是减少计算代价,而对于HR图片由于包含的细节信息更多,所以利用更多的滤波器来提取特征。
现在的挑战就是我们训练的映射函数具有尺度缩放功能,因为低分辨率的特征和高分辨率的特征数量是不一样的,所以映射函数的功能不仅要实现低分辨率到高分辨率的映射,还要实现尺度上的映射,具体的映射函数如下:
Zjh(kx,ky)=g(Z1l(x,y),Z2l(x,y),⋯,ZNl(x,y);W)
k是缩放因子,Zjh(kx,ky)是位置(kx,ky)的系数,Zil(x,y)是在特征图Zil中对应点(x,y)的系数,W是映射函数的参数。
映射函数g最后输出的应该是系数编码,然后在利用一系列的线性转换矩阵计算HR的系数:
Zjh(kx,ky)=g(Z:l(x,y);wj)=wjTz:l(x,y),
s.t. wj⪰0, ∣wj∣1=1
其中,z:l(x,y)是N个LR feature maps在点(x,y)的系数向量,wjT是HR feature map Zjh的转换向量。这里我们约束wj⪰1, ∣wj∣1=1保证W的稀疏性。

确定映射函数g之后,就可以利用HR filter 和g确定我们的模型了:
{fh,W}=minf,W∣∣X−j=1∑Mfjh⨂g(Z:l;wj)∣∣F2,
s.t. ∣∣fjh∣∣F2≤e; wj⪰0, ∣wj∣1=1
其中,e是HR滤波器的能量约束。对于以上目标函数我们交替更新fh和W。

我们的CSC−SR方法的算法流程如下图所示:

Test Phase
