天天看點

【圖像壓縮】多層超先驗模型 《Coarse-to-Fine Hyper-Prior Modeling for Learned Image Compression》

第一篇中在模組化部分表述不是很清晰,模組化部分用的第二篇。
【圖像壓縮】多層超先驗模型 《Coarse-to-Fine Hyper-Prior Modeling for Learned Image Compression》
【圖像壓縮】多層超先驗模型 《Coarse-to-Fine Hyper-Prior Modeling for Learned Image Compression》

緒論

基于超先驗和空間上下文的模型在模組化長期依賴方面有局限性,不能很好地榨幹圖像中的空間備援度。本文提出一個多層超先驗模型,并使用由粗到細的架構,以進一步減少空間備援。Signal Preserving Hyper Transforms是對隐層表示的更深入的分析變換,Information Aggregation Reconstruction 最大化利用多層邊資訊進行重建。

基于超先驗和上下文模型存在的問題:目前待編碼元素的機率值取決于少部分已編碼元素,限制了長期條件機率估計的準确性;由于自回歸模型需要順序計算,難以并行加速;由于淺層網絡限制,分析、合成變換無法在保證重建品質的同時最大程度減少空間備援;超先驗傳輸的資訊沒有被用于重建圖像;超先驗和上下文模型的互動和合作方式未得到很好的研究。

通過分析,上下文依賴可以模組化為更高層的隐層表示。

動機

盡管使用GDN進行分析變換可以很大程度上減少像素間的空間備援,進而将隐層表示模組化為分解機率模型,但由于其感覺上下文能力有限,仍然有可能忽略一些相關性。後來的工作使用上下文自适應的方法估計隐層表示

【圖像壓縮】多層超先驗模型 《Coarse-to-Fine Hyper-Prior Modeling for Learned Image Compression》

的聯合分布

【圖像壓縮】多層超先驗模型 《Coarse-to-Fine Hyper-Prior Modeling for Learned Image Compression》

以模組化上下文依賴,

【圖像壓縮】多層超先驗模型 《Coarse-to-Fine Hyper-Prior Modeling for Learned Image Compression》

表示熵模型是

【圖像壓縮】多層超先驗模型 《Coarse-to-Fine Hyper-Prior Modeling for Learned Image Compression》

的估計:

【圖像壓縮】多層超先驗模型 《Coarse-to-Fine Hyper-Prior Modeling for Learned Image Compression》

其中,當計算目前

【圖像壓縮】多層超先驗模型 《Coarse-to-Fine Hyper-Prior Modeling for Learned Image Compression》

的機率時,

【圖像壓縮】多層超先驗模型 《Coarse-to-Fine Hyper-Prior Modeling for Learned Image Compression》

為之前計算過元素。存在問題:

1. 超先驗形式的模型需保證

【圖像壓縮】多層超先驗模型 《Coarse-to-Fine Hyper-Prior Modeling for Learned Image Compression》

的次元與比特率低,否則

【圖像壓縮】多層超先驗模型 《Coarse-to-Fine Hyper-Prior Modeling for Learned Image Compression》

本身可能會包含備援,緻使壓縮性能受損,在這種情況下,超先驗可能不能提供足夠的資訊來模組化條件機率,特别是對高比特率、高分辨率而言;

2. 引入上下文模型改善了這點,但上下文模型隻考慮了前m個元素,是以不能模組化長期依賴關系;實際應用中,m增大雖加強了模組化能力但帶來了高計算複雜度;隻能逐元素計算,不能并行計算。是以不能很好地處理多尺度圖像。

由粗到細 超先驗模組化

在之前的超先驗模型中,假設隐層表示的每個元素都是獨立分布的,為了使假設性成立,需要設計更複雜的分析/合成變換來去除/重建備援,這種分析合成變換包含太多參數、時間效率低。 

未解決上述問題,引入多層條件架構:

【圖像壓縮】多層超先驗模型 《Coarse-to-Fine Hyper-Prior Modeling for Learned Image Compression》
【圖像壓縮】多層超先驗模型 《Coarse-to-Fine Hyper-Prior Modeling for Learned Image Compression》

實際上構成了一個由粗到細的架構,Z經過兩層超分析變換,其次元進一步降低,更多備援被去除,是以可以近似為分解機率: 

【圖像壓縮】多層超先驗模型 《Coarse-to-Fine Hyper-Prior Modeling for Learned Image Compression》

