互联网时代,社交媒体分享、自动驾驶、增强显示、卫星通信、高清电视或视频监控等应用场景对图片和视频有很强的需求,压缩算法也因此备受关注,但是不同的应用场景对压缩算法的性能要求也不一样:有的需求是以保持高清画质为第一位;有的需求是以体积小为第一位,可以适当降低图像画质。那么如何用深度学习技术来设计压缩算法呢?这篇文章将简单的来和大家说一说。
深度学习图片压缩框架和基本概念介绍
图1. 基于自编码网络的图像压缩。
如图1 所示,一个典型的自编码图片压缩框架包括编码器、量化、反量化、解码器、嫡编码、码字估计和率-失真优化等几个模块。下面将会以图1为例,来解释自编码图像压缩网络中各个模块的作用:假定输入图片大小为,通过编码器和量化处理后得到的编码特征的维度为,假定熵编码后平均每个编码特征单元所占据的比特数为R,则编码码率的计算公式为:
(1)
公式(1)中的与输入图片有关,由网络结构来决定,而R是由量化、编码特征分布和熵编码决定。压缩特征经过反熵编码、反量化和解码器后就能得到解码图片。在解码图片质量不变的条件下,如果R越低则表示压缩效率越高。编码和解码结构是自编码网络的基础,目的是对非线性变换进行学习。量化的作用是将浮点数转换为整数或二进制,反量化作用与之相反。量化是降低码字的重要途径,但也是导致信息损失的首要原因。理论上讲量化越精细信息损失越小,但可能会增加码字和训练难度,因此设计高效的量化算法非常重要。为了达到提升压缩效率的目的,需要用码字估计模块在训练中对R进行约束。码字估计首先要利用先验概率模型对编码特征分布进行准确估计,保证估计的编码特征分布与实际分布尽可能接近,然后通过计算熵对熵编码后码字进行估算。