Saturday, June 17, 2017

基于RNN的编码率图像压缩

基于RNN的编码率图像压缩
VARIABLE RATE IMAGE COMPRESSION WITH RECURRENT NEURAL NETWORKS
GeorgeToderici,SeanM.O’Malley,SungJinHwang,DamienVincent {gtoderici, smo, sjhwang, damienv}@google.com DavidMinnen,ShumeetBaluja,MicheleCovell&RahulSukthankar 

介绍
互联网上有很多的数据传输是来自于移动设备的驱动,这些移动设备的屏幕较小,带宽不大。因此,对于有很多图片的网站,提供传送低解析度,低码率的预览图片可以明显提高网页的响应速度。提供比现有的压缩质量更高的缩略图压缩方法成为了一个研究方向,带宽的节省可以提高移动设备用户的体验。为此,我们提供了一个可变码率图像压缩的框架,一个全新的架构,基于卷积和反卷积的LSTM网络。我们的方法,解决了autoencoder不能和现有的图像压缩算法抗衡的问题:(1)我们的网络只依赖于一次训练(与图像无关),不用考虑图像的大小和需要的压缩率。(2)我们的网络是渐进的,这意味着更多的Bit被传送,就可以得到更好的图像质量。(3)这个架构和已有的标准的有目的的autoencoder一样有效。在基于32x32的缩略图的测试中,我们的基于LSTM的方法比已有的JPEG,WebP标准更好,压缩文件大小可以降低10%。

  1. 介绍

多年来,图像压缩的任务被很多研究人员和团队研究,如联合图像专家组,他们设计的无处不在的JPEG和JPEG 2000(ISO / IEC 15444-1)的图像格式。最近,WebP算法,进一步提高图像压缩率(谷歌,2015年),特别是对于那些在最近几年变得越来越普遍的高分辨率图像。所有这些努力都是从实证的角度出发:人类专家设计的各种探索,以减少需要被保留的信息,然后找到转换这种信息的。这项工作几乎全部集中在大size图像的压缩,低分辨率的缩略图像通常被忽略(甚至伤害,例如,通过要求在文件头更多的数据)。

标准的图像压缩算法往往做出图像Size的假设。例如,我们通常认为从高分辨率自然图像中的一块图像,包含大量的冗余信息。事实上,分辨率越高的图像,他的小块图像越有可能包含更多的低频信息。这一事实被大多数图像编解码器使用,正因为如此,这些编解码器往往是在压缩的高分辨率图像非常有效。但是,创建高分辨率自然图像的缩略图时,这样的假设是不成立的,因为缩略图中小块区域包含难以压缩的高频信息。
大量压缩缩略图(32x32)是一个重要的应用,在减少硬盘的存储量和更好的使用带宽方面。网页的预览图像,相片集,搜索引擎和大量其他的应用都要传输缩略图。在缩略图压缩方面的任何改进都可以提高应用的体验。
最近,神经网络已经成为了推进已有算法的工具。例如,在图像识别和对象检测,当前状态的最先进的算法都是基于神经网络。这是很自然要问,如果我们也可以使用这个功能强大的类的方法来进一步提高图像压缩的任务,特别是对我们不都经过精心设计,手工调整压缩方法的图像尺寸。
如果我们把图像压缩算法看作是一个包含瓶颈的分析综合系统,这样我们就可以训练神经网络开发出压缩的表达。大量的已有的工作室在小图像上做的:32x32的CIFAR10。这些工作都被分在autoencoder里面。但是,多数的autoencoder都是在一些硬性的限制下工作的,让他们无法替代普通的图像编码算法。有些限制使得编码率压缩没法实现。输出的图像质量很难保证,很多都是为了特定大小的图像训练的,可以在特定大小的图像上找出冗余信息。
我们探索的几种神经网络驱动的编码算法,与已有的图像压缩算法有相似的灵活性。为了达到这些灵活性,我们的算法必须符合这些要求:1)压缩率可以预先设定。2)根据图像内容的复杂简单程度分配码率。3)模型是从大量已有的图像中学习的,这样可以应付真实的图像
  1. 相关工作
