Convolutional Sparse Coding for Image 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