Convolutional Sparse Coding for Image Super-resolution

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

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

在這裏插入圖片描述

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的稀疏性。

在這裏插入圖片描述

確定映射函數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

在這裏插入圖片描述

我們的CSCSRCSC-SR方法的算法流程如下圖所示:

在這裏插入圖片描述

Test Phase

在這裏插入圖片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章