計算機視覺工做者們,老是但願能「看清」繁華世界的每一個像素點,可是卻發現分辨率的極限,是他們繞不過去的坎。今天就來和你們聊一聊分辨率以及超分辨圖像重建。
算法
分辨率極限api
分辨率極限,不管對於圖像重建或是圖像後處理算法的研究者,都是一項沒法迴避的技術指標。時間分辨率性能決定了視頻輸出的幀率,即實時效果;空間分辨率性能決定了圖像的畫面清晰度到底是720P,1080P,仍是4K;色階分辨率性能決定了圖像顯示色彩的豐滿程度與粒度。所以,分辨率是一幅圖像、一段視頻的核心。服務器
今天就簡單說一下空間分辨率。網絡
在實際的應用場景中,受限於圖像採集設備成本、視頻圖像傳輸帶寬,抑或是成像模態自己的技術瓶頸,咱們並非每一次都有條件得到邊緣銳化,無塊狀模糊的大尺寸高清圖像。在這種需求背景下,超分辨重建技術應運而生。app
圖1機器學習
應用場景I:圖片壓縮與傳輸,即以較低的碼率進行圖像編碼,在傳輸過程當中可極大節省轉發服務器的流量帶寬,在客戶端解碼獲得相對低清晰度的圖片,最後經過超分辨重建技術處理得到高清晰度圖片ide
圖2函數
應用場景II:生物組織成像 左圖:光聲顯微成像圖像 右圖:光聲超分辨顯微圖像,細微的蜜蜂翅膀紋理清晰可見【5】性能
傳統超分辨重建技術大致上可分爲4類【1, 2】,分別是預測型(prediction-based), 邊緣型(edge-based), 統計型(statistical)和圖像塊型(patch-based/example-based)的超分辨重建方法。學習
目前你們使用最多的是圖像塊型,咱們在圖像塊型領域選擇了4篇基於深度學習的圖像塊型超分辨重建的經典論文進行關鍵技術點分析。從論文中咱們能夠看出研究者們對於超分辨任務的不一樣的理解與解決問題思路。
在2012年AlexNet以15.4%的歷史性超低的分類錯誤率得到ImageNet大規模視覺識別挑戰賽年度冠軍,吹響了深度學習在計算機視覺領域爆炸發展的號角以後。超分辨重建技術也開始採用深度學習的思想,以期得到更優的算法表現。
文章1:Image Super-Resolution Using Deep Convolutional Networks
做者: Chao Dong, Chen Change Loy, Kaiming He and Xiaoou Tang
SRCNN是基於深度學習的超分辨重建領域的開山之做,繼承了傳統機器學習領域稀疏編碼的思想,利用三層卷積層分別實現: 1. 圖像的圖像塊抽取與稀疏字典創建;2. 圖像高、低分辨率特徵之間的非線性映射;3. 高分辨率圖像塊的重建。
具體地,假設須要處理的低分辨率圖片的尺寸爲H × W × C, 其中H、W、C分別表示圖片的長、寬和通道數;SRCNN第一層卷積核尺寸爲C × f1 × f1 × n1,能夠理解爲在低分辨率圖片上滑窗式地提取f1 × f1的圖像塊區域進行n1種類型的卷積操做。在全圖範圍內,每一種類型卷積操做均可以輸出一個特徵向量,最終n1個特徵向量構成了低分辨率圖片的稀疏表示的字典,字典的維度爲H1 × W1 × n1;SRCNN第二層卷積核尺寸爲n1 × 1 × 1 × n2,以創建由低分辨率到高分辨率稀疏表示字典之間的非線性映射,輸出的高分辨率稀疏字典的維度爲H1 × W1 × n2,值得注意的是在這一步中SRCNN並未採用全鏈接層(fully connected layer)來進行特徵圖或是稀疏字典之間的映射,而是採用1x1卷積核,從而使得空間上每個像素點位置的映射都共享參數,即每個空間位置以相同的方式進行非線性映射; SRCNN第三層卷積核尺寸爲n2 × f3 × f3 × C,由高分辨率稀疏字典中每個像素點位置的n2 × 1向量重建f3 × f3圖像塊,圖像塊之間相互重合覆蓋,最終實現圖片的超分辨率重建。
圖3 SRCNN的三層卷積結構【1】
文章2:Real-Time Single Image and Video Super-Resolution Using an Efficient
Sub-Pixel Convolutional Neural Network
做者: Wenzhe Shi, Jose Caballero, Ferenc Huszár, Johannes Totz, Andrew P. Aitken,Rob Bishop, Daniel Rueckert, Zehan Wang
在SRCNN將CNN引入超分辨重建領域後,研究者們開始考慮如何利用「卷積」來解決更深刻的問題。若是對一幅高分辨率圖片作高斯平滑或是降採樣能夠等效爲卷積操做,那麼由降採樣後低分辨率圖片恢復高分辨率的過程則相應的等效爲反捲積操做(deconvolution)。此時咱們的計算任務是學習合適的解卷積核,從低分辨率圖片中恢復高分辨率圖像。CNN中反捲積層的標準作法如圖4所示,對一幅低分辨率圖片填充零值(zero padding),即以每個像素點位置爲中心,周圍2×2或3×3鄰域填充0,再以必定尺寸的卷積核進行卷積操做。
圖4 標準反捲積層實現示意圖
可是標準反捲積操做的弊端是顯而易見的,首先,填充的零值並不包含任何圖像相關的有效信息,其次填充後的圖片卷積操做的計算複雜度有所增長。在這種狀況下,Twitter圖片與視頻壓縮研究組將sub-pixel convolution的概念引入SRCNN中。
圖5 Efficient Sub-Pixel Convolutional Neural Network (ESPCN)網絡結構【2】
Sub-Pixel核心思想在於對於任意維度爲H × W × C的圖像,標準反捲積操做輸出的特徵圖維度爲rH × rW × C,其中r爲超分辨係數即圖片尺寸放大的倍數,而sub-pixel的輸出特徵圖維度爲H × W × C × r2,即令特徵圖與輸入圖片的尺寸保持一致,但增長卷積核的通道數,既使得輸入圖片中鄰域像素點的信息獲得有效利用,還避免了填充0引入的計算複雜度增長。
文章3:Perceptual Losses for Real-Time Style-Transfer and Super-Resolution
做者: Justin Johnson, Alexandre Alahi, Li Fei-Fei
相較於其餘機器學習任務,如物體檢測(object detection)或者實例分割(instance segmentation),超分辨重建技術中學習任務的損失函數的定義一般都相對簡單粗暴,因爲咱們重建的目的是爲了使得重建的高分辨率圖片與真實高清圖片之間的峯值信噪比(Peak Signal-to-Noise Ratio, PSNR)儘量的大,所以絕大多數的基於深度學習的超分辨重建研究都直接的將損失函數設計爲平均均方差(Mean Square Error, MSE),即計算兩幅圖片全部對應像素位置點之間的均方差,因爲MSE Loss要求像素點之間位置一一對應,所以又被稱做Per-Pixel Loss。
但隨着技術的發展,研究者慢慢發現Per-Pixel Loss的侷限性。考慮一個極端的狀況,將高清原圖向任意方向偏移一個像素,事實上圖片自己的分辨率與風格並未發生太大的改變,但Per-Pixel Loss卻會由於這一個像素的偏移而出現顯著的上升,所以Per-Pixel Loss的約束並不能反應圖像高級的特徵信息(high-level features)。所以研究圖像風格遷移的研究者們相對於Per-Pixel Loss在2016年的CVPR會議上提出了Perceptual Loss的概念。
圖6 基於Perceptual Loss的全卷積網絡結構【3】
基於Per-Pixel Loss的超分辨重建網絡目標在於直接最小化高清原圖與超分辨重建圖像之間的差別,使得超分辨重建圖像逐步逼近原圖的清晰效果。但Perceptual Loss最小化的是原圖與重建圖像的特徵圖之間的差別,爲了提升計算效率,Perceptual Loss中的特徵圖由固定權重值的卷積神經網絡提取,例如在ImageNet數據集上預訓練獲得的VGG16網絡,如圖7所示,不一樣深度的卷積層提取的特徵信息不一樣,反映的圖像的紋理也不一樣。
圖7 不一樣深度的卷積層提取的圖片特徵示意圖【3】
所以研究者們在訓練超分辨神經網絡時,利用跨間隔的卷積層(strided convolution layer)代替池化層(pooling layer)構建全卷積神經網絡(Fully Convolutional Network, FCN)進行超分辨重建,並在卷積層之間添加殘差結構(residual block)以在保證網絡擬合性能的前提下加深網絡深度得到更佳表現。最終利用VGG16網絡對原圖與重建圖像進行特徵提取,最小化二者特徵圖之間的差別使得超分辨重建圖像不斷逼近原圖的分辨率。
文章4: RAISR: Rapid and Accurate Image Super Resolution
做者: Yaniv Romano, John Isidoro, and Peyman Milanfar
前面提到的幾種典型的圖像塊型(也被稱做樣例型)超分辨技術,都是在高低分辨率圖像塊一一對應的數據基礎上,學習由低分辨率到高分辨率圖像塊的映射。具體的來講,一般這種映射是一系列的濾波器,針對輸入圖片不一樣像素位置點的不一樣的紋理特徵來選擇適當的濾波器進行超分辨重建。
基於這種思想,Google於2016年在SRCNN, A+以及ESPCN等超分辨研究的基礎上發佈了RAISR算法,該算法主打高速的實時性能與極低的計算複雜度,核心思想在於利用配對的高低分辨率圖像塊訓練獲得一系列的濾波器,在測試時根據輸入圖片的局部梯度統計學特性索引選擇合適的濾波器完成超分辨重建。所以RAISR算法由兩部分組成,第一部分是訓練高低分辨率映射(LR/HR mapping)的濾波器,第二部分是創建濾波器索引機制(hashing mechanism)。
圖8 RAISR 2倍上採樣濾波器【4】
圖9 RAISR在2x上採樣率時與SRCNN, A+等超分辨算法的技術指標對比
左圖爲PSNR-runtime指標,右圖爲SSIM-runtime指標【4】
結語
超分辨重建在醫學影像處理、壓縮圖像加強等方面具備廣闊的應用前景,近年來一直是深度學習研究的熱門領域。卷積和殘差構件的改進、不一樣種類perceptual loss的進一步分析、對抗生成網絡用於超分辨重建的探索等都是值得關注的方向。
參考文獻
[1] Dong, Chao, et al. "Image Super-Resolution Using Deep Convolutional Networks." IEEE Transactions on Pattern Analysis & Machine Intelligence 38.2(2016):295-307.
[2] Shi, Wenzhe, et al. "Real-Time Single Image and Video Super-Resolution Using an Efficient Sub-Pixel Convolutional Neural Network." (2016):1874-1883.
[3] Johnson, Justin, A. Alahi, and F. F. Li. "Perceptual Losses for Real-Time Style Transfer and Super-Resolution." (2016):694-711.
[4] Romano, Yaniv, J. Isidoro, and P. Milanfar. "RAISR: Rapid and Accurate Image Super Resolution." IEEE Transactions on Computational Imaging 3.1(2016):110-125.
[5] Conkey, Donald B., et al. "Super-resolution photoacoustic imaging through a scattering wall." Nature Communications 6(2015):7902.