通過高效的子像素卷積神經網路實現實時的單一圖像和視頻超解析度
機器之心原創
作者:Shawn
參與:Ellen Han、黃小天、王灝
不久之前,Wenzhe Shi 等人在 arXiv 上發表了一篇名為《通過高效的子像素卷積神經網路實現實時的單一圖像和視頻超解析度(Real-Time Single Image and Video Super-Resolution Using an Efficient Sub-Pixel Convolutional Neural Network)》的論文,機器之心海外分析師團隊從多個方面對其做了解讀。
論文地址:https://arxiv.org/pdf/1609.05158.pdf
論文實現:https://github.com/torch/nn/blob/master/PixelShuffle.lua
前言
單一圖像/視頻超解析度的目標是從單一低解析度圖像還原出高分辨圖像。論文作者提出了一種可以高效計算的卷積層(稱之為子像素卷積層(sub-pixel convolution layer))以便將最終的低解析度特徵映射提升(upscale)為高解析度輸出。通過這種方式,而不是使用雙線性或雙三次採樣器(bilinear or bicubic sampler)等人工提升濾波器,子像素卷積層通過訓練可學習更複雜的提升操作,計算的總體時間也被降低。相比於原始輸入圖像/幀,你需要做的只是定義一個重建損失(reconstruction loss),並進行端到端的訓練。
如上所示,有一個單一圖像超解析度的實例。左圖基於雙三次提升濾波器(bicubic upscaling filter),右圖基於提出的模型。很明顯,相較於左圖,右圖更清晰,且背景噪音更少。
之前,單一圖像超解析度基於高解析度空間,這有一些主要缺點:一方面,處理卷積操作時,如果你首先提升低解析度圖像的解析度,計算時間將增加;另一方面,從低解析度空間到高解析度空間的轉化基於傳統插值(interpolation)方法,這也許不會帶來解決病態重建問題的額外信息。
提出的模型
考慮到這些不足,作者假定我們可在低解析度空間進行超分辨操作;基於這一假定,他為一個有 L 層的網路構建了子像素卷積層,該網路可正常學習 n_{L-1} 個特徵映射,但最後,網路通過「像素洗牌」(pixel shuffle)實現高解析度輸出,接著完成一個更複雜的從低解析度到高解析度的映射,這是一個簡單而直接的想法。
上圖是從低解析度圖像映射到高解析度圖像的整個模型。如上所示,他們應用第 l 層子像素卷積將 I_{LR} 特徵映射提高到 I_{SR}。
上面的公式是該網路的數學描述,其中 W_l, b_l, l ∈ (1, L - 1) 分別是可學習的權重和偏差(bias)。W_l 是大小為 n_{l-1} x n_l x k_l x k_l 的二維卷積張量,其中 n_{l-1} 是層 l-1 中特徵映射的數量,n_l 是層 l 中濾波器的數量,k_l 是濾波器大小,b_l 是偏差向量。非線性函數 φ 被應用在元素方面(element wise)。
在最後一層進行提升操作。一個提升低解析度圖像的方式是使用大小為 k_s 的濾波器和權重間隔 1/r ,在低解析度空間卷積 1/r 步幅,當落在像素之間的濾波器的權重沒有被簡單計算時,這一卷積操作可激活濾波器的不同部分。為了建模這一操作,作者給出了一個數學公式:
其中 PS 指周期性像素洗牌,這可將輸入張量 C * r^2 x H x W 重排為銳化張量 C x rH x rW。這個操作的效果已顯示在上圖中。
在 numpy 中,我們可將其編碼為:
def PS(Input, r):
assert len(Input.shape) == 3
assert r>0
r = int(r)
Output = np.zeros((Input.shape[0]*r, Input.shape[1]*r, Input.shape[2]/(r*2)))
C = Ouput.shape[2]
for x in range(Output.shape[0]):
for y in range(Output.shape[1]):
for c in range(Output.shape[2]):
a = np.floor(x/r).astype("int")
b = np.floor(y/r).astype("int")
d = C*r*(y%r) + C*(x%r) + c
print a, b, d
Output[x, y, c] = Input[a, b, d]
return Output
注意,卷積操作符 W_I 具有 n_{l-1} x C*r^2 x k_l x k_l 銳化,並且最後一層沒有非線性特性。
訓練目標基於均方誤差 (MSE)。在給定高解析度訓練數據集 I_n^{HR}, n=1 ... N 的情況下,可生成相應的低解析度圖像 I_n^{LR}, n=1 ... N,並在超解析度重建之後以像素的方式(pixel wise)計算 MSE 損失:
圖像超解析度結果
作者從 ImageNet 選了圖像用於訓練。對於數據預處理,由於人類對亮度變化更敏感,他們將圖像從 RGB 色彩空間轉化到 YCbCr 色彩空間。在訓練期間,從原始圖像 I^{HR} 中提取 17r x 17r 像素的子圖像 (例如,可選擇 r = 2, 那麼其為 34 x 34)。性能指標基於 PSNR。
上圖所示為單一圖像超解析度重建結果。提出的模型實現了最佳 PSNR,並且超分辨圖像的視覺對比表明,提出的模型創建了一個更銳化更高對比的圖像,並為其他方法提供了顯著改進。
上表顯示了不同數據集的平均 PSNB。每類的最佳結果用粗體標出。相較於這些數據集中的其他模型,提出的模型表現更佳。
運行時間分析
提出的模型的一個巨大優勢是速度。作者最終在 Set14 數據集上評估了其模型:
上圖為在進行超解析度重建操作時,不同模型在精度與速度間的權衡。相較於其它方法,上圖表明了顯著的提速 (> 10x) 以及更佳的性能 (+0.15 dB),這使得在單塊 GPU 上為超解析度 HR 視頻實時運行提出的模型成為可能。
評論者的思考
我認為單一圖像超解析度的力量的毋庸贅述。例如,它可以應用於視頻播放、人臉識別以及醫學影像領域。在 HD 視頻播放領域,你可以享受更多的視頻資源;在人臉識別以及醫學影像領域,它能幫助研究者分析數據。本文的貢獻在於採用一項稱為像素洗牌的簡單技術來學習單一圖像超解析度模型。在這種情況中,相較於以前固定的上採樣內核,本文提出的模型不僅可學習更複雜的上採樣函數,也可極速實時地運行該模型。基於這項技術,模型可實現 HD 視頻超解析度的實時播放。更重要的是,由於高效的像素洗牌技術,模型也可直接應用於 3D 卷積,這對時空視頻建模至關重要。
※改進卷積神經網路,你需要這14種設計模式
※更偏好白人男性?Science新研究證明人工智慧也能學會偏見
※谷歌官方揭秘AutoDraw繪畫工具原理:讓機器學會理解藝術
※用對抗網路生成訓練數據:A-Fast-RCNN的實現
TAG:機器之心 |
※通過優酷實現在自己的網頁上播放視頻
※實拍韓國普通百姓的真實現狀,並沒有想像中的那麼幸福
※中國科大利用干涉條紋實驗實現對量子相干性的直接測度
※教你一招,簡單幾步就能實現超贊的圖片合成效果
※孿生網路實現小數據學習!看神經網路如何找出兩張圖片的相似點
※制度是實現歷史前進的工具
※「量子隱形傳態」實驗:能實現科幻中的超時空傳輸嗎?
※實拍:鏡頭下,印度紅燈區「雛妓」的真實現狀
※實拍:印度尼西亞的精神病人真實現狀,像動物一樣被關在牢籠!
※超高真空-四探針掃描隧道顯微鏡系統的徹底改造及其強大功能的實現
※騰訊馮牮:基於卷積神經網路在手機端實現文檔檢測
※趙麗穎捂得嚴嚴實實現身機場,手中的粉紅兔子表情亮了,實力嫌棄
※這隻藍胖子的神奇道具,竟然有這麼多已經被實現了
※漢武帝一生都未能實現的夢想,他只通過一戰就實現了
※顛覆你想像,普通燈泡都能實現觸摸投影了
※深海潛水,想即時晒圖?水下感測器網路真的可能實現!
※如何實現模擬人類視覺注意力的循環神經網路?
※堆疊解卷積網路實現圖像語義分割頂尖效果
※網球王子里出現的哪些擊球技術是在現實可以實現的?