来源:顶级程序员
作者:图鸭科技
互联网时代,社交媒体分享、自动驾驶、增强显示、卫星通信、高清电视或视频监控等应用场景对图片和视频有很强的需求,压缩算法也因此备受关注,但是不同的应用场景对压缩算法的性能要求也不一样,有的需求是保持高清的画质是第一位,有的需求是体积小是第一位,可以损害一些画质。
那么如何用深度学习技术来设计压缩算法呢?这篇文章将简单的来和大家说一说。
01 深度学习图片压缩框架和基本概念介绍
图1. 基于自编码网络的图像压缩
如图1 所示,一个典型的自编码图片压缩框架包括编码器、量化、反量化、解码器、码字估计、熵编码和率-失真优化等几个模块。
以图1的例子来解释自编码图像压缩网络中各个模块的作用:假定输入图片大小为,通过编码器和量化处理后得到的编码特征的维度为,假定熵编码后平均每个编码特征单元所占据的比特数为R,则编码码率的计算公式为:
(1)
对公式(1)进行分析,其中与输入图片有关,由网络结构来决定,而R是由量化、编码特征分布和熵编码决定。
压缩特征经过反熵编码、反量化和解码器后就能得到解码图片。在解码图片质量不变的条件下,如果R越低则表示压缩效率越高。
编码和解码结构是自编码网络的基础,目的是对非线性变换进行学习。量化的作用是将浮点数转换为整数或二进制,反量化作用与之相反。
量化是降低码字的重要途径,但也是导致信息损失的首要原因。理论上讲量化越精细信息损失越小,但可能导致码字增加和增加训练的难度,因此设计高效的量化算法非常重要。
为了达到提升压缩效率的目的,需要用码字估计模块在训练中对R进行约束。
码字估计首先要利用先验概率模型对编码特征分布进行准确估计,保证估计的编码特征分布与实际分布尽可能接近,然后通过计算熵对熵编码后码字进行估算。
一般可以用带参数概率模型对先验进行建模,如用高斯混合模型对数据分布进行拟合:
(2)
以特征分布估计为基础,熵编码模块首先计算特征的上下文概率,并对编码特征进行进一步的压缩,这样可进一步降低R值。码字估计是估算经过算术编码后,消耗比特数是多少在算术编码高效执行前提下,码字大小的下限,可表示为熵:
(3)
码字估计主要用于训练,在实际使用中先验模型可用于自适应的算术编码,生成码流。从信息论的角度来说,当编码特征越集中时熵会进一步降低,从而熵编码后码字会降低,但网络的表示能力会受影响,并会降低重建图像的质量而导致失真。
所以在熵编码码字与图像重建质量之间需要做权衡,这种权衡称率-失真优化。率对应编码码率,失真对应重建质量。
一般通过率-失真优化构建的损失函数对自编码压缩网络进行训练。
02 为什么选择深度学习
现阶段压缩算法在诸如社交媒体分享、增强现实、自动驾驶、医学影像、高清电视等应用场景下均有很强的需求。
现有的算法如要根据不同的应用需求对现有压缩算法进行优化并不容易,并且现在图像和视频压缩算法性能的提升已遇到瓶颈。
从图片压缩角度来讲,基于深度学习的技术最大的优点是可以根据不同的应用进行针对性的设计和训练,可针对性的对主观或客观指标进行训练。
从视频压缩角度来讲,深度学习压缩采用与H.264、H.265和H.266不同的架构,使用卷积神经网络为主题进行设计,可更灵活地将现阶段机器视觉领域中的光流估计等算法应用帧间关系建模中,设计高效视频压缩算法。
此外,我们会结合超分辨等技术,对传统算法进行进一步优化,降低通信带宽。
图2 TNG 主观和客观训练模型与其他算法对比示意图
自编码的压缩算法,现阶段最大的优势能针对特定的指标进行优化,可对重建图的主观效果有显著提升。
GAN(对抗生成)网络对主观性能、视觉效果提升有好处,但客观质量并不好,一般用GAN网络设计的算法,会生成些与原始数据不一致的细节。现阶段我们将客观质量(PSNR)的提升放在首位,同时主观质量也取得不错的效果。
压缩算法目前的市场需求量很大,加速了新一代压缩算法的研究步伐;但是因为市场需求各不相同,导致新一代的压缩算法推行难度大!
目前TNG采用的是变分自编码网络的方法,且并没有将GAN网络加进来。
03 最后
这是因为,我们的首要需求是客观质量。前文提到了我们在这种设计下达到的效果是:TNG压缩效果是BPG的压缩效果的2倍,是JPEG的压缩效果的3.5—4倍。大家在日常的实践中,可以根据自己具体的压缩需求,进行设计合适的图像压缩算法。