目前,基于深度学习的端到端图像压缩效果已经接近或超越了很多传统算法,这里简单总结了几项端到端压缩算法的关键技术,以及个人的一些理解。
1、自编码器Autoencoders
目前端到端的图片压缩大多使用了自编码器结构。这里的自编码器可以理解为是一种神经网络,label与输入相同,目的是让输出接近于输入,可以用于提取特征。例如图1-1,Hidden2层只有150个节点,可以小于输入和输出的784个节点,具有压缩效果。
目前主流的的端到端图片压缩大体上可以分为神经网络编码、量化、熵编码、熵解码、神经网络解码几个步骤。熵编码是无损的,因此熵编解码可以不出现在训练中。
2、量化
模型反向传播中通过梯度下降来优化,要求计算过程可导,但是量化是一个不可导的过程。下面几种方法可以用来处理这个问题。
2.1、添加均匀噪声
这种方法的实现过程是,在训练中,使用添加噪声来替代量化的过程。
按照个人的理解,对于通常的量化,例如将0到10量化为5,11到20量化为15,量化前的数和量化后的数字相比,差值类似与一种均匀噪声,因此可以用添加噪声来模拟。论文[3]使用了这种方法。
2.2、软量化
这里主要参考论文[2]关于量化部分的描述。对于z=[z1, z2, z3, …]为了将zj量化为符号cj,需要在c=[c1, c2, c3, …]中选择最接近zj的c