1. 程式人生 > >Efficient Sub-Pixel Convolutional Neural Network(ESPCN)

Efficient Sub-Pixel Convolutional Neural Network(ESPCN)

https://github.com/wangxuewen99/Super-Resolution/tree/master/ESPCN

摘要:

當前基於深度神經網路的方法對於單圖片的超解析度在重建效率和計算量方面有了很大的成功。但是,這些方法中,都是用低解析度的圖片通過單一的濾波器,通常是雙三次插值法,變成高解析度的圖片。這意味著超解析度的工作是在高解析度的基礎上完成的。這種方法是次最優並且計算量很大。

該論文提出了一種方法,將低解析度的圖片直接通過CNN來做超解析度。另外,提出了一種有效的子畫素卷積層,這層能學習到一組擴大濾波器去將低解析度的特徵對映到高解析度的輸出。這樣做,我們就省去了雙三次插值法,也減輕了計算量。

1. 簡介:

大部分的超解析度問題都假設低解析度的資料是高解析度資料的低通濾波,下采樣和噪聲產生的。由於在不可逆的低通濾波和子取樣操作期間發生的高頻資訊的丟失,這是一個非常惡劣的問題。另外,從低解析度到高解析度的對映過程,超解析度有許多的選擇。基於許多超解析度技術的一個關鍵假設是大部分高頻資料是冗餘的,因此可以從低頻分量精確地重構。因此,超解析度是一個推理問題,因此依賴於我們關於影象統計的模型。

許多方法假設多個影象可用作具有不同視角的相同場景的低解析度例項,即具有唯一的先前仿射變換。這些可以歸類為多影象超解析度方法,並通過限制不正確的問題附加資訊並嘗試反轉下采樣過程來利用顯式冗餘。然而,這些方法通常需要計算複雜的影象配準和融合階段,其準確性直接影響結果的質量。一種替代的方法是單影象超解析度(SISR)技術。這些技術尋求學習自然資料中存在的隱性冗餘,以從單個低解析度例項中恢復丟失的高解析度資訊。這通常以影象的區域性空間相關性和視訊中的附加時間相關性的形式出現。在這種情況下,需要以重建約束的形式的先前資訊來限制重構的解空間。

1.1 相關工作:

最近最流行的SISR方法可以分為:edge-based, image statistics-based和patch-based。另外,最新蓬勃發展的技術是sparsity-based techniques(稀疏性技術)。稀疏編碼是一個有效的機制,它假設任何的自然圖片都能夠在轉換區域被稀疏的表達。這種轉換域通常是一個影象原子性的字典,能通過發現低解析度和高解析度之間的對應關係學習到。這個字典能夠嵌入先驗知識以限制上面提到的惡劣的問題。但是稀疏性技術的缺點是將稀疏性限制引入到非線性重建中時,通常需要較大的計算代價。

除此之外,通過神經網路來習得影象的表達對於SISR也是很常見的。這些方法,通過在大型的圖片資料庫,比如ImageNet,進行反向傳播訓練,學習到低解析度到高解析度的對映關係。堆疊的協同本地自編碼被用作一層層的去做低解析度圖片的超解析度。有學者建議用預測卷積稀疏編碼框架來做SISR。於是,基於稀疏編碼的多層卷積神經網路被提出。該方法提出使用多階段可訓練非線性反應擴散(TNRD)作為CNN的替代方法,其中權重和非線性是可訓練的。還有人從LISTA得到靈感(學習迭代收縮和閾值演算法)訓練了一個端到端的級聯的稀疏編碼網路,以充分利用影象的自然稀疏性。這個網路結構不僅限制於神經網路,比如隨機森林同樣可以成功的利用。

1.2 動機和貢獻

有兩種方法去提高解析度。一種是在神經網路的中間層逐漸增加,另一種是在喂入神經網路第一層之前就增加解析度。後者的方法有許多的缺點。第一,計算代價大。第二,插值法並沒有解決ill-posed的問題。

這篇論文中,和之前不一樣的,提出了一種在神經網路的末端增加解析度的方法。這解決了一個問題,那就是大部分的超解析度操作沒有必要在較大的高解析度圖片上面執行。所以,我們採用了高效的子畫素卷積層去學習倍增解析度的操作。

這個方法有兩個好處:

1. upscaling在神經網路的末端執行。這意味著將低解析度圖片喂入神經網路,並且特者提取是發生在低解析度空間的非線性卷積操作。因為輸入的解析度降低了,我們可以有效地利用較小的過濾器去合成同樣的資訊。解析度和濾波器大小的減小,極大的減小了運算量和儲存空間以至於超解析度能夠實時地在HD的錄影上完成。

2. 沒有使用插值法,這意味著網路能明確地學習到對超解析度有用的東西。因此,比起在第一層用一個固定的倍增濾波器,這個網路能學習到一個更好的從低解析度到高解析度的對映。這能導致重建正確率的提高。

2. 方法

輸入是用高解析度的圖片,採取r的倍增速率,通過高斯濾波器,壓縮成低解析度的圖片。所以低解析度圖片的大小是H*W*C,高解析度圖片的大小是rH*rW*C(C是channel的數量)。

為了恢復高解析度的圖片,該論文用了3層的卷積神經網路,如下圖。

 

在結構中,直接作用了l層神經網路在低解析度影象上,然後用了一個子畫素卷積層,將低解析度的特徵對映到超解析度上。

2.1 反捲積層

附加的反捲積層是從max-pooling層和其他影象的下采樣層中恢復高解析度的一個很流行的選擇。這種方法已經成功地用於視覺化層啟用,並且用於使用來自網路的高階特徵來生成語義分割。這表明SRCNN中使用的雙三次插值是反捲積層的一種特殊情況。反捲積層可以看作是每個輸入畫素乘以一個濾波器單元與步幅r,並且在所得到的輸出視窗上也稱為向後卷積。

2.2 高效的子畫素卷積層

另外一種方法去倍增低解析度影象是用一個步長為分數的1/r的卷積作用域低解析度空間。

 

3. 實驗

3.1 資料集

用5000張隨機從ImageNet資料集中選擇出來的圖片用來訓練。

3.2 實驗結果