論文連接:https://arxiv.org/abs/1703.10553
1.系統模型
系統主要包括Encoder,Importantce map,Decoder三部分網絡,encoder是對圖片進行初步編碼,以及得到圖片的特征圖,作為后續importantance map部分的輸入,Decoder是解碼部分,恢復原始圖片。
2.proxy function
Encoder網絡的輸出的編碼都是在(0,1)區間內,但是要將編碼轉換為二進制,所以需要對得到的編碼進行量化,量化用到的函數如下:
但是由於量化函數在0.5以外任何地方的梯度都是0,0.5出為無窮大,如果采用這個函數,這種梯度導致網絡訓練過程中的難以通過反向傳播進行優化,所以這里引入一個新的函數:
引入新的函數后,可以看到梯度如下:
在前向編碼的過程中依舊使用原始的函數進行量化,但是梯度反向傳播進行優化的過程中,通過新引入的函數進行計算。
3.Importance Map
在對圖像進行編碼時,編碼器會對圖像的每一個像素進行編碼,但是在實際圖像中,圖像中包含的內容會存在空間差異,有的部分細節比較多,比如邊緣,紋理等,這些部分需要更多的bit進行編碼以便保留細節,但是有些背景部分,圖像比較平緩,沒有太多的內容,這些部分並不需要保留太多信息,所以可以用少量的bit進行編碼。因此不區分空間差異進行的編碼不僅會浪費資源,還會導致細節部分失真。所以在該系統中引入Importance Map網絡:
這部分網絡把編碼網絡得到的特征圖作為輸入,通過對圖像內容的空間差異進行分析,對不同的部分按復雜度分配bit,指導后續編碼。從圖像可以看出,針對壓縮率的不同,分配方式不同,當壓縮率要求高時,背景部分得到的bit數極少,只有一些圖像內部的邊緣部分分得較多的bit。
4.熵編碼
由編碼網絡的和Importance Map網絡得到的編碼並沒有進行熵約束,因此不是最優的,仍然存在壓縮空間,於是引入熵編碼,熵編碼可以用算數編碼如CABAC,該文章采用神經網絡的方式進行編碼,編碼網絡如下:
在對某bit進行編碼時,該網絡將其余部分分為Available bit和Unavailable bit,區分的標准是是否可以用來對該bit進行預測以及Importance Map中是否為0。
5.損失函數
由於圖像壓縮需要兼顧壓縮率和失真情況,所以需要對壓縮率和失真狀況進行聯合優化,優化函數如下:
第一部分代表原始圖像和壓縮后圖像的失真,使用均方誤差函數,后一部分是壓縮比例。