如何使用深度学习进行图片压缩?

源 / 顶级程序员 文 / 图鸭科技

互联网时代,社交媒体分享、自动驾驶、增强显示、卫星通信、高清电视或视频监控等应用场景对图片和视频有很强的需求,压缩算法也因此备受关注,但是不同的应用场景对压缩算法的性能要求也不一样,有的需求是保持高清的画质是第一位,有的需求是体积小是第一位,可以损害一些画质。

那么如何用深度学习技术来设计压缩算法呢?这篇文章将简单的来和大家说一说。

深度学习图片压缩框架和基本概念介绍

图1. 基于自编码网络的图像压缩

如图1 所示,一个典型的自编码图片压缩框架包括编码器、量化、反量化、解码器、码字估计、熵编码和率-失真优化等几个模块。

以图1的例子来解释自编码图像压缩网络中各个模块的作用:假定输入图片大小为,通过编码器和量化处理后得到的编码特征的维度为,假定熵编码后平均每个编码特征单元所占据的比特数为R,则编码码率的计算公式为:

(1)

对公式(1)进行分析,其中与输入图片有关,由网络结构来决定,而R是由量化、编码特征分布和熵编码决定。

压缩特征经过反熵编码、反量化和解码器后就能得到解码图片。在解码图片质量不变的条件下,如果R越低则表示压缩效率越高。

编码和解码结构是自编码网络的基础,目的是对非线性变换进行学习。

量化的作用是将浮点数转换为整数或二进制,反量化作用与之相反。

量化是降低码字的重要途径,但也是导致信息损失的首要原因。理论上讲量化越精细信息损失越小,但可能导致码字增加和增加训练的难度,因此设计高效的量化算法非常重要。

为了达到提升压缩效率的目的,需要用码字估计模块在训练中对R进行约束。

码字估计首先要利用先验概率模型对编码特征分布进行准确估计,保证估计的编码特征分布与实际分布尽可能接近,然后通过计算熵对熵编码后码字进行估算。

一般可以用带参数概率模型对先验进行建模,如用高斯混合模型对数据分布进行拟合:

(2)

以特征分布估计为基础,熵编码模块首先计算特征的上下文概率,并对编码特征进行进一步的压缩,这样可进一步降低R值。码字估计是估算经过算术编码后,消耗比特数是多少在算术编码高效执行前提下,码字大小的下限,可表示为熵:

(3)

码字估计主要用于训练,在实际使用中先验模型可用于自适应的算术编码,生成码流。

从信息论的角度来说,当编码特征越集中时熵会进一步降低,从而熵编码后码字会降低,但网络的表示能力会受影响,并会降低重建图像的质量而导致失真。

所以在熵编码码字与图像重建质量之间需要做权衡,这种权衡称率-失真优化。率对应编码码率,失真对应重建质量。

一般通过率-失真优化构建的损失函数对自编码压缩网络进行训练。

实现压缩算法的要素

我们现在的思路:从优化自编码网络结构、设计新的量化方式、设计新的压缩特征先验建模方法和率-失真优化等几个方面进行研发,提升现在图像压缩算法的性能,特别是低码率下的压缩性能。

技术难点与壁垒:在于如何以变分自编码网络为基础,解决如何优化自编码网络结构、如何对量化和先验建模进行联合优化的问题,提高图像压缩的性能和降低复杂度,提升实用性是难点。

一些经验分享:准确先验概率估计利于自适应算术编码,准确先验概率估计利于训练中对码字分布进行约束,在实践中用带参数的概率模型,如高斯混合模型等对先验进行建模。

准确估计先验的基础上,会存在一个权衡:编码特征越集中熵越小,但网络的表示能力受影响,降低重建质量。要做好两个问题:

1)准确先验估计;

2)码率和重建质量权衡。

感兴趣的朋友,可以看一下我之前所做的分享:http://www.chinahadoop.cn/course/1122

为什么选择深度学习

现阶段压缩算法在诸如社交媒体分享、增强现实、自动驾驶、医学影像、高清电视等应用场景下均有很强的需求。

现有的算法如要根据不同的应用需求对现有压缩算法进行优化并不容易,并且现在图像和视频压缩算法性能的提升已遇到瓶颈。

从图片压缩角度来讲,基于深度学习的技术最大的优点是可以根据不同的应用进行针对性的设计和训练,可针对性的对主观或客观指标进行训练。