由上面的式子,

【圖像壓縮】多層超先驗模型 《Coarse-to-Fine Hyper-Prior Modeling for Learned Image Compression》

【圖像壓縮】多層超先驗模型 《Coarse-to-Fine Hyper-Prior Modeling for Learned Image Compression》

的機率的分布可以被條件模組化,之前的工作發現神經網絡可以模組化條件機率分布, 通過訓練,

【圖像壓縮】多層超先驗模型 《Coarse-to-Fine Hyper-Prior Modeling for Learned Image Compression》

中可以嵌入被壓縮圖像的主要部分,是以聯合分布可以近似分解如下:

【圖像壓縮】多層超先驗模型 《Coarse-to-Fine Hyper-Prior Modeling for Learned Image Compression》
【圖像壓縮】多層超先驗模型 《Coarse-to-Fine Hyper-Prior Modeling for Learned Image Compression》

之前層的表示被用作估計更高層分布的條件。雖然沒有執行上下文條件,上下文條件被隐式地包含在從

【圖像壓縮】多層超先驗模型 《Coarse-to-Fine Hyper-Prior Modeling for Learned Image Compression》

流向

【圖像壓縮】多層超先驗模型 《Coarse-to-Fine Hyper-Prior Modeling for Learned Image Compression》

的資訊中,并在從

【圖像壓縮】多層超先驗模型 《Coarse-to-Fine Hyper-Prior Modeling for Learned Image Compression》

預測

【圖像壓縮】多層超先驗模型 《Coarse-to-Fine Hyper-Prior Modeling for Learned Image Compression》

的過程中使用。不同于上下文模型以block為條件,由于由粗到細的結構設計,每個元素的機率估計使用到了更大區域的資訊。

【圖像壓縮】多層超先驗模型 《Coarse-to-Fine Hyper-Prior Modeling for Learned Image Compression》

多層網絡結構如上圖所示。輸入圖像經過分析變換到隐層表示

【圖像壓縮】多層超先驗模型 《Coarse-to-Fine Hyper-Prior Modeling for Learned Image Compression》

,旨在盡可能榨幹備援度,之後進行四舍五入量化。使用多層超分析與超合成變換建構一個由粗到細的架構。機率預測網絡通過

【圖像壓縮】多層超先驗模型 《Coarse-to-Fine Hyper-Prior Modeling for Learned Image Compression》

計算

【圖像壓縮】多層超先驗模型 《Coarse-to-Fine Hyper-Prior Modeling for Learned Image Compression》

來估計似然機率

【圖像壓縮】多層超先驗模型 《Coarse-to-Fine Hyper-Prior Modeling for Learned Image Compression》

,與超先驗模型類似,将

【圖像壓縮】多層超先驗模型 《Coarse-to-Fine Hyper-Prior Modeling for Learned Image Compression》

中每個元素的條件分布假設滿足高斯分布,需要預測高斯分布的

【圖像壓縮】多層超先驗模型 《Coarse-to-Fine Hyper-Prior Modeling for Learned Image Compression》

【圖像壓縮】多層超先驗模型 《Coarse-to-Fine Hyper-Prior Modeling for Learned Image Compression》

。因為隐層表示已經四舍五入到離散形式,是以隐層表示的似然可以計算如下:

【圖像壓縮】多層超先驗模型 《Coarse-to-Fine Hyper-Prior Modeling for Learned Image Compression》

其中

【圖像壓縮】多層超先驗模型 《Coarse-to-Fine Hyper-Prior Modeling for Learned Image Compression》

代表标準正太分布的累積分布函數,

【圖像壓縮】多層超先驗模型 《Coarse-to-Fine Hyper-Prior Modeling for Learned Image Compression》

【圖像壓縮】多層超先驗模型 《Coarse-to-Fine Hyper-Prior Modeling for Learned Image Compression》

【圖像壓縮】多層超先驗模型 《Coarse-to-Fine Hyper-Prior Modeling for Learned Image Compression》

中預測得到。從

【圖像壓縮】多層超先驗模型 《Coarse-to-Fine Hyper-Prior Modeling for Learned Image Compression》

預測

【圖像壓縮】多層超先驗模型 《Coarse-to-Fine Hyper-Prior Modeling for Learned Image Compression》

的分布的過程與之相同。将

【圖像壓縮】多層超先驗模型 《Coarse-to-Fine Hyper-Prior Modeling for Learned Image Compression》

