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(F
s∘Fs+γF
dh∘Fdh+γF
dv∘FdvF
s∘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