1. 程式人生 > >[深度學習] 影象反捲積的深度積神經網路 Deep Convolutional Neural Network for Image Deconvolution

[深度學習] 影象反捲積的深度積神經網路 Deep Convolutional Neural Network for Image Deconvolution

《影象反捲積的深度積神經網路》
《Deep Convolutional Neural Network for Image Deconvolution》
Li Xu, Jimmy SJ. Ren, Ce Liu, Jiaya Jia
NIPS 2014 pdf

摘要

許多基本的影象處理問題涉及反捲積計算。由於相機噪聲,飽和度,影象壓縮等原因,實際模糊降級很少符合理想的線性卷積模型。 不同於傳統的通過設計完美的模型來解決這一問題,我們要設計了一種深度卷積神經網路來捕捉影象退化的特徵,這是相當具有挑戰性的。我們注意到直接應用現有的深度神經網路不會產生合理的結果。我們的解決方案是建立傳統的基於優化的方案與神經網路架構之間的聯絡,其中引入了一種新穎的、可分離結構的卷積結構來進行反捲積。我們的網路包含兩個子模組,這兩個子模組都以監督學習的方式進行了適當的初始化訓練。與先前基於生成模型的方法相比,它們在非盲影象(non-blind image)去卷積上有不錯的效果。

引言

許多影象和視訊降級過程可以建模為一種平移不變卷積。為了恢復這些視覺資料,逆過程即反捲積(去卷積)成為去模糊[1,2,3,4],超解析度[5,6]和擴充套件景深[7]處理過程中的重要工具。

在涉及由相機捕獲的影象的應用中,諸如飽和度,有限影象邊界,噪聲或壓縮偽像的異常值是不可避免的。先前的研究表明,不正確地處理這些問題可能會產生與影象內容相關的大量偽像,這些偽像很難被刪除。因此,有一些工作致力於在非盲反捲積中對每種特定型別的偽像進行建模和定址,以抑制振鈴效應[8],去除噪聲[9],並處理飽和區域[9,10]。這些方法可以通過結合補丁級統計[11]或其他方案[4]進一步完善。因為每種方法都有自己的特點和侷限性,所以還沒有解決所有這些問題的解決方案。圖1中示出了一個示例 - 具有壓縮誤差的部分飽和的模糊影象可能已經使許多現有方法失敗。

去除這些偽影的一種方案是通過生成模型。然而,這些模型通常基於強有力的假設,例如相同且獨立分佈的噪聲,其可能不適用於真實影象。這解釋了當影象模糊特性稍微改變時,即使是高階演算法也會受到影響。

在本文中,我們啟動自然影象反捲積的過程,而不是基於它們的物理或數學特徵。另外,我們展示了使用影象樣本構建資料驅動系統的新方向,這些影象樣本可以從相機輕鬆生成或線上收集。

我們使用卷積神經網路(CNN)來學習反捲積操作,不需要知道人為視覺效果產生的原因,與之前的基於學習的影象去模糊方法不同,它不依賴任何預處理。本文的工作是在反捲積的偽逆背景下,我們利用生成模型來彌補經驗決定的卷積神經網路與現有方法之間的差距。我們產生一個實用的系統,提供了有效的策略來初始化網路的權重值,否則在卷積隨機初始化訓練過程中很難得到,實驗證明,當輸入的模糊影象是部分飽和的,我們的系統比之前的方法效果都要好。

模糊退化

影象模糊往往由多種因素導致,如:剪強度(飽和度),相機噪聲,壓縮等,定義如下模糊模型:

在這裡插入圖片描述

αx表示潛在的清晰影象,符號α≥1表示αx可能值超過相機感測器的動態範圍,因此被修剪。k為卷積核,通常被稱為一個點擴充套件函式(PSF),n為模型新增的相機噪聲,φ(·)是飽和限幅函式模型,定義φ(z) = min(z,zmax), zmax是限幅閾值範圍,ψb[·]是非線性(如JPEG)壓縮操作。

即使我們知道yk,想要復原αx還是比較困難,因為在剪裁的時候會有資訊損失,所以我們的目標是復原剪裁過的輸入^x,其中^x = φ(αx)

