谷歌开源神经网络模型,压缩图片比传统方法提升25%(附论文)

【新智元导读】 谷歌官方博客今天发布了一篇文章,介绍如何使用神经网络压缩图片。在论文中,谷歌证明了神经网络可以获得比现在普遍使用的压缩方法质量更好、大小更小的图片,理论上会小25%。谷歌这次要解决图片占用内存过多的问题。用户可以去 TensorFlow使用该模型压缩自己的图片。

作者: Nick Johnston and David Minnen, Software Engineers

数据压缩几乎发生在互联网的任何角落,你观看的视频、分享的突破、听的音乐,甚至你现在在看的文章,都是经过压缩的。压缩技术使得内容分享变得更快速和高效。如果没有数据压缩,获取你所需时间和带宽的成本将会变得极高。

在论文“Full Resolution Image Compression with Recurrent Neural Networks”中,我们在自己此前使用神经网络压缩数据的研究上进行了扩展,探索机器学习能否为图像压缩提供更好的结果,正如它在图像识别和文本摘要中所做到的那样。

进一步的,我们在本文中发布了通过TensorFlow构架的压缩模型,这样你就能使用我们的网络来压缩自己的图片,进行体验。

我们带来了一个架构,使用的是一种新的封闭循环单元(Gated Recurrent Unit ,RNN的一种,单元可以存储激活分析和处理序列) 变体,叫残差封闭循环单元(Residual GRU)。我们的Residual DRU 结合了既有的GRU和“图像识别深度残差学习”中的残差连接,在特定的压缩率下获得高质量的图像。

与时下许多使用DCT来生成新的字节表示的图像压缩方法不同,我们训练了两个神经网络,一个用于从图像中生成代码(编码),另一个则是从编码中生成图像(解码)。

我们的系统通过反复地改善原始图像重构进行工作,编码和解码都使用Residual GRU 层,这样,多余的信息能够从一个循环中传递到下一个。每一个循环会想编码增加更多的字节,这会让更高质量的重构成为可能。从概念上看,这一网络的运行过程如下:

  1. 最初的残差, R[0],指代原始图像 I: R[0] = I。
  2. 第一个循环中,设置 I=1。
  3. 循环[i] 把 R[i-1]作为输入,运行解码,同时二值化对图像进行压缩,到B[i]。
  4. 循环[i] 在B[i]上进行解码,生产一个重构的图像 P[i]。
  5. 对循环[i] 中的残差进行计算:R[i] = I - P[i]。
  6. 设i=i+1,回到步骤3(直到获得想要的循环次数)

残差图像代表了压缩后得到的图像与原始图像之消除间的不同。这一图像随后会被用作另一个神经网络的输入,其目标是在下一个版本的图像中消除掉压缩图像的错误率。压缩图像现在的表示就是通过B[N]达到的B[1]的联系。对于更大值的N,解码器会获得更多关于减少错误的信息,并生成更高质量的重构图像。

未了理解这一工作原理,可以参考以下例子,我们的图像压缩神经网络的第一和第二个循环在表进行了展示。我们从一张白房子的照片开始。在网站中的第一个通道,原始图像被看成是一个输入(R[0] = I)。P[1] 就是重构 图像。原始图像与编码图像之间的差异就是残差R[1],它代表着压缩中在错误率。

左边:原始图像,I = R[0]. 中间: 重构图像, P[1]. 右: 残差, R[1], 代表着压缩带来的误差。

在网络中的第二个通道,R[1] 被当成网络的输入(见下图)。一个更高质量的图像 P[2]随之得以生成。那么,这一系统是如何从残差R[1]中创造这么好的图像 (P[2],下图中间)因为模型使用了带有记忆的节点,网络从每一次循环中储存信息,进而可以在下一次循环中进行使用。它在循环[1]中学到一些关于原始图像的知识,这些知识和R[1]一起使用,可以从B[2]中生成更好的P[2]。最后,一个新的残差 R[2] (右),通过从原始图像中减去P[2] 得以生成。这一次,残差变小,因为重构的图像与最开始的图像之间差异已经变小。

网络中的第二个通道。左边:R[1] 被当成网络的输入。中间:一个更高质量的图像 P[2]。一个新的残差 R[2] (右),通过从原始图像中减去P[2] 得以生成。

