2019ICCV论文 Non-Local ConvLSTM for Video Compression Artifact Reductio
2019CVPR Non-Local ConvLSTM for Video Compression Artifact Reduction
針對視頻壓縮偽影的非局部ConvLSTM
Abstract
視頻壓縮偽影減少的目的是從低質量的壓縮視頻中恢復高質量的視頻。大多數現有的方法使用一個相鄰幀或一對相鄰幀(在目標幀之前和/或之后)來完成此任務。此外,由于整體質量較高的幀中可能含有質量較低的patch,而整體質量較低的幀中也可能存在質量較高的patch,因此,目前針對附近峰值質量幀(peak-quality frames,PQFs)的方法可能會遺漏低質量幀中的高質量細節。為了彌補這些不足,本文提出了一種新的端到端深度神經網絡——非局部ConvLSTM(簡稱np -ConvLSTM),該網絡利用多個連續幀。引入了一種近似的非局部策略來捕獲全局運動模式并跟蹤視頻序列的時空相關性。這種近似策略使非局部模塊以一種快速、低空間成本的方式工作。該方法利用目標幀的前一幀和后一幀來生成殘差,并根據殘差重建高質量的目標幀。在兩個數據集上的實驗表明,NL-ConvLSTM算法的性能優于現有的算法。
Introduction
由于通信帶寬和存儲空間的限制,視頻壓縮算法在許多實際應用(特別是移動應用)中得到了廣泛的應用。在顯著降低傳輸和存儲成本的同時,有損視頻壓縮也導致了各種壓縮偽影,如塊、邊緣/紋理浮動、蚊子噪聲和抖動[48]。這種視覺扭曲經常嚴重影響體驗的質量(quality of experience,QoE)。因此,視頻壓縮偽影減少成為多媒體和計算機視覺領域的一個重要研究課題[26,43,45]。
近年來,由于深度神經網絡的成功應用,壓縮圖像/視頻增強技術取得了顯著的進展。例如,[11, 12, 36, 49]直接利用deep convolutional neural networks去除圖像的壓縮偽影,而不考慮底層壓縮算法的特點。[16, 38, 43, 44]提出了以壓縮幀為饋源并輸出增強幀的模型。這些模型都使用單一幀作為輸入,不考慮相鄰幀的時間依賴性。為了利用相鄰幀間的時間相關性,[26]提出了深度卡爾曼濾波網絡,[42]采用面向任務的運動,[45]采用兩個運動補償的最近PQFs。但是[26]只使用了目標幀的前一幀,而[42,45]只采用了一對相鄰幀,這可能會遺漏其他一些相鄰幀的高質量細節(后面會解釋)。
???????? 視頻壓縮算法有幀內和幀間編解碼器。內部編碼幀(P和B幀)主要依賴于前面和后面的鄰居幀。因此,提取相鄰幀之間的時空關系可以為提高視頻增強性能提供有用的信息。然而,從相鄰的一/兩個幀甚至兩個最近的PQFs中挖掘細節信息對于壓縮視頻偽影降低是不夠的。為了說明這一點,我們在圖1中給出一個例子。結構相似度指標(SSIM)越大的幀通常被認為具有更好的視覺質量。在這里,雖然第140和143幀的整體視覺質量優于第142幀,裁剪質量最高的patch來自第142幀。如果使用現有的方法從視頻中挖掘時空信息,則會忽略這些patch中高質量的細節。
???????? 基于以上觀察,本文嘗試從目標幀的多個前后幀中獲取隱藏的時空信息,以提高視頻壓縮偽影降低的性能。為此,我們開發了一個非局部ConvLSTM框架,該框架使用非局部機制[3]和ConvLSTM[41]架構從幀序列中學習時空信息。為了加快非局部模塊的速度,我們進一步設計了一種近似有效的計算幀間像素相似度的方法。與現有方法相比,我們的方法至少在三個方面具有優勢:1)不明確需要精確的運動估計和補償;2)適用于H.264/AVC、H.265/HEVC等常用壓縮算法壓縮的視頻;3)提出的方法優于現有的方法。
???????? 本研究的主要貢獻包括:1)我們提出了一種利用目標幀的多個前后幀來減少視頻壓縮偽影的新想法,而無需顯式計算和幀間的補償運動。2)我們開發了一個端到端的深度神經網絡,稱為非局部ConvLSTM,用于從多個相鄰幀中學習時空信息。3)設計了一種近似計算幀間像素相似度的方法,極大地減少了計算和存儲開銷。4)我們在兩個數據集上進行了廣泛的實驗來評估所提出的方法,該方法在降低視頻壓縮偽影方面達到了最先進的性能。
Method
視頻壓縮的目標減少人工痕跡是從原始幀Yt的壓縮幀Xt推斷出一個高質量的Yt,Xt∈RC×N是在時間t的壓縮幀。這里C是單幀的通道的數量。為了使符號更清晰,我們將空間位置(寬度W和高度H)折疊為一維,N=HW。令Xt={Xt T,…, Xt + T}表示的序列(2 T + 1)連續壓縮框架,我們的方法以Xt作為輸入和輸出Y?T。
我們的方法是一個端到端可訓練的框架,由三個模塊組成:編碼器,NL-ConvLSTM模塊和解碼器,如圖2所示。分別負責從單個幀中提取特征,學習幀間的時空相關性,將高級特征解碼為殘差,最終重構出高質量的幀。
Encoder. 它設計了多個二維卷積層,用于從Xt中提取特征。以Xt為輸入,輸出Ft={Ft-T,…,Ft+T}。其中Ft∈RCf×N,對應從Xt獲得的特征,Cf表示輸出的特征的通道數。它單獨處理每一幀。
NL-ConvLSTM. 為了跟蹤幀序列的時空相關性,我們在編碼器和解碼器之間放置了一個ConvLSTM[41]模塊。ConvLSTM能夠從任意長度的幀序列中捕捉時空信息,但對大的運動和模糊運動處理效果不佳。為了解決這個問題,我們將非本地(NL)[3]機制嵌入到ConvLSTM中,并開發了NL-ConvLSTM模塊。這里,非局部相似度用于不同幀的像素,而不是同一幀[3]中的像素。NL - convlstm模塊可以描述為
與[37,41]中只給予t時刻特征Ft的ConvLSTM不同,NL-ConvLSTM將t-1時刻的特征Ft-1為輸入,輸出對應的隱藏狀態和單元狀態Ht, Ct∈RCh×N。這里,Ch是隱藏狀態和單元狀態的通道數。此外,在NL-ConvLSTM中,隱狀態Ht-1和細胞狀態Ct-1不直接被送入門操作。相比之下,我們計算Ft-1和Ft之間的幀間像素級相似度St,然后對Ht-1和Ct-1進行加權使用St作為權值。此外,本文還利用雙向ConvLSTM從前幀和后幀preceding and following frames.中學習時空相關性。在下面的部分中,我們只提到前向NL-ConvLSTM的操作。關于NL-ConvLSTM模塊的詳細信息,可以參考圖2(右)、圖3、3.2和3.3節。
Decoder. 它將NL-ConvLSTM模塊的兩個方向的隱藏狀態解碼為殘差,利用殘差重構出高質量的幀。具體來說,我們首先通過核大小為1×1的卷積層將隱藏狀態結合起來,然后使用多個堆疊的卷積層生成殘差。
3.2Non-local ConvLSTM
ConvLSTM可表示為[37]:
為了學習魯棒的時空依賴性,我們在ConvLSTM中采用非局部機制來幫助估計幀序列中的運動模式。作為ConvLSTM的擴展,NL-ConvLSTM可以表示為:
其中St∈RN×N為當前幀像素與前一幀所有像素之間的相似矩陣。NL是計算兩幀特征之間相似度矩陣的非局部算子,NLWarp是時刻(t-1)隱含狀態和單元狀態的加權和形式的扭曲操作。
按照[3]的非局部操作,我們工作中的幀間像素相似性和非局部扭曲操作如下:
其中i,j∈{1···N}表示特征圖中的位置,F (i)和H(i)是對應位置i的特征和狀態。Dt (i, j)和st(i, j)分別是t-1時刻之前特征圖位置i和t時刻特征圖位置j之間的所有通道的歐氏距離和相似性。St(I,j)滿足iSti,j=1。因此,非局部方法可以看作是一種特殊的注意機制[39]。
3.3兩階段非局部相似近似
對于高分辨率視頻,直接計算St∈RN×N和翹曲操作會產生極高的計算和內存成本。因此我們提出一個兩階段non-local 方法用于近似Dt為Dt,St為St,在保持精度的同時減少計算量和內存。近似方法的核心思想是在計算像素相似度之前,根據編碼器學習到的深度特征對圖像分塊進行預濾波。具體情況如下:
在第一階段,我們對編碼器向下采樣得到的特征圖使用平均池化,并減少塊匹配敏感性的幾何變換(移動和旋轉)。將平均池化核大小表示為p,下采樣特征圖表示為Ftp。然后將feature map的分辨率降為N/p2,即原分辨率的1/p2。下采樣特征圖Ftp中的每個超像素對應原始特征圖中p2個像素組成的塊。則可計算下采樣距離矩陣Dtp∈RNp22:
對任意Ftp的塊bt中的每個像素,我們只考慮最接近bt的在Ft-1p中的k塊的k×p2個像素。
???????? 在第二階段,我們計算并存儲Ft中的每個像素與其對應的Ft-1的k×p2個像素間的相似性。對于前一幀中的其他像素而言,Dt和St分別設置為+∞和0。由于相似的像素是稀疏的,一個像素可以用相鄰幀的幾個像素表示,因此top-k blocks近似的質量損失可以忽略不計。圖3給出了兩階段相似度近似的工作流程。Ct的NLWarp操作與Ht類似。為了簡單起見,我們在圖3中只顯示了對Ht的操作。
①首先在Ft-1中找到top-k個與Ft中的Ftp(j)block最相近的block②從Ft-1中抽取對應top-k最接近的塊的對應位置的Ht-1③在Ft-1和Ftpj間計算像素級相似度④為Ht執行NLWarp
???????? Complexity analysis.表一對比了我們的近似方法和原始方法的復雜度。由于logk?C,因此我們可以忽略Tab 1中有關尋找top-k個最近鄰block項的計算。我們將原有非局部方法的復雜度表示為ψ,我們的近似方法的復雜度表示為?,可被寫作O(Np22C+2kNCp2)。通過恰當的選擇k和p的值,使得kp2?N,我們有?ψ=12p4+kp2N?1,這意味著我們的方法大大降低了原始方法的計算成本。并且對于一個給定的k,?/ψ可以實現在p=Nk16時最小的1.5kN23。在內存成本方面也可以得出類似的結論。更具體地說,通過設置p=10、k=4、C=64、f=41,可以得到?與(O(NC2f2))接近,即具有f×f核的卷積層的計算復雜度。
???????? Non-local operation vs. motion compensation. 這兩種操作有相似之處也有不同之處。相似點:1)兩者都可以用于捕獲連續幀中的時空關系和運動模式。2)兩者都可以被看作是一種注意機制。在非局部操作中,the warped state Ht-1是通過所有的在Ht-1中的像素以加和的形式計算出來的,而在motion compensation中,Ht-1中的每個像素是通過與周圍鄰居像素通過插值,以加和的形式得到的。區別:在非局部操作中,每個像素通過在Ht-1的多個位置warp實現的。而motion不受固定流量大小的限制,這與固定流量大小必須設置的運動補償不同。因此,非局部操作可以更有效地捕捉全局運動模式。2)在非局部操作中,一旦提取特征就確定相似度;在運動補償中,我們需要訓練額外的層來產生運動場。
???????? 3.4 Implementation Details
???????? 在我們的實現中,遵循現有的方法[26,45],我們使用L2范數作為損失函數: 由于NL-ConvLSTM的優點,它可以通過一個小的內核捕獲全局運動。所以我們的NL-ConvLSTMs是使用3×3內核實現的。對于所有數據集,網絡訓練用Adam[20]優化器的初始學習速率10-4,minibatch大小為32。訓練時,NL-ConvLSTM以80×80的patch大小對原始序列和壓縮序列進行采樣。相反,在測試期間,全分辨率的視頻序列被輸入到我們的模型中。在所有實驗中,我們使用k=4和p=10來平衡效率和有效性,并對所有數據集設置T=3。
???????? 為了進一步加速非局部算子,在計算距離矩陣Dt時采用向量化。盡管向量化不會減少浮點運算的數量,但它可以通過并行計算來加速。通過把Dt展開成公式(4),我們有
Dt2=CtFt-121T+1?CtFt2T-2Ft-1TFt (7)
1∈RN×1是一個單位向量。我們采用公式(7)在第一階段計算Dtp,并執行公式(7)的稀疏版本,計算當前幀的每個像素與前一幀中預濾波的k×p2像素之間的距離。
總結
以上是生活随笔為你收集整理的2019ICCV论文 Non-Local ConvLSTM for Video Compression Artifact Reductio的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: pytorch安装实录(win10+cu
- 下一篇: ECCV2020论文-稀疏性表示-Neu