2016:Variable rate image compression with recurrent neural networks

概要

​ 该文提出了一个可变速率图像压缩的通用框架和一种基于卷积和反卷积LSTM递归网络的新架构。(不需要针对每个速率单独进行训练)

应用场景

适用于低分辨率图像的压缩及可变码率。

1. Variable Rate Compression Architecture

  • Encoder: function E. 以一个图像补丁作为输入,并生成一个编码后的vector(encoded representation)
  • Binaryization: function B. 由一个二值化函数B来处理编码后的vector
  • Decoder: fuction D. 它接受由B产生的二进制表示,并生成一个重构的图像

数学表达:

\[x^{'}=D(B(E(x))) \tag{1} \]

2.1 IMAGE COMPRESSION FRAMEWORK

​ 该论文框架是为图像压缩进行调整的,并支持可变的压缩率,而不需要再训练或存储同一图像的多个编码。

​ 为了使连续传输增量信息成为可能,设计应该考虑到图像解码是渐进式的(对质量要求高时,多传几次信息)。考虑到这个设计目标,我们可以考虑建立在残差之上的架构,目的是在解码器获得额外信息时最小化重建中的残差。

\[F_t(r_{t-1})=D_t(B(E_t(r_{t-1}))) \tag{2} \]

\(r_t\)的确定方法:

\(r_0\)设置为等于原始输入补丁,然后\(r_t\)对于\(t>0\)表示t阶段后的残差。对于\(r_t(t>0)\)的确定,取决于架构的设计:

  • non-LSTM architectures:

    \(F_t\)没有记忆,所以我们只期望它能预残差部分。在这种情况下,通过对所有残差求和来恢复完全重建,每个阶段由于预测与之前残差的差异而受到惩罚.(每个阶段预测的是残差

    \[r_t=F_t(r_{t-1})-r_{t-1}\tag{3} \]

  • LSTM-based architectures:

    对于RNN结构来说,结构是有记忆的。所以我们期望他们在每个阶段预测原始图像。据此,我们计算了相对于原始图像的残差。

    \[r_t=F_t(r_{t-1})-r_{0}\tag{4} \]

​ 该方法是不需要对所有残差求和的。

2.2 BINARY REPRESENTATION

该文的二值化结构有三个好处:

  • bit vectors对于图像传输来说是可序列化/反序列化的
  • 网络压缩率的控制仅仅是通过对bit vectors的约束来实现的
  • 相对与传统方案来说,此二值化可以提取到更有效的信息(迫使网络学习更有效的信息)

binarization包括两部分:

  • 第一部分包括在生成所需要的bit数目(数目固定),值域在[−1,1]

    实现方式:采用fully-connected layer 和 tanh 激活函数

  • 第二部分涉及到将这个连续值作为输入,并在集合{−1,1}中产生每个输入对应的离散输出。

    \[b(x)=x+\epsilon \in\{-1,1\} \tag{5} \\ \]

    \[\epsilon = \begin{cases} 1-x& \text{with probability}\frac{1+x}{2}\\ -x-1& \text{with probability} \frac{1-x}{2} \end{cases} \]

    \(\epsilon\)代表量化噪声。

\[E[b(x)]=1\cdot \frac{(x+1)}{2}+(-1)\cdot (1-\frac{x+1}{2}))=x \]

所以梯度经过b函数时,会乘上1

总的来说,Binarization function:

\[B(x)=b(tanh(W^{bin}x+b^{bin}))\tag{6} \]

为了对一个特定的输入有一个固定的表示,一旦网络被训练,只考虑b(x)最可能的结果,b可以被\(b^{inf}\)代替,定义为:

\[b^{inf}(x)= \begin{cases} -1& \text{if\ x<0}\\ +1& \text{otherwise} \tag{7} \end{cases} \]

此时\(E[b(x)]\):

\[E[b(x)]=(-1)\cdot (\int \limits_{-1}^{0}f(x)dx)+1\cdot (\int \limits_{0}^{1}f(x)dx) \]

压缩码率是由bit数量决定的。根据上面描述,压缩产生后的码率与\(W^{bin}\)和stage(residual autoencoder数量)的数量有关。

3. architecture

3.1 fully-connected residual autoencoder
  • 一种是每个auto-encoder的weights一样
  • 另一种是各个auto-encoder的weights不一样

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fC5F1PmO-1647154132027)(C:\Users\Liujiawang\AppData\Roaming\Typora\typora-user-images\image-20220310143845645.png)]

全连接的残差自动编码器。我们描述了一个双迭代架构,第一次迭代的目标是对原始输入补丁进行编码,第二次迭代的目标是对第一级重构中的残差进行编码,每个stage要做的就是尽可能的模拟残差。重建图像为各个residual相加

3.2 fully-connected LSTM residual encoder

在这个体系结构中,我们探索了对编码器和解码器都使用LSTM模型。特别是,E和D都是由堆叠的LSTM层组成的。

我们使用上标来表示layer索引,并使用下标来表示时间步长。比如\(h^l_t\in R^n\)代表时间t 的auto-encoder上的第\(l\)层hidden LSTM Layer。我们定义\(T^l_n: R^m——>R^n\)是一个映射变换:\(T^l_n(x)=W^lx+b^l\)\(\bigodot\)代表element-wise,\(h^0_t\)代表在时间\(t\)上第一个LSTM Layer。

LSTM结构公式表示:

\[\left( \begin{matrix} i \\ f \\ o\\ g \end{matrix} \right)= \left( \begin{matrix} sigm \\ sigm \\ sigm\\ tanh\\ \end{matrix} \right)T^l_{4n} \left( \begin{matrix} h^{l-1}_t \\ h^l_{t-1}\\ \end{matrix} \right) \tag{8} \]

\[c^l_t=f\bigodot c^l_{t-1}+i\bigodot g \tag{9}\\ \]

\[h^l_t=o\bigodot tanh(c^l_t) \tag{10} \]

sigm代表sigmoid function。

对于编码器,我们使用一个全连接的层,然后是两个堆叠的LSTM层。解码器具有相反的结构:两个堆叠的LSTM层,然后是一个完全连接的层,具有tanh非线性,可以预测RGB值。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LbIfAVPt-1647154132029)(C:\Users\Liujiawang\AppData\Roaming\Typora\typora-user-images\image-20220310150946137.png)]

3.3 forward convolution/deconvolution residual encoder

第3.1节提出了一种全连接的残余自动编码器。我们分别用卷积和反卷积替换encoder和decoder的全连接层来扩展这种结构。解码器的最后一层由1×1卷积组成,三个滤波器将解码后的表示转换为RGB值.

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-afvwmR2w-1647154132029)(C:\Users\Liujiawang\AppData\Roaming\Typora\typora-user-images\image-20220310152838611.png)]

3.4 Convolutional/Deconvolutional LSTM Compression

该体系结构将卷积和反卷积运算符与LSTM相结合。我们用卷积加偏置代替方程(8)中的变换\(T^l_{4n}\)来定义卷积LSTM结构。具体公式表达为:

\[T^l_{4n}(h^{l-1}_t,h^l_{t-1})=W^l_1\bigotimes h^{l-1}_t+W^l_2\bigotimes h^l_{t-1}+b^l \tag{11} \]

\[T^l_{4n}(h^{l-1}_t,h^l_{t-1})=W^l_d\oslash_k h^{l-1}_t+W^l_c\oslash_k h^l_{t-1}+b^l \tag{12} \]

3.5 dynamic bit assignment

对于这里提出的非卷积方法,通过允许编码器的不同数量的迭代,这样就可以为每个patch分配不同的比特数,其中每个patch单独处理(每张图片都要分成不同的patch)。就是LSTM layer替换为convolution-LSTM layer。

分patch的缺点:

各个patch单独处理,边缘处会产生artifacts(包含伪影在内的失真)。

对于全连接层的网络,对于8×8的patch大小我们选择每次迭代产生8位bit,这将允许我们以8位的增量微调压缩率。当扩展到32×32的patch大小时,这允许我们以128位的增量来控制压缩。

对于卷积/反卷积网络,编码器通过卷积操作逐步将32×32大小的输入patch减少到8×8。我们尝试在这个分辨率下,使用一个每像素2位的bit输出,产生一个可调的压缩率,每32×32块增加16个字节。

4. 结果

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NejB0LT2-1647154132030)(C:\Users\Liujiawang\AppData\Roaming\Typora\typora-user-images\image-20220310173905151.png)]

总结

  • 该文的网络只需要训练一次(而不是每张图像),而不管输入图像的尺寸和期望的压缩率
  • 该文的网络是渐进的,这意味着发送的比特越多,图像重建就越准确(体现为迭代的次数)
  • 对于给定的比特数,所提出的架构至少与一个标准的专门训练的自动编码器一样有效(在32×32的大规模基准测试中,我们基于LSTM的方法提供了比JPEG、JPEG2000和WebP更好的视觉质量,存储大小减少了10%或更多)

Reference:Variable rate image compression with recurrent neural networks

posted @ 2022-03-13 14:53  为红颜  阅读(100)  评论(0编辑  收藏  举报