儘管求解^x和一個複雜的能量函式涉及到上面的公式很困難,從輸入影象x得到模糊影象比較簡單,根據卷積模型將各種可能的影象退化轉化為生成來合成影象,這激發了反捲積的學習過程,訓練影象對{ˆxi,ˆyi}。

分析

我們的目標是訓練一個網路結構 f(·),使得下面式子最小:
在這裡插入圖片描述

|N|為樣本集中影象對的個數。

我們已經使用了最近的兩種深度神經網路來解決這個問題,但都不成功。其中一個是Stacked Sparse Denoise Autoencoder (SSDAE) ,另一個為卷積神經網路(CNN),這兩種方法都是為了影象去噪設計的,對於SSDAE,我們選擇patch大小為17*17(patch表示某一點關聯的一片區域,而點和點之間的權要用到patch和patch之間的距離,然後把搜尋區域內的點加權平均)。在訓練中,我們收集了兩百萬個清晰的樣例及對應的模糊版本。其中一個例子如下:

在這裡插入圖片描述

從圖上看到,SSDAE的結果仍然比較模糊,CNN的效果稍微好一些,但它仍有模糊的邊緣和強烈的重影痕跡,這是因為這些網路結構是為了去噪,而沒有考慮到反捲積性質。

Pseudo Inverse Kernels(偽逆核心)

假設線性模糊模型為:y = x ∗ k

空間卷積可以轉化為頻域乘法:F(y) = F(x) · F(k).

其中F(·)表示離散傅立葉變換(DFT), 操作符·是元素相乘。在傅立葉域中,x可以表示為:

在這裡插入圖片描述

其中,F−1為離散傅立葉逆變換。x的解寫成一種空間卷積,核為 F−1(1/F(k)),核心實際上是一個跨越整個空間域的重複訊號。當噪聲出現時,通常使用正則化項來避免頻域中除數為零,使得偽逆(Pseudo Inverse)在空間域中快速衰減。

經典的維納反捲積相當於使用Tikhonov正則化矩陣。維納反捲積如下:

image

SNR為信噪比,k+為偽逆核,噪聲越大,1/SNR就越大。下圖(a)顯示了一個半徑為7的磁碟模糊核(disk blur kernel),通常用於模擬焦點模糊。下圖(b)是偽逆核k+且SNR=1E-4,一張使用此模糊核的影象如圖(c),k+結合反捲積的結果如圖(d)。這種方法可以去掉一部分影象中的模糊,但是噪聲和飽和會引起視覺偽影,這與我們對維納反捲積的理解是一致的。總結來說,使用深度卷積網路來做影象反捲積其實並不簡單,增加捲積核來簡單地修改網路結構會導致訓練難度增加,我們採用一種新的結構來改進網路,結果如圖(e)。

在這裡插入圖片描述

雖然Wiener方法不是最先進的,但是它的逆副核雖然有限但能夠提供足夠大的空間支援,在我們的神經網路系統中變得非常有用,這表明反捲積可以通過足夠空間卷積很好地近似。這解釋了中SSDA和CNN直接應用於反捲積的不成功。

  • SSDA無法很好地捕捉其完全連線結構的卷積性質。
  • CNN表現更好,因為如上所述,解卷積可以通過大核心卷積來近似。
  • 以前的CNN使用小卷積核心。然而,在我們的反捲積問題中,它不是一個合適的配置。

因此可以總結出,使用深度神經網路進行反捲積絕不是那麼簡單的。然而,簡單地通過使用大卷積核來修改網路將導致更高的訓練難度。我們提出了一種新的結構來更新網路。

網路結構

基於核可分性定理,將反捲積的偽逆核轉化為卷積網路。它使網路具有更強的表現力,對映到更高的維度以適應非線性特徵。

核可分性定理

核可分性是通過奇異值分解(SVD)來實現的,給定偽逆核k+,可以分解為

在這裡插入圖片描述

用uj,vj分別表示U和V的第j列,sj為第j個奇異值,原始的偽反捲積課表示為:

在這裡插入圖片描述

