查看原文
其他

一场深度学习引发的图像压缩革命

2018-03-29 思颖 AI研习社

雷锋网 AI 研习社按,2012 年,AlexNet 横空出世,以 15.4% 的低失误率夺得当年 ILSVRC(ImageNet 大规模视觉识别挑战赛)冠军,超出亚军十多个百分点。AlexNet 开启了深度学习黄金时代,随之而来是深度学习在图像识别上的蓬勃发展:

2013 年,ZF Net  以 11.2% 的低失误率夺得 ILSVRC 冠军;

2014 年,VGG Net 在 ILSVRC「分类及定位」比赛单项赛上的失误率为 7.3%,同年,GoogLeNet 以 6.7% 的失误率取得 ILSVRC 冠军;

2015 年,Microsoft ResNet 在 ILSVRC 达到 3.6% 的失误率;

……

除了在图像识别上的一系列突破,深度学习也为图像压缩带来革命性改变。

近日,图鸭科技发布图像压缩技术 TNG(tiny network graphics),其采用深度学习卷积网络作为压缩核心编码。他们的合作对象主要集中在娱乐(在线抓娃娃机)、视频社交(多人通信)、游戏等领域,目前,该算法即将投入商用。与传统算法相比较时,在压缩效率上,TNG 相比 JPEG 提高了 120%,比 WEBP 提高了 30%。在同等压缩率下进行压缩视觉效果对比时,TNG 在纹理细节上比 JPEG2000 的效果要好得多。

图 :在同等压缩率下,对复杂图像压缩视觉效果对比。上图为图鸭所提出的算法,下图为 JPEG2000 算法。可以看到上图的细节效果更好。

图:在低码字情况下 TNG(上图) 与 WebP(下图) 压缩效果对比。相比TNG,WebP 尽管保留了更多细节,但是其失真更多。TNG整体图像效果优于WebP。

JPEG 是目前比较常见的图像压缩方式,在获得极高压缩率的同时能展现十分丰富生动的图像,但是它采用有损压缩格式,会丢失图像中的重复或不重要的信息,因此容易造成图像数据的损失。其主要采用 DCT(Discrete Cosine Transform)技术,将图像信号在频率域上进行变换,分离出高频和低频信息,然后再对图像的高频部分(即图像细节)进行压缩,以达到压缩图像数据的目的。

JPEG2000 作为 JPEG 的升级版,同时支持有损压缩和无损压缩,压缩率比 JPEG 高约 30% 左右。它放弃了 JPEG 所采用的以离散余弦转换 DCT 为主的区块编码方式,而改采以小波转换 (Wavelet transform) 为主的多解析编码方式,来将影像的频率成分抽取出来。

WEBP 是 Google 推出的新一代文件格式,期望代替 JPEG,在与 JPEG 相同图片质量的情况下,可以大大缩小文件大小。WEBP 采用一种基于 VP8 编码(已于 2010 年 5 月开源)的图片压缩器,利用预测编码技术,达到减少数据量、加速网络传输的目的。

而 TNG 一改传统的这些编码技术,转而乘上深度学习这艘大船。

据图鸭科技 CEO 武俊敏介绍,他们从 16 年 8 月开始对 TNG 技术进行研发,历经传统算法和深度学习算法两个阶段。最初,他们在 H.265(HEVC)基础上进行研究,但 H.265 已经是当时最优秀的编码方法之一,基于这项技术进行传统研发的新思路并不多。此时,另一条路摆在他们眼前,那就是深度学习。

方向的转变并非一帆风顺。「我们当时考虑把传统方法里的思路与深度学习想结合。比如传统方法有周围像素预测,我们结合这种方法进行研究,但发现预测效果不好。之后我们还想到了传统方法里的 DCT 变换,将其与深度学习融合之后,发现效果也不好。另外,虽然深度学习在当时很火,但彼时利用深度学习进行图片压缩,做出来的效果相比 H.265 的老版本 H.264 以及 JPEG 都差很多。」但他们认为,再往后,深度学习一定有机会超越 H.265。

他们开始由传统算法彻底转向深度学习算法。

随后是一系列研发与创新。效果是显著的,他们目前的深度学习图像压缩技术 TNG 比起 H.265,在指标上取得前所未有的突破,而且 TNG 网络压缩过的图片还具有滤波效果,对于一些在网络上失真的图像,用 TNG 压缩之后的视觉效果比起原始图还要好一些。

图:高码字情况下 TNG(上图)与 BPG(下图)对比。在实际测试中,BPG 会出现图中所示的块状,这是高频失真导致的振铃效应。振铃效应是因为 BPG 在编码压缩时尽管图片的不同块内容不一样,但采用了同一编码参数,而导致的图像退化中信息量的流失,尤其是高频信息的丢失。

武俊敏对 AI 研习社说道,「TNG 压缩不会因为多次压缩导致主观质量越来越差,还能恢复 JPEG 等方法带来的部分失真。」他举了如下例子:一些利用 HEVC 或 JPEG 压缩的图像存在块效应(块效应:基于块的变换编码在图像压缩编码中得到广泛应用,随着码率的降低,量化变得粗糙,在块的边界会出现不连续,形成重建图像的明显缺陷)。但用 TNG 网络处理后,块效应就会消失。

可以看到,将深度学习技术应用于 TNG 中,带来了非常强大的视觉效果。目前在图片、视频压缩领域,使用最多的深度学习技术就是卷积神经网络(CNN),下面是利用卷积神经网络做压缩的典型方法。

