Variable Rate Image Compression with Recurrent Neural Networks
RNN在图像压缩领域应用最经典的一篇,由Google的George Toderici提出。原文连接:Variable Rate Image Compression with Recurrent Neural Networks
文章提出了一种基于卷积和反卷积LSTM的RNN网络框架,并强调该网络框架有如下技术优点:
- 网络只需训练一次,而不是每张图片都需要训练,并且图片输入大小和压缩比变化也不需要重复训练
- 网络具有连续性,发送的比特越多,图像重建精度就越高
- 所提出的网络框架和训练后的自编码器模型在相同的比特数下有着相同的效率
一、标准图像压缩算法的缺点
如今,很多普适的标准图像压缩算法取得了很不错的效果,例如Joint Picture Experts Group提出的JPEG和JPEG2000,以及刚提出不久的WebP算法,但是它们都普遍地存在如下两个问题:
- 专注于大图片的压缩,低分辨率的thumbnail图片的压缩效果不佳,甚至受损。因为它们图片压缩的原理都来自同一切入点:先设计不同的启发方法减少需要保留的图片信息,再决定能够利用保留的信息尽可能低损地压缩图片的转换方法。
- 图像数据集上的假设大多不成立。例如假设高分辨率的图片包含许多冗余的信息,而实际上图片分辨率越高,来自图片的patch包含的低频信息越多。因此这些假设在生成高分辨率图像的thumbnail图的时候并不成立,因为来自thumbnail的patch更多的包含难压缩的高频信息。
二、标准自编码器模型的缺点
Krizhevsky和Hinton于2011年提出了标准自编码器模型,利用神经网络作为编码器(encoder)去生成一个具有代表性的编码,再利用解码器(decoder)根据编码结果重建原始图片。
图片patch经过encoder编码生成一个representation,然后经过二值化函数生成一个二值化编码,最后经过一个decoder利用二值化编码重建原始的图片patch。整个流程可以用如下方程表示:
x
′
=
D
(
B
(
E
(
x
)
)
)
x'=D(B(E(x)))
x′=D(B(E(x)))
其中
x
x
x是原始图片,
x
′
x'
x′是压缩重建后的图片,
E
E
E是编码器函数,
B
B
B是二值化函数,
D
D
D是解码器函数。
然而标准自编码器存在很多限制条件使它们无法推广作为标准的图片编码解码器。其中的一些限制条件使得变压缩比的压缩过程无法实现,每一个压缩比需要对应一个单独的网络单独训练,非常浪费资源,并且无法保证输出的图片质量,因为它们设定了图像大小,只能在对应的图片大小上抓取图片中的冗余信息。
三、本文提出的RNN模型框架
1、基于残差输入的图像压缩网络框架
用输出和原始图片的残差作为图像的输入可保证网络的连续性,即每步训练可以产生图片的增量信息。因此,网络可以用如下方程表示:
F
t
(
r
t
−
1
)
=
D
t
(
B
(
E
t
(
r
t
−
1
)
)
)
F_t(r_t-1)=D_t(B(E_t(r_{t-1})))
Ft(rt−1)=Dt(B(Et(rt−1)))
r
r
r是残差输入,下标表示迭代的时间点。
不基于LSTM
对于不基于LSTM结构的模型,
F
F
F没有记忆性,每一步的残差仅根据上一步的残差结果计算得出,因此,整个图像patch的重建是通过将残差全部加起来的总和得出的,例如后文将要提到的前向全连残差编码器(feed-forward fully-connected residual encoder)和前向卷积/反卷积残差编码器(feed-forward convolutional/deconvolutional residual encoder)。每一步的残差计算公式如下:
r
t
=
F
t
(
r
t
−
1
)
−
r
t
−
1
r_t=F_t(r_{t-1})-r_{t-1}
rt=Ft(rt−1)−rt−1
基于LSTM
对于基于LSTM结构的模型,
F
F
F具有记忆性,每一步的残差直接根据原始图片计算得出,因此每一步的输出都是在预测原始图片patch,例如后文将要提到的基于LSTM的压缩网络(LSTM-based compression)和基于LSTM的卷积/反卷积压缩网络(convolutional/deconvolutional LSTM-based compression)。每一步的残差计算公式如下:
r
t
=
F
t
(
r
t
−
1
)
−
r
0
r_t=F_t(r_{t-1})-r_0
rt=Ft(rt−1)−r0
以上两种方式的压缩网络均按如下方式进行训练,其中N是网络中的自编码器总数:
minimizing
∥
r
t
∥
2
2
for
t
=
1
…
N
\operatorname{minimizing}\left\|r_{t}\right\|_{2}^{2} \text { for } t=1 \ldots N
minimizing∥rt∥22 for t=1…N
2、二值化表示编码
文章引用的二值化方法分为如下两步:
- 第一步使用一个全连接层加 t a n h tanh tanh激活函数,将经过编码器后得到的representation映射到(-1, 1)的区间内
- 利用如下函数将(-1, 1)区间内的编码二值化为集合{-1, 1}
b ( x ) = x + ϵ ∈ { − 1 , 1 } b(x)=x+\epsilon \quad \in\{-1,1\} b(x)=x+ϵ∈{−1,1}
ϵ ∼ { 1 − x with probability 1 + x 2 − x − 1 with probability 1 − x 2 \epsilon \sim \begin{cases}1-x & \text { with probability } \frac{1+x}{2} \\ -x-1 & \text { with probability } \frac{1-x}{2}\end{cases} ϵ∼{1−x−x−1 with probability 21+x with probability 21−x
其实公式6和7可以简化为:(论文中有点高大尚的感觉)
b
(
x
)
=
{
1
with probability
1
+
x
2
−
1
with probability
1
−
x
2
b(x) =\begin{cases}1 & \text { with probability } \frac{1+x}{2} \\ -1 & \text { with probability } \frac{1-x}{2}\end{cases}
b(x)={1−1 with probability 21+x with probability 21−x
因此,整个二值化编码器可以表示成:
B
(
x
)
=
b
(
t
a
n
h
(
W
b
i
n
x
+
b
b
i
n
)
)
B(x)=b(tanh(W^{bin}x+b^{bin}))
B(x)=b(tanh(Wbinx+bbin))
其中W、b分别是线性全连接层的权重和偏置,x是上一层的激活值。
图像的压缩比由每一步生成的representation比特数(即W矩阵的行数)和网络迭代次数(即残差自编码器的重复次数)共同决定。
3、模型一:不基于LSTM的全连接残差编码器
文章首先提出最简单的实例便是用全连接层堆叠起来的编码器E和解码器D,还设置每个全连接层输出的个数均为512,并且只使用tanh非线性激活函数。网络框架如下图所示:
从结构图片可以看出,最终图片patch的重建是通过所有stage的residual加和得到的
模型二:基于LSTM的残差编码器
该模型通过堆叠LSTM层,搭建基于LSTM的编码器E和解码器D。并且本文使用的LSTM结构是2013年由Grave提出的简易结构,该简易LSTM结构如下:
(
i
f
o
g
)
=
(
sigm
sigm
sigm
tanh
)
T
4
n
l
(
h
t
l
−
1
h
t
−
1
l
)
\left(\begin{array}{l} i \\ f \\ o \\ g \end{array}\right)=\left(\begin{array}{l} \operatorname{sigm} \\ \operatorname{sigm} \\ \operatorname{sigm} \\ \tanh \end{array}\right) T_{4 n}^{l}\left(\begin{array}{l} h_{t}^{l-1} \\ h_{t-1}^{l} \end{array}\right)
⎝⎜⎜⎛ifog⎠⎟⎟⎞=⎝⎜⎜⎛sigmsigmsigmtanh⎠⎟⎟⎞T4nl(htl−1ht−1l)
c t l = f ⊙ c t − 1 l + i ⊙ g c_{t}^{l}=f \odot c_{t-1}^{l}+i \odot g ctl=f⊙ct−1l+i⊙g
h t l = o ⊙ tanh ( c t l ) h_{t}^{l}=o \odot \tanh \left(c_{t}^{l}\right) htl=o⊙tanh(ctl)
s i g m ( x ) = ( 1 + e x p ( − x ) ) − 1 sigm(x)=(1+exp(-x))^{-1} sigm(x)=(1+exp(−x))−1
其中上标 l l l和下标 t t t代表第 l l l层、 t t t时间点的LSTM隐层的状态,T代表一种仿射变换, ⊙ \odot ⊙表示两矩阵对应位置元素进行乘积。这种简易的LSTM能够减少每一步的操作数,能够保证GPU的高效执行。 基于LSTM的压缩网络结构如下:
编码器中由一个全连接层和两个LSTM层构成;解码器由两个LSTM层和一个全连接层加上一个tanh非线性激活函数构成来预测原始图片patch的RGB值,因此每一步迭代都是在预测原始图片的patch
5、模型三:不基于LSTM的卷积/反卷积残差编码器
文章在模型一中提出了全连接的残差自动编码器,在此基础上用卷积操作替换模型一编码器中的全连接层,用反卷积操作替换模型一解码器中的全连接层,并通过3个 1 × 1 1\times1 1×1的卷积将解码后的表征转化为三通道的RGB值。不基于LSTM的卷积/反卷积残差编码器结果如下:
同样,类似于模型一,图片patch的重建是通过加和所有stage的residual得到的
6、模型四:基于LSTM的卷积/反卷积残差编码器
最后一个模型的编码器将模型三的编码器中的第二和第三个卷积替换为LSTM卷积,解码器中的第二和第三个反卷积替换为LSTM反卷积,也就是把模型二中的仿射变换T替换为了卷积加上偏置
LSTM卷积操作方程为:
T
4
n
l
(
h
t
l
−
1
,
h
t
−
1
l
)
=
W
1
l
⊗
k
h
t
l
−
1
+
W
2
l
⊗
1
h
t
−
1
l
+
b
l
T_{4 n}^{l}\left(h_{t}^{l-1}, h_{t-1}^{l}\right)=W_{1}^{l} \otimes_{k} h_{t}^{l-1}+W_{2}^{l} \otimes_{1} h_{t-1}^{l}+b^{l}
T4nl(htl−1,ht−1l)=W1l⊗khtl−1+W2l⊗1ht−1l+bl
LSTM反卷积操作方程为:
T
4
n
l
(
h
t
l
−
1
,
h
t
−
1
l
)
=
W
d
l
⊘
k
h
t
l
−
1
+
W
c
l
⊗
1
h
t
−
1
l
+
b
l
T_{4 n}^{l}\left(h_{t}^{l-1}, h_{t-1}^{l}\right)=W_{d}^{l} \oslash_{k} h_{t}^{l-1}+W_{c}^{l} \otimes_{1} h_{t-1}^{l}+b^{l}
T4nl(htl−1,ht−1l)=Wdl⊘khtl−1+Wcl⊗1ht−1l+bl
用c和d来区分卷积和反卷积操作。
五、实验和评价标准
1、训练
文章采用Adam算法,使用多种学习率{0.1, 0.3, 0.5, 0.8, 1}分别进行训练,根据patch像素个数和迭代总步数标准化后的L2损失,损失函数采用8-16位编码步数进行试验。
文章使用从公共网络中收集的216,000,000 张32$\times 32 随 机 彩 色 图 片 , 对 于 一 些 不 是 32 32随机彩色图片,对于一些不是32 32随机彩色图片,对于一些不是32\times 32 的 质 量 很 好 的 图 片 , 通 过 降 采 样 将 图 片 转 换 为 32 32的质量很好的图片,通过降采样将图片转换为32 32的质量很好的图片,通过降采样将图片转换为32\times 32 , 最 终 的 32 32,最终的32 32,最终的32\times$32图片采用无损PNG格式保存。
2、评价标准
文章强调不应采用PSNR作为评价标准,因为PSNR偏向于使用L2损失的模型,本文提出的模型对于JPEG算法来说不公平,因此文章放弃PSNR,而是采用SSIM(Structural Similarity Idex)。文章将32$\times 32 的 图 片 分 成 不 同 的 8 32的图片分成不同的8 32的图片分成不同的8\times$8的patch,并且在不同patch和不同颜色通道上计算SSIM,最后的得分由所有patch和channel的平均SSIM给出。分析结果时,得分越高说明图像重建质量越好,1.0说明完美重建。
结构相似性(SSIM)是一种衡量两幅图像相似度的指标。该指标首先由德州大学奥斯丁分校的图像和视频工程实验室(Laboratory for Image and Video Engineering)提出。给定两个图像x和y, 两张图像的结构相似性可按照以下方式求出:
SSIM
(
x
,
y
)
=
(
2
μ
x
μ
y
+
c
1
)
(
2
σ
x
y
+
c
2
)
(
μ
x
2
+
μ
y
2
+
c
1
)
(
σ
x
2
+
σ
y
2
+
c
2
)
\operatorname{SSIM}(x, y)=\frac{\left(2 \mu_{x} \mu_{y}+c_{1}\right)\left(2 \sigma_{x y}+c_{2}\right)}{\left(\mu_{x}^{2}+\mu_{y}^{2}+c_{1}\right)\left(\sigma_{x}^{2}+\sigma_{y}^{2}+c_{2}\right)}
SSIM(x,y)=(μx2+μy2+c1)(σx2+σy2+c2)(2μxμy+c1)(2σxy+c2)
当两张图像一模一样时,SSIM的值等于1
六、结果和分析
文章中各个网络评价结果以及与标准图像压缩算法(JPEG,JPEG2000和WebP)的比较结果由下表格给出:
全连接LSTM模型的性能可以和JPEG相媲美,基于LSTM的卷积/反卷积模型在SSIM指标上面超越了JPEG
源码中存在的问题
- 源码复现了文章模型中的一部分东西
- 源码的作者和文章的作者不是同一个人
- 源码和文章对不上,源码中未出现文章中提到的残差, 1 × 1 1\times1 1×1卷积,以及直接把512通道的残差和3通道残差相加,非常不合理
数据集
神经网络图像视频压缩领域领军人物或机构
- George Toderici
- David Minnen
- wave
- 图鸭