从视频压缩角度来讲,深度学习压缩采用与H.264、H.265和H.266不同的架构,使用卷积神经网络为主题进行设计,可更灵活地将现阶段机器视觉领域中的光流估计等算法应用帧间关系建模中,设计高效视频压缩算法。

此外,我们会结合超分辨等技术,对传统算法进行进一步优化,降低通信带宽。

图2 TNG 主观和客观训练模型与其他算法对比示意图

自编码的压缩算法,现阶段最大的优势能针对特定的指标进行优化,可对重建图的主观效果有显著提升。

GAN(对抗生成)网络对主观性能、视觉效果提升有好处,但客观质量并不好,一般用GAN网络设计的算法,会生成些与原始数据不一致的细节。现阶段我们将客观质量(PSNR)的提升放在首位,同时主观质量也取得不错的效果。

未来我们会根据不同应用需求,考虑是否采用GAN网络。虽然我们现阶段的重点在客观性能的提升上,实验中也发现客观质量越好,与原始图片差异越小,主观质量也会有相应的提升,同时发现结合MSE和MS-SSIM能获取非常好的MS-SSIM性能。

如图2所示,使用MS-SSIM为损失函数训练出的模型(TNG subjective),得到的MS-SSIM指标明显优于使用MSE作为损失函数训练的模型(TNG object)。

TNG subjective 在相同的主观MS-SSIM指标下,所消耗的码字是BPG的一半,流量节省了50%;相比JPEG,TNG仅消耗原来流量的25%-30%。

总结

压缩算法目前的市场需求量很大,加速了新一代压缩算法的研究步伐;但是因为市场需求各不相同,导致新一代的压缩算法推行难度大!

目前TNG采用的是变分自编码网络的方法,且并没有将GAN网络加进来。

这是因为,我们的首要需求是客观质量。前文提到了我们在这种设计下达到的效果是:TNG压缩效果是BPG的压缩效果的2倍,是JPEG的压缩效果的3.5—4倍。

大家在日常的实践中,可以根据自己具体的压缩需求,进行设计合适的图像压缩算法。

作者:图鸭科技

成立于2016年8月,专注于视频图像压缩领域研究,研发团队有30余人,有意者可联系wenjiao@tucodec.com

-END-

原创声明:本文为顶级程序员原创文章

原文发布于微信公众号 - 顶级程序员(TopCoding)

原文发表时间:2018-04-26

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏james大数据架构

你必须要了解的大数据潮流下的机器学习及应用场景

  机器学习是一门人工智能的科学,能通过经验自动改进的计算机算法的研究。       机器学习是一个多学科交叉的领域,会涉及到计算机、信息学、数学、统计学、神经...

4268
来自专栏量子位

骗过70%的人!这个AI能自动给视频配音,真假难辨(不服来试)

安妮 发自 凹非寺 量子位 出品 | 公众号 QbitAI 先来做个“真假美猴王”的游戏。 视频内容 你将看到两段画面相同的视频,请判断哪段来自视频原声,哪...

3995
来自专栏人工智能头条

如何入门Python与机器学习 | 赠书

1592
来自专栏机器学习之旅

总结:常见算法工程师面试题目整理(二)

答: boost的核心思想不同于bagging,它在基于样本预测结果对照与真实值得差距,进行修正,再预测再修正,逐步靠近正确值。

952
来自专栏数据科学与人工智能

【深度学习】深度学习入门资源索引

深度学习(Deep Learning)属于非常前沿的学科,没有现成的的综合型教材,主要是通过阅读大量论文和代码练习来学习。值得读的经典论文很多,下面介绍的一些教...

2998
来自专栏智慧教育

信号为E时,如何让语音识别脱“网”而出?

可以说,语音识别是人类征服人工智能的前沿阵地,是目前机器翻译、自然语言理解、人机交互等的奠基石。 

2464
来自专栏人工智能头条

人工智能进行连续决策的关键——强化学习入门指南

1432
来自专栏人工智能头条

手工艺品电商平台Etsy的个性化推荐

1553
来自专栏人工智能头条

基于黑盒语音识别系统的目标对抗样本

1663
来自专栏新智元

【TensorFlow超级指南】你能想到的TF教程和资源都在这里了

【新智元导读】众所周知,TensorFlow已然成为机器学习的热门工具。不论是学习还是从事与机器学习相关的工作,能够灵活使用TensorFlow可以大幅提高作业...

1032

扫码关注云+社区

领取腾讯云代金券