在每一个深入的循环中,网络获得了更多的关于压缩过程误差的信息(通过残差捕捉)。如果它能用这些信息来预测哪怕稍微一点残差,就会带来更好的重构结构。我们的模型能够使用利用额外的字节,指导一个极值。我们看到了收益的递减,并且在某些点上,网络的代表能力会被耗尽。

为了展示文件大小和质量的差别,我们拍了一张日本犬Vash的照片,并生成了两张压缩图像,一张是JPEG格式,另一张则是残差 GRU。两张图片的目标都是从感知上相似度要达到0.9MS-SSIM,这是一个评估感知质量的值,最高为1.0。我们的学习模式生成的结果比JPEG小20%。

左: 原始图像(1419 KB PNG) at ~1.0 MS-SSIM. 中: JPEG (33 KB) at ~0.9 MS-SSIM. 右: Residual GRU (24 KB) at ~0.9 MS-SSIM.

看一下狗的鼻子和嘴,可以看到,我们的模型并没有JPEG的图片中间部位所见到的红色色块和噪点。这是因为JPEG压缩时产生了方块伪影,但是我们的压缩网络是在整张图片一次性完成的。但是,我们的模型也有缺陷:胡须中的细节和纹理丢失了。不过,整个系统在减少伪影上有巨大潜力。

左边:原始入选。 中:JPEG 右:残差GRU

虽然今天常用的方法已经很好,但是我们的研究显示,使用神经网络来压缩图像可以获得更高的质量和更低小的文件大小。未来,谷歌的研究将着眼于更好的压缩质量和更高速的模型。请保持关注。

原文发布于微信公众号 - 新智元(AI_era)

原文发表时间:2016-09-30

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

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏新智元

DeepMind重磅:神经算术逻辑单元,Keras实现

【新智元导读】DeepMind最新提出“神经算术逻辑单元”,旨在解决神经网络数值模拟能力不足的问题。与传统架构相比,NALU在训练期间的数值范围内和范围外都得到...

8020
来自专栏文武兼修ing——机器学习与IC设计

基于Pytorch的CapsNet源码详解CapsNet基本结构代码实现参考

CapsNet基本结构 参考CapsNet的论文,提出的基本结构如下所示: ? capsnet_mnist.jpg 可以看出,CapsNet的基本结构如下所示:...

37570
来自专栏AI科技大本营的专栏

透析|卷积神经网络CNN究竟是怎样一步一步工作的?

译者 | zhwhong 当你听到说深度学习打破了某项新技术障碍,那么十有八九就会涉及到卷积神经网络。它们也被称作CNNs或着ConvNets,是深层神经网络领...

35490
来自专栏漫漫深度学习路

信息熵(entropy)

information entropy 信息熵用来描述信息的不确定性,如果不确定性越高,那么信息熵越大,否则则越低。 自信息(信息量) I(X)称为自信息,I(...

36580
来自专栏AI研习社

如何有效处理特征范围差异大且类型不一的数据?

原题目如下: 1. 特征类型混杂: 连续变量,离散变量,描述变量共存 2. 不同变量之间取值差异大: 例如有些变量取值在 0~1 但有些取值为 10000-5...

47470
来自专栏机器学习算法工程师

机器学习之——自动求导

作者:叶虎 小编:张欢 随机梯度下降法(SGD)是训练深度学习模型最常用的优化方法。在前期文章中我们讲了梯度是如何计算的,主要采用BP算法,或者说利用链式法则...

34780
来自专栏人工智能头条

如何使用 RNN 模型实现文本自动生成 |

53720
来自专栏深度学习自然语言处理

详解文本分类之多通道CNN的理论与实践

最近在梳理文本分类的各个神经网络算法,特地一个来总结下。接下来将要一个文章一个文章的讲解各个算法的理论与实践。目录暂定为:

42530
来自专栏AI2ML人工智能to机器学习

收敛率概述 (Overview of Rates of Convergence)

在算法优化过程中经常会遇到收敛(Convergence)问题, 尤其目前的深度学习盛行, 如何设计更高效的收敛算法, 是个极大的挑战。

17950
来自专栏人工智能头条

优秀的排序算法如何成就了伟大的机器学习技术(视频+代码)

【导读】在机器学习中,支持向量机(SVM)算法是针对二分类任务设计的,可以分析数据,识别模式,用于分类和回归分析。训练算法构建一个模型,将新示例分配给一个类别或...

9420

扫码关注云+社区

领取腾讯云代金券