如图所示,主要包括 CNN 编码网络、量化、反量化、CNN 解码、熵编码等几个模块,其中编解码网络可以用卷积、池化、非线性等模块进行设计和搭建。

编码网络的作用是将图片转换为压缩特征,解码网络就是从压缩特征恢复出原始图片。

下面是利用深度学习做压缩的一系列科普:

以图片举例,将一张大小为 768 * 512 的三通道图片送入编码网络,进行前向处理后,会得到占据 96 * 64 * 192 个数据单元的压缩特征。该数据单元中可放一个浮点数、整形数或者是二进制数。这之后就涉及到数据类型的选择。

从图像恢复角度和神经网络原理来讲,如果压缩特征数据都是浮点数,恢复图像质量是最高的。但一个浮点数占据 32 个比特位,图片的计算公式为(96 * 64 * 192 * 32)/(768 * 512)=96,压缩后每个像素占据比特从 24 变到 96,图片大小反而增加了,显然浮点数不是好的选择。

而这里,就涉及到其中的关键技术——量化。

量化的目的是将浮点数转换为整数或二进制数,最简单的操作是去掉浮点数后面的小数,浮点数变成整数后只占据 8 比特,则表示每个像素要占据 24 个比特位。同样,在解码端,可以使用反量化技术将变换后的特征数据恢复成浮点数,如给整数加上一个随机小数,这样可以一定程度上降低量化对神经网络精度的影响,从而提高恢复图像的质量。

即使压缩特征中每个数据占据 1 个比特位,可是压缩还是有可进步的空间。下面是 BPP 的计算公式。

假设每个压缩特征数据单元占据 1 个比特,则公式可写成:(96*64*192*1)/(768*512)=3,计算结果是 3 bit/pixel,从压缩的目的来看,BPP 越小越好。在这个公式中,分母由图像决定,这里进行调整的只有分子:96、64、192,这三个数字与网络结构相关。所以,如果设计出更优的网络结构,这三个数字也会变小。

那 1 与哪些模块相关?1 表示每个压缩特征数据单元平均占据 1 个比特位,量化会影响这个数字,但它不是唯一的影响因素,它还与码率控制和熵编码有关。码率控制的目的是在保证图像恢复质量的前提下,让压缩特征数据单元中的数据分布尽可能集中、出现数值范围尽可能小,这样我们就可以通过熵编码技术来进一步降低 1 这个数值,图像压缩率会进一步提升。

(详情可参见 AI 科技评论此前报导:用深度学习设计图像视频压缩算法:更简洁、更强大

具体到 TNG 网络,武俊敏表示,这一技术看起来很简单,就是利用卷积神经网络,主要有变换,量化,滤波,熵编码等技术。而这些技术的最终目的只有一个,那就是估计图像的概率分布,这也是最困难的。

「我们不知道概率分布到底是什么样的,所以必须去设计网络,来拟合图像的概率分布,进行学习。学完之后,还要考虑该如何压缩图片,让图片在质量和码率上达到最优分布。」

他表示,虽然技术看起来很简单,将其串联起来也没有什么挑战,但训练算法很复杂,而在这其中,他们踩的坑也有很多。

首先就是量化并不好建模,他们最初量化的时候想直接将数据进行截断,再拿来建模,可是这样存在一个问题——梯度传不回去。通过不断试验,他们最后采用监督学习的方式解决这一问题。

而同时也存在效率的问题。他们一开始采用比较深的网络,但后来为了提升速度,降低网络复杂度,慢慢尝试使用更小的 channel 以及更浅的网络。此外,在工程上,他们尝试使用汇编优化等手段。

对于TNG的技术优势,武俊敏总结为如下两点:第一,TNG 图片压缩的 PSNR 值相比目前公开的 deep learning 压缩在相同大小下高 2dB;第二,TNG 压缩的图片,在主观质量上没有方块效应、振铃效果等。「我们采用的是全图直接压缩,而一般图片压缩使用的是分块压缩。」

至于速度,武俊敏对 AI 研习社说道,目前来说,和 JPEG 相比,TNG 在 CPU 上压缩的比较慢,但是,在 GPU 上,1000*1000 的图像只需几十毫秒就可以完成压缩。

其实,除了图像压缩,他们目前在视频压缩上也有进展。武俊敏表示,他们目前的视频压缩已经和 x265(用于编码符合高效率视频编码(HEVC/H.265)标准的视频) 的 medium level 效果持平。下一阶段,他们会继续在图像和视频上取得突破,不断改进。

对深度学习技术在图像视频压缩领域的应用,武俊敏非常乐观。他对 AI 研习社表示,两三年之内,GPU 会大大普及,而 TNG 压缩算法在 GPU 上跑得特别好。此外,他还提到,TNG 压缩的是图片的特征,这些特征具有很强的表征性能,未来可以利用这些特征做一些多任务的处理。

「深度学习对于图像视频压缩,绝对是革命性的。下一代的压缩,不是 H.266,而是深度学习的压缩。」武俊敏如是说道。

目前大家可以进入图鸭官网体验 TNG 算法,地址如下:http://www.tucodec.com/picture/index



新人福利



关注 AI 研习社(okweiwu),回复  1  领取

【超过 1000G 神经网络 / AI / 大数据,教程,论文】


谷歌开源 JPEG 编码器 Guetzli,压缩 35% 也能生成高质量图片

▼▼▼

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存