1. 程式人生 > 其它 >2021 Image Compression with Recurrent Neural Network and Generalized Divisive Normalization

2021 Image Compression with Recurrent Neural Network and Generalized Divisive Normalization

概要

該文提出了兩種有效的新編解碼塊:採用卷積層和Generalized Divisive Normalization(GDN)的分析(analysis)和合成塊(synthesis)。該文的網路利用pixel RNN方法進行量化。此外,為了改進整個網路,我們使用LSTM細胞對殘差影象進行編碼,以減少不必要的資訊。

1. 網路結構

下圖給出了兩塊影象壓縮的總體體系結構:

每個輸入(image patch)首先被傳遞到分析(analysis)編碼器塊,以豐富影象表示。類似地,合成(synthesis)-解碼器塊在迴圈神經網路細胞的幫助下重建解碼影象。

在端端框架中有三個模組帶有兩個新模組,即編碼器網路、分析塊、二值化器、解碼器網路和合成塊。

端到端框架的單次迭代在(1)中表示:

\[b_t=Bin(Enc_t(r_t-1)) \\ \hat{x}_t=Dec_t(bin_t)+\gamma \hat{x}_{t-1} \tag 1 \] \[r_t=x-\hat{x}_t, \ \ r_0=x,\ \ \hat{x}_0=0 \tag 2 \]

其中Enc和Dec是迭代\(t\)的編碼器和解碼器,\(bin_t\)是二進位制表示,\(\hat{x}_t\)是實際影象\(x\)的重建版本,\(\gamma =0\)\(One\ shot\ reconstruction\)

根據實際加權值和預測值之間的loss來進行每一次迭代訓練。

\[L_1=\sum \limits_{i=1}^{n}|y_{true}-y_{predicted}| \tag 3 \]

在可變率框架的每次迭代時的總體損失為:

\[L_1=\beta \sum \limits_{t}|r_t| \tag 4 \]

2.1 Analysis Block

提出了一種基於空間資訊的有效的空間自適應分析塊。我們的分析編碼器塊的結構包含三個輸入通道和64個輸出通道。圖層的核心大小為3,步幅為1。該分析塊由卷積層、廣義分裂歸一化技術組成。每一步都從仿射卷積開始:

\[v^{(k)}_i(m,n)=\sum \limits_j(h_{k,ij}*u_j^{(k)})(m,n)+c_{k,i} \tag 5 \]

\(v_i^{(k)}(m,n)\)

其中 \(i^{th}\)是輸入的channel維度,\(k^{th}\)是第\(k\ step,(m,n)\)是空間位置。\(x\)是輸入影象,由\(vector\ v_i^{(0)}(m,n)\)組成,輸出是\(y\),由\(vector\ u_i^{(3)}(m,n)\)組成。\(*\)代表2D卷積:

\[w_i^{(k)}(m,n)=v_i^{(k)}(s_km,s_k,n) \tag 6 \]

其中,步驟k處的降取樣因子用\(s_k\)表示。每一步之後都是GDN操作。現在,式(7),定義了GDN操作的所有兩個階段,其中\(\beta_{k,i}\)\(\gamma_{k,ij}\)是歸一化操作的兩個尺度和偏差引數:

2.2 Synthesis Block

考慮到最終重建影象的問題,該影象可能包含多個偽影。在量化後的解碼器側提出了一種有效的合成塊,以保持解碼影象的資訊和質量。如上圖所示,通過幾個卷積和逆GDN層來重建輸入影象。與上述的分析塊相同,解碼器模組由兩個階段組成,其中所有的過程都被反轉。經過iGDN操作後,特徵向量進入RNN單元進行進一步重建,反捲積層形成最終的重建影象。每一步都從卷積層開始,然後進行逆GDN運算,計算如下:

inverse GDN包括三個步驟,每一步都進行逆操作、降取樣和inverse GDN。

2.3 RNN Cell

該影象壓縮網路包括RNN個單元和一個畫素深度方案。在每次迭代中,使用RNN單元從影象中提取特徵。連續地記憶每個迭代過程中的殘差狀態,並重建影象。整個網路使用7個RNN單元,3個單元在編碼器側,4個單元在解碼器側。在每次迭代中,前一個單元格的估計結果都會傳遞到隱藏層以進行進一步的迭代。RNN單元格的簡化檢視如圖所示:

RNN單元格的hidden layer和memory layer狀態分別為ck−1和xk−1。第k次迭代的輸入特徵向量為\(x_k\),等於該迭代的上層輸出。每個單元格由兩個卷積層組成;\(conv\_{in}_i\)用於輸入特徵向量\(x_k\)\(conv\_h_i\)用於隱藏層。

在上述圖中,\(x_k\)\(c_{k−1}\)\(h_{k−1}\)是輸入向量。其中,\(X\)表示元素級的乘法。類似地,\(+\)表示元素級加法\(c_k\)\(h_k\)是這個單元格的輸出向量和下一個單元格的輸入向量。

這裡,\(x_k、c_{k-1}和h_{k-1}\)是來自卷積層的輸入向量。\(C_k\)\(h_k\)是每次迭代的計算方法,定義為:

2.4 Entropy Coding

我們通過在二值化器模組中使用不同的隱藏值來提高網路的效能。

上圖探究了一下通道數及GDN block的存在對於PSNR的影響。在上述實驗中,該文的網路中使用了Block+Conv(Enc64+Bin38)的引數。

3. 結果

4.總結

該文提出了在基於RNN的影象壓縮網路中嵌入的基於卷積層和GDN層的兩個有效塊,即分析塊和合成塊。採用畫素級RNN方法,利用線性卷積構造了一種具有一定隱藏值的畫素級二值量化方案。此外,為了進一步提高網路的效能,同時利用了RNN Cells。這些單元格被放置在編碼器和解碼器的部分,以提高效能。

論文是有提供程式碼的:程式碼

Reference:

Image Compression with Recurrent Neural Network and Generalized Divisive Normalization