這樣,二維卷積可以看成是一維濾波器的加權和。在實驗中,近似地將k+看成一個可分的濾波器,將核與接近0或者非常小的sj相關聯,我們嘗試使用真正的模糊核來忽略小於0.01的奇異值,得到的可分離核的平均值30左右。使用的SNR越小,逆核的空間支援就越小,我們還發現,長度為100的逆核通常足以產生看似合理的反捲積結果,這一點對我們設計網路的結構非常重要。

影象反捲積神經網路(DCNN)

這個網路可以表示為:

在這裡插入圖片描述

其中,Wl是第(l-1)層到第l層的權值對映,bl-1為偏差。σ(·)為非線性啟用函式,可以是sigmoid或者tanh。

我們的網路包含兩個隱藏層,類似於可分離核的反轉設定。第一個隱藏層h1使用38個大規模一維核,大小為1211.第二個隱藏層h2使用38個1121的卷積核對應著h1中的38個對映。為了產生結果,使用一個11138的核,類似於使用奇異值sj的線性組合。

這樣設計的優點:

  • 它聚集了可分離核反轉進行反捲積,因此保證是最優的;
  • 非線性特徵和高維度結構使得網路比傳統的偽逆結構更具有表現力。
訓練DCNN

我們都自然影象採取兩種策略進行實驗,新增高斯噪聲(AWG)和JPEG壓縮技術,分為兩類:一類具有強烈的色相飽和度,一類沒有。飽和度影響了許多現有的反捲積演算法。PSNR(峰值信噪比)如圖:
在這裡插入圖片描述

從圖中可以得出兩點:

  • 訓練後的網路比簡單地執行可分離核反演具有優勢,無論是隨機初始化還是使用偽逆初始化。而且高維度對映和非線性特徵是我們的網路比簡單的可分離核反演更具表現力。
  • 使用可分離核反演初始化的PSNR值比隨機初始化後的更高,表明初始值會對網路產生影響,因此要進行調優。

其視覺比較如下:

image

其中,(a)-(c)是可分離核反演,使用隨機初始化權重和可分離反轉初始化,圖(c)明顯包含更多的邊緣和細節特徵,最後的DCNN並不等同於任何現有的反核函式,即使有各種正則化,因為它涉及到具有非線性的高維對映。

在彩色飽和的影象中,CNN的反捲積效能降低,由於噪聲和壓縮,視覺偽影也可能產生,接下來,我們將通過合併一個消除噪聲的CNN模組,轉向更深層次的結構來解決這些遺留的問題。

Outlier-rejection Deconvolution CNN (ODCNN)

完整的網路結構是將反捲積CNN與去噪CNN結合,如下:

在這裡插入圖片描述

去噪CNN具有兩個隱藏層,512個特徵對映,輸入影象卷積512核心的大1616送入隱層中。將反捲積CNN的最後一層與去噪CNN的第一層網路相連線,合併1136的核及512個1616的核產生512個大小為161636的核,在結合兩個模組的時候沒有非線性特徵,合併後權值的數量增加,我們將對其進行微調。

訓練ODCNN

我們為了訓練而模糊自然影象,使用2500張自然影象,隨機取樣得到兩百萬patch。我們獨立地訓練子網路,反捲積CNN使用前面說到的可分離初始化,其輸出作為去噪CNN的輸入。使用十萬張184*184的小塊到整個網路中進行微調,訓練樣本包括有噪聲、飽和度、有壓縮的小塊,微調後的ODCNN的PSNR值增加了2dB,特別是對那些飽和區域。

實驗和結論

本文中,我們呈現了幾種反捲積結果,使用磁碟和運動核心來比較效能,平均PSNR如下表,視覺效果對比如下圖:

在這裡插入圖片描述

在這裡插入圖片描述
我們的方法取得了極好的質量和視覺效果。

總的來說,我們提出了一種深度卷積網路結構來完成具有挑戰性的反捲積任務,我們的主要貢獻是使得傳統的反捲積方法通過一系列的卷積步驟來指導神經網路的設計和近似的反捲積,我們的系統新穎地使用了兩個模組對應的反捲積和偽影去除。由於網路很難訓練,採用監督的預訓練方法來初始化子網路,高質量的反捲積結果證明了該方法的有效性。