使用前向神经网络实现图像压缩的概念已经有一段时间了(Jiang 1999)。在这篇文章里,神经网络可以辅助甚至完全的替代很多工作,他是作为一个与传统图像压缩并行的工作:可以学习到更加有效的频域转换算法,更加有效的量化技术,提高预测编码。
最近,autoencoder技术 (Hinton & Salakhutdinov, 2006) 已经在端到端的压缩中可以使用。一个典型的autoencoder有3个组成:1)编码器把一个固定维度的图像编码成 2)一个瓶颈,可以理解为压缩后的数据,这些数据被 3)解码器还原成原始图像。这三个部分合在一起进行端到端的训练,使用的时候分别使用。
瓶颈通常是一个简单的平面神经网络层,通过调整这一层的节点数目,可以控制压缩率和压缩图像质量。这种autoencoder,把瓶颈编码成简单bit向量是有效的 (Krizhevsky & Hinton, 2011)。在基于神经网络的分类任务中,不断地卷积和池化可以下采样图像,输出是一些简单的结点。在autoencoder的解码器中,网络必须反向处理,把这些简单的结点转化成大的图像。当这种上采样图像是spatially-aware的,类似于反向卷积,一般被叫做解卷积。 (Long et al., 2014).
LSTM网络是一种RNN网络,在语音识别和机器翻译方面已经被证实非常有效。很多LSTM的扩展模型可以包含显示的空间信息的操作,衍生出各种卷积LSTM,他们可以更好是适用于图像处理。
我们尝试了这种卷积LSTM,同时尝试递归的架构,把一个autoencoder的残差输出作为另一个autoencoder的输入。

  1. 可变码率压缩结构
我们通过描述一个一般的基于神经网络的压缩架构,然后再讨论这一架构的多个实例的细节入手。每个小节介绍了不同的架构,建立在以前的模式,提高了压缩效果。

对于每个结构,我们将讨论一个函数E,它接受一个图像块作为输入,并产生一个编码表示。这种表示通过二值化函数B,(B也有同样的结构,在3.2节中进行讨论)最后,对于每个结构,我们还考虑一个解码器功能D,这把由B中产生的二进制表示,重构输出图像块。连在一起,这三种模块形成自动编码器x = D(B(E(X))),这是对于所有的压缩网络的基本构建块。
对于所有的结构中,偏移和缩放被施加到8位RGB输入图像,得到-0.9和0.9之间的范围的值。这个范围与tanh的值相兼容。
    1. 图像压缩框架

我们使用共享相同的架构设计:编码器,进行量化和解码器。此外,我们的框架是支持可变压缩率,而且不需要重新培训,也不需要存储同一图像的多个编码输出。
为了能够传递增量信息,设计时应考虑到一个事实,即图像解码将是渐进的。有了这个设计目标,我们可以考虑一种架构:构建在解码器获得附加信息,减少残差编码误差。
形式上,我们链接多个用于残差编码的autoencoder:
Ft(rt−1) = Dt(B(Et(rt−1))).
在前向网络(3.3和3.5节)中,这个链接是显性的。在使用LSTM的网络(3.4和3.6节)中,它是隐性的。我们假设r0是原始图像,Ft没有记忆,此时我们只想预测残差本身。此时,图像的重建是靠把所有的残差合在一起,没一个autoencoder的loss是原始残差和预测的残差的差
rt = Ft(rt−1)−rt−1.
另一方面,在LSTM网络中,LSTM有记忆,会保留状态,我们在每一次autoencoder中,使用它来预测原始图像,因此,loss是原始图像和预测的差
rt = Ft(rt−1)−r0.
相同的是,rt被转化成||rt||2

    1. bit表达
在我们的网络中使用的bit表达方法是首先由 Williams (1992)提出的,类似于 Krizhevsky & Hinton (2011) and Courbariaux et al. (2015). 这种方法有3个有点:(1)这种方法是为了传输图像而设计的序列化和反序列化方法。(2)通过简单的显示bit数就可以控制压缩率。(3)bit的瓶颈可以帮助网络学习来提高表达效率,而普通的浮点层,可能包含冗余的bit

二值化处理由两个部分组成。第一部分包括产生所需数量的输出,输出值在连续区间[-1,1](等于输出的期望的数量)。第二部分包括取这个实值表示作为输入,并产生离散输出,在集合{-1,1}。
在二值化过程的第一步中,我们使用具有tanh激活的全连接层。对于第二部分,使用 Raiko et al. (2015),的方法。一个可能的值B(X)x∈[-1,1]被定义为
b(x) = x + e, e ∈{−1,1},
e是量化噪音。我们使用随机量化提供的正规化来做后向传播的梯度。 We will use the regularization provided by the randomized quantization to allow us to cleanly backpropagate gradients through this binarization layer.
这样,全部的二值化编码过程就是:
B (x) = b(tanh(Wx + b)).
W和b是权值和偏移,但是是二值化后的。在我们的模型中,前向计算中都是使用这个公式。在后向传播中,我们使用期望的导数。(Raiko et al., 2015). 因为B(x)的期望还是x,因此,导数通过二值化层的时候没有变化
对于特定的输入图像,为了产生一个固定的表达,一旦网络被训练好了,只有最有可能的输出值b(x)需要被考虑,b可以被binf替代:
binf(x)=-1 if x<0; +1 other
压缩率由每一步生成的bit数决定,它对应到权值W的个数乘以autoencoder重复的次数。
    1. 前向全链接残差编码
在我们各种编码率压缩算法中,最简单的是全链接网络,E,D由全链接层组成。我们设置每一层的节点数为512,激励函数为tanh。
没一次递归,可以有不同的E和D,因为每一次递归,需要编码的残差图像都有不同统计分布。因此,我们考虑2中方式:第一种方式,每一次递归分享同一组权值,第二种方式,每一次递归训练自己的专有的权值。

    1. 基于LSTM的压缩

在这种架构中,我们探索利用LSTM模型的编码器和解码器。特别地,E和D都包括层叠LSTM层。
继萨伦巴等人提出的LSTM公式和符号(Zarembaetal.(2014),),我们使用上标以指示层号,下标表示time step。hlt表示time step为t的第l个隐藏层。定义Tln为仿射变换
Tln(x)=wlx+bl
定义⊙为点乘,h0t为time step 为t时第0层的输入。
使用这些符号,这个LSTM架构可以表示为

In these equations, sigm and tanh are applied element-wise. This alternate formulation of LSTM is useful because it reduces the numbers of separate operations needed to evaluate one step, which allows for an efficient implementation on GPU.
用于编码器中,我们使用一个全连接层,然后堆叠两个LSTM层。该解码器具有相反的结构:两个堆叠LSTM层,然后一个全连接层,使用tanh激励,用其预测RGB值(我们省略图中的这个层以减少混乱)。在实验中使用的确切结构在图2中(减去RGB转换)中给出。
    1. 前向卷积反卷积残差编码

第3.3节给出的全连接的残差autoencoder。我们扩展这个结构,把全链接造作替换成卷积操作,解码器的最后一层是一个1x1的卷积层,有3个filter,把解码输出转换成RGB。我们描绘在图3这个架构(减去RGB转换)。
反卷积操作定义为卷积的转置,


    1. 卷积反卷积LSTM压缩
最后的结构把卷积反卷积和LSTM结合在一起。我们把方程8中的Tl4n操作用卷积加偏移来替换,这样,卷积LSTM的变换函数就变成了
T的上标l对应的是深度,也就是输出的feature的index,第二个卷积项代表卷积LSTM的recurrent关系,所以他的输入和输出必须有相同的大小。因此,如果一个卷积LSTM的stride大于2,那它只能用于第一个卷积操作项,第二项的stride必须是1。最后,把卷积编码器中的第二和第三个卷积层替换成卷积LSTM层。
对于解码器,不能把所有的卷积都直接替换成反卷积,因为反卷积的输入和输出通常是有不同的维度。因此,定义反卷积LSTM为:
下标c是卷积层的权值,下标d是反卷积层的权值。
在解码器中,第二层和第三层使用反卷积LSTM层替换

    1. 动态bit分配

对于这里给出的非卷积方法,很自然通过允许不同数量的编码器的迭代以分配不同数量的每个色块的比特。这可以通过目标质量度量(例如,PSNR)来确定。虽然不自然,在卷积方法的情况下,类似的方法也可以采用。输入图像需要被分成补丁,和每个补丁独立地处理,从而允许不同数量的每个区域的比特。然而,这种方法将在本文的最后讨论的缺点。

  1. 实验和分析
    1. 训练
为了训练各种神经网络的配置,我们使用Adam算法。 Kingma & Ba (2014)。 训练速度为{0.1,0.3,0.5,0.8,1}。
对于卷积网络,输入为32x32的块,下采样到8x8,每个像素用2个Bit表示,这样每个32x32的块编码成16个byte。
    1. 评估
使用SSIM评估图像质量,1代表最好,0代表最差
    1. 32x32比较
    2. 分析

  1. 结论和将来的工作
Whileourcurrentapproachgivesfavorableresultsversusmoderncodecsonsmallimages,codecsthat include an entropy coder element tend to improve (in a bits-per-pixel sense) with greater resolution, meaning that by choosing an arbitrarily large test image it is always possible to defeat an approach like that described in this work. Therefore, an obvious need is to extend the current work to function on arbitrarily large images, taking advantage of spatial redundancy in images in a manner similar to entropy coding. Although we presented a solution for dynamic bit assignment in the convolutional case, it is not a fully satisfactory solution as it has the potential to introduce encoding artifacts at patch boundaries. Another topic for future work is determining a dynamic bit assignment algorithm that is compatible with the convolutional methods we present, while not creating such artifacts. The algorithms that we present may also be extended to work on video, which we believe to be the next grand challenge for neural network-based compression.

No comments:

Post a Comment