假設為滿足0均值的高斯分布,

【圖像壓縮】多層超先驗模型 《Coarse-to-Fine Hyper-Prior Modeling for Learned Image Compression》

中每個元素的似然計算如下:

【圖像壓縮】多層超先驗模型 《Coarse-to-Fine Hyper-Prior Modeling for Learned Image Compression》

注意

【圖像壓縮】多層超先驗模型 《Coarse-to-Fine Hyper-Prior Modeling for Learned Image Compression》

是網絡中的一個可訓練參數(?經過訓練網絡可以得到的參數),一個通道的所有隐層表示共享一個相同的

【圖像壓縮】多層超先驗模型 《Coarse-to-Fine Hyper-Prior Modeling for Learned Image Compression》

,不同的通道間

【圖像壓縮】多層超先驗模型 《Coarse-to-Fine Hyper-Prior Modeling for Learned Image Compression》

互相獨立。

由資訊論,編碼X需要的最小比特率為實際分布

【圖像壓縮】多層超先驗模型 《Coarse-to-Fine Hyper-Prior Modeling for Learned Image Compression》

與估計分布

【圖像壓縮】多層超先驗模型 《Coarse-to-Fine Hyper-Prior Modeling for Learned Image Compression》

的交叉熵:

【圖像壓縮】多層超先驗模型 《Coarse-to-Fine Hyper-Prior Modeling for Learned Image Compression》

優化目标函數為

【圖像壓縮】多層超先驗模型 《Coarse-to-Fine Hyper-Prior Modeling for Learned Image Compression》

。為了加速多層網絡收斂,引入資訊保真損失。該損失鼓勵高層表示

【圖像壓縮】多層超先驗模型 《Coarse-to-Fine Hyper-Prior Modeling for Learned Image Compression》

保留

【圖像壓縮】多層超先驗模型 《Coarse-to-Fine Hyper-Prior Modeling for Learned Image Compression》

中的關鍵資訊,列式如下:

【圖像壓縮】多層超先驗模型 《Coarse-to-Fine Hyper-Prior Modeling for Learned Image Compression》

其中

【圖像壓縮】多層超先驗模型 《Coarse-to-Fine Hyper-Prior Modeling for Learned Image Compression》

是沒有激活層的一層卷積層,資訊保真損失使得

【圖像壓縮】多層超先驗模型 《Coarse-to-Fine Hyper-Prior Modeling for Learned Image Compression》

【圖像壓縮】多層超先驗模型 《Coarse-to-Fine Hyper-Prior Modeling for Learned Image Compression》

的估計更準确。

可以保留信号的超變換(Signal Preserving Hyper Transform)

為了對圖像由粗到細模組化,關鍵是在執行更複雜的合成分析變換的同時保留資訊。一方面,與自然圖像相比,隐層表示的相關性已經大大降低,而使用大卷積核的卷積依賴于局部相關性模組化;另一方面,之前的超變換使用跨步卷積和Relu,跨步卷積進行下采樣,Relu禁用了某些為負的神經元。由于需要限制這些卷積層的次元以確定隐層表示的逐漸分解,原來的超變換丢失了很多資訊。

原來的超變換存在兩個問題:1)原始分析變換保持次元不變,下采樣特征圖,降低了隐層表示的尺寸 2)在分析變換的開始和合成變換的結尾使用大卷積+Relu導緻丢失尚未變換的資訊,限制了模型能力。

可以保留信号的超變換網絡結構如表1,在第一層使用相對較小的卷積,使用的是線性激活函數,之後全部使用

【圖像壓縮】多層超先驗模型 《Coarse-to-Fine Hyper-Prior Modeling for Learned Image Compression》

卷積。第一層增加了原始表示的通道數,結合後面的非線性層,次元的拓展在提供非線性模組化的同時保留了資訊。使用space-to-depth操作reshape張量,使得空間上相鄰的元素分布在不同通道的相同位置,通過這種方法,後面的

【圖像壓縮】多層超先驗模型 《Coarse-to-Fine Hyper-Prior Modeling for Learned Image Compression》

卷積可以通過非線性變換減少空間備援。在網絡最後一層,減少通道數使得表示更緊湊。對稱設計超合成變換。

【圖像壓縮】多層超先驗模型 《Coarse-to-Fine Hyper-Prior Modeling for Learned Image Compression》

space-to-depth與depth-to-space操作實作代碼如下模組化,圖示:

# Space-to-depth & depth-to-space module
# same to TensorFlow implementations
class Space2Depth(nn.Module):
    def __init__(self, r):
        super(Space2Depth, self).__init__()
        self.r = r

    def forward(self, x):
        r = self.r
        b, c, h, w = x.size()
        out_c = c * (r**2)
        out_h = h//2
        out_w = w//2
        x_view = x.view(b, c, out_h, r, out_w, r)
        x_prime = x_view.permute(0, 3, 5, 1, 2, 4).contiguous().view(
            b, out_c, out_h, out_w)
        return x_prime

class Depth2Space(nn.Module):
    def __init__(self, r):
        super(Depth2Space, self).__init__()
        self.r = r

    def forward(self, x):
        r = self.r
        b, c, h, w = x.size()
        out_c = c // (r**2)
        out_h = h * 2
        out_w = w * 2
        x_view = x.view(b, r, r, out_c, h, w)
        x_prime = x_view.permute(0, 3, 4, 1, 5, 2).contiguous().view(
            b, out_c, out_h, out_w)
        return x_prime
           

聚合資訊重建圖像

不同于超先驗模型,為了最大化利用比特流中資料,不僅使用邊資訊估計分布,而且用它來輔助重構圖像。資訊聚合解碼網絡如圖2:

【圖像壓縮】多層超先驗模型 《Coarse-to-Fine Hyper-Prior Modeling for Learned Image Compression》

融合不同尺度的表示有助于圖像重構,高階表示提供全局資訊,其他的提供圖像細節資訊。融合過程在小空間分辨率上執行以避免高計算複雜度。

實作細節

機率估計子網絡

如圖1所示,為了進行算術編碼需要使用機率估計子網絡對量化後的隐層表示進行機率估計,對于尺度最小的最内層超先驗假設分布滿足零均值高斯分布,第一層超先驗和隐層表示都采用有均值和标準差的高斯分布。

為了充分利用超先驗,設計了一個有更合适采樣區域的預測子網絡。圖3所示子網絡中,以被預測位置為中心采樣一個

【圖像壓縮】多層超先驗模型 《Coarse-to-Fine Hyper-Prior Modeling for Learned Image Compression》

的區域,每一個采樣區域經過多層卷積估計預測位置的機率值。最後一層使用全連接配接網絡,輸出預測的均值和标準差。局部卷積在所有空間位置上共享卷積,超隐層表示被密集采樣,在卷積操作過程中沒有資訊丢失。

【圖像壓縮】多層超先驗模型 《Coarse-to-Fine Hyper-Prior Modeling for Learned Image Compression》

訓練模組化

網絡分為三個階段訓練。第一階段,添加一個上下文模型,訓練主合成、分析變換以獲得良好的圖像重建。第二階段,去掉上下文模型,添加超變換、合成網絡,端到端訓練。最後,将原始的合成變換最後一層換成資訊聚合網絡,對整個網絡訓練。

前向傳播的量化使用四舍五入,反向傳播的時候看做

【圖像壓縮】多層超先驗模型 《Coarse-to-Fine Hyper-Prior Modeling for Learned Image Compression》

導數為1,訓練估計表示的熵的時候,向原來的隐層表示添加一個噪聲

【圖像壓縮】多層超先驗模型 《Coarse-to-Fine Hyper-Prior Modeling for Learned Image Compression》

提供更好的拟合效果(超先驗模型中的方法)。

實驗結果

【圖像壓縮】多層超先驗模型 《Coarse-to-Fine Hyper-Prior Modeling for Learned Image Compression》

在實驗過程中,首先發現如果采用原來的超分析、合成則很難建構一個多層超先驗模型,添加的超先驗層幾乎捕捉不到用來模組化上層機率分布的邊資訊,這可能是因為前向過程中由于大卷積和ReLU層丢失了資訊。通過引入可以保留資訊的超變換建構的多層超先驗模型比超先驗模型表現要好,添加資訊聚合子產品之後性能進一步提升。

該模型在高分辨率資料集Tecnick資料集上表現的更出衆,這是因為這些圖像包含更多的長期依賴,由粗到細模型可以很好的解決。

下圖計算加速比證明了該模型在并行能力上的優越性:

【圖像壓縮】多層超先驗模型 《Coarse-to-Fine Hyper-Prior Modeling for Learned Image Compression》

繼續閱讀