paper | Non-Local ConvLSTM for Video Compression Artifact Reduction


摘要

現有的方法使用單個相鄰幀或一對相鄰幀(在目標幀之前和/或之后)來完成幀質量增強。此外,由於高質量的整體幀可能包含低質量的patch,而高質量的patch可能存在於低質量的整體幀中,因此,目前關注於附近的峰值質量幀(PQFs)的方法可能會忽略低質量幀中的高質量細節。為了彌補這些不足,本文提出了一種利用多個連續幀的新型端到端深度神經網絡——非局部卷積神經網絡(NL-ConvLSTM)。在NL-ConvLSTM中引入了一種近似的非局部策略來捕獲全局運動模式並跟蹤視頻序列中的時空相關性。該方法利用目標幀的前幀和后幀生成殘差,重構出高質量的幀。在兩個數據集上的實驗表明,NL-ConvLSTM的性能優於現有的方法。

1.介紹

2.相關工作

(這篇文章,涉及到convLSTM和non-local兩篇論文,我對convLSTM進行了實現,師兄講過non-local,有時間再總結它們。)
我們使用NL-ConvLSTM機制來利用多個幀,在不需要顯式運動估計和補償(MFQE需要)的情況下捕獲幀序列中的時空變化,采用近似策略進行非局部相似度計算,可以有效地減少偽影,並獲得最優的性能。

3.方法

減少視頻壓縮偽影的目標是從一個壓縮過的幀\(X_{t}\)推斷出高質量的幀\(\hat{Y}_{t}\).\(X_{t} \in \mathbb{R}^{C \times N}\)是時刻t時的壓縮幀。\(C\)是單張幀的channel數,\(N=HW\)\(N\)是一維的,長度為\(H*W\)\(H\)是幀的高,\(W\)是幀的寬。\(X_{t} \in \mathbb{R}^{C \times N}\)表示一個(2T+1)連續壓縮幀序列,以\(X_{t}\)為輸入,\(\hat{Y}_{t}\)為輸出。

3.1 框架

我們的方法是一個端到端的可訓練框架,由編碼器、NL-ConvLSTM模塊和解碼器三個模塊組成,如圖2所示。它們分別負責從單獨的幀中提取特征,學習幀間的時空相關性,將高層特征解碼為殘差,最終重構出高質量的幀。

編碼器。它采用了幾個二維卷積層來提取\(X_{t}\)的特征\(X_{t}\)作為輸入,輸出為\(\mathcal{F}_{t}=\left\{F_{t-T}, \ldots, F_{t+T}\right\}\)\(F_{t} \in \mathbb{R}^{C_{f} \times N}\)是從相應的\(X_{t}\)中提取到的特征,\(C_{f}\)是輸出特征的channel數。它單獨處理每一幀。

NL-ConvLSTM。為了跟蹤幀序列中的時空相關性,我們在編碼器和解碼器之間放置了一個ConvLSTM[41]模塊。ConvLSTM能夠從任意長度的幀序列中捕獲時空信息,但不擅長處理大的運動和模糊運動。為了解決這一問題,我們將non-local[3]機制嵌入到ConvLSTM中,並開發了NL-ConvLSTM模塊。這里,非局部相似性用於不同幀的像素,而不是用於幀[3]內的像素。NL-ConvLSTM模塊N可以描述為

\[\left[\mathcal{H}_{t}, \mathcal{C}_{t}\right]=\mathcal{N}\left(F_{t-1}, F_{t},\left[\mathcal{H}_{t-1}, \mathcal{C}_{t-1}\right]\right) \]

不同於[37,41]中在t時刻只使用特征\(F_{t}\)送入的ConvLSTM, NL-ConvLSTM 把\(F_{t-1}\)也作為輸入。輸出相應的hidden state 和 cell state \(\mathcal{H}_{t}, \mathcal{C}_{t} \in \mathbb{R}^{C_{h} \times N}\)。這里,\(C_{h}\)是hidden state和cell state的channel數。此外,\(\mathcal{H}_{t-1}\)\(\mathcal{C}_{t-1}\)在NL-ConvLSTM中沒有直接輸入到門操作中.反,我們計算\(F_{t−1}\)\(F_{t}\)之間的幀間像素相似度\(S_{t}\),然后對\(H_{t−1}\)\(C_{t−1}\)\(S_{t}\)為權重進行加權求和。本文還使用了雙向ConvLSTM來學習前后幀的時空依賴性。在接下來的部分中,我們只提到了前向NL-ConvLSTM的操作.關於NL-ConvLSTM模塊的詳細內容可以參考圖2(右)、圖3、3.2和3.3部分。

解碼器。將NL-ConvLSTM模塊兩個方向的隱藏狀態解碼為殘差,重構出高質量的幀。具體來說,我們首先通過一個kernel size為1×1的convolutional layer來合並這些hidden state,然后使用幾個堆疊的convolutional layers來產生殘差。

3.2 Non-local ConvLSTM

ConvLSTM可以描述為如下[37]:

\[\left[\mathcal{H}_{t}, \mathcal{C}_{t}\right]=\operatorname{ConvLSTM}\left(F_{t},\left[\mathcal{H}_{t-1}, \mathcal{C}_{t-1}\right]\right) \]

為了學習魯棒的時空相關性,我們將非局部機制引入到ConvLSTM中來幫助估計幀序列中的運動模式。作為ConvLSTM的延伸,NL-ConvLSTM可以表示為:

\[\begin{aligned} S_{t} &=N L\left(F_{t-1}, F_{t}\right) \\\left[\hat{\mathcal{H}}_{t-1}, \hat{\mathcal{C}}_{t-1}\right] &=N L W \operatorname{arp}\left(\left[\mathcal{H}_{t-1}, \mathcal{C}_{t-1}\right], S_{t}\right) \\\left[H_{t}, C_{t}\right] &=\operatorname{Conv} L S T M\left(F_{t},\left[\hat{\mathcal{H}}_{t-1}, \hat{\mathcal{C}}_{t-1}\right]\right) \end{aligned} \]

\(S_{t} \in \mathbb{R}^{N \times N}\)表示當前幀的像素與前一幀的所有像素之間的相似性矩陣。NL是計算兩幀特征間相似矩陣的非局部算子,NLWarp是對t-1時刻的隱狀態和單元狀態進行加權和運算。
在非局部操作[3]之后,我們工作中的幀間像素相似度和非局部warping操作如下:

\[\begin{aligned} D_{t}(i, j) &=\left\|F_{t-1}(i)-F_{t}(j)\right\|_{2} \\ S_{t}(i, j) &=\frac{\exp \left(-D_{t}(i, j) / \beta\right)}{\sum_{\forall i} \exp \left(-D_{t}(i, j) / \beta\right)} \\\left[\hat{\mathcal{H}}_{t-1}, \hat{\mathcal{C}}_{t-1}\right] &=\left[\mathcal{H}_{t} \cdot S_{t}, \mathcal{C}_{t} \cdot S_{t}\right] \end{aligned} \]

\(i, j \in\{1, \cdots, N\}\)為特征圖中像素的索引,\(F(i)\)\(\mathcal{H}(i)\)是位置\(i\)處的對應的特征和狀態。\(D_{t}(i, j)\)\(S_{t}(i, j)\)為t-1時刻前一特征圖中像素i與t時刻當前特征圖中像素j在所有通道上的歐氏距離和相似度。\(S_{t}(i, j)\)滿足\(\sum_{i} S_{t}(i, j)=1\),因此,非局部方法可以看作是一種特殊的注意機制[39]。

3.3. Two-stage Non-local Similarity Approximation

對於高分辨率的視頻,直接計算\(S_{t} \in \mathbb{R}^{N \times N}\),並且進行warping操作,會產生極高的計算量和內存開銷。因此,我們提出一個兩階段的non-local方法近似\(D_{t}\)\(\hat{D}_{t}\),近似\(S_{t}\)\(\hat{S}_{t}\),在保證精度的同時,減少了計算量和內存。我們的近似方法的核心思想是根據編碼器學習到的深度特征對圖像塊進行預濾波,然后再計算像素級的相似度。詳情如下:

在第一階段,我們使用平均池從編碼器中提取feature map,並減少幾何變換(移位和旋轉)的塊匹配靈敏度。表示平均池化的核大小為\(p\),下采樣特征圖為\(F_{t}^{p}\)。然后將feature map的分辨率降低到\(N / p^{2}\),即,為原分辨率的\(1 / p^{2}\)。下采樣特征圖\(F_{t}^{p}\)的每個超像素對應於原始特征圖中的\(p^{2}\)像素塊。因此,向下采樣的距離矩陣\(D_{t}^{p} \in \mathbb{R}^{\left(N / p^{2}\right)^{2}}\)可以通過下面這個式子計算:

\[D_{t}^{p}(i, j)=\left\|F_{t-1}^{p}(i)-F_{t}^{p}(j)\right\|_{2}$$. For each pixel in any block $b_{t}$ of $F_{t}^{p}$ , we consider only $k*p^{2}$ pixels in the $k$ blocks of $F_{t}^{p}$ that are nearest to $b_{t}$. 在第二階段,我們計算並存儲$F_{t}$的每個像素與$F_{t-1}$對應的$k \times p^{2}$像素之間的相似性。而其他像素在前面的幀,$\hat{D}_{t}$元素和$\hat{S}_{t}$分別設置為$+\infty$和$0$。由於相似像素是稀疏的,一個像素可以由相鄰幀的幾個像素來表示,所以top-$k$塊近似的質量損失可以忽略不計。圖3展示了兩階段相似度近似的工作流程。$\mathcal{C}_{t}$的NLWarp操作與$\mathcal{H}_{t}$相似。為了簡單起見,我們在圖3中只顯示了$\mathcal{H}_{t}$的操作。 ![](https://img2018.cnblogs.com/blog/1880127/202002/1880127-20200221105245075-286974345.png) (后面還有復雜度分析,non-local與運動補償的比較,以及實驗,這是大佬對這篇文章的看法https://www.cnblogs.com/RyanXing/p/11924219.html,看了之后發現這篇文章自己並沒有看太懂,特別是加速non-local。實驗和總結也很重要,慢慢來)\]


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM