前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >谷歌开源神经网络模型,压缩图片比传统方法提升25%(附论文)

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

作者头像
新智元
发布2018-03-23 16:07:44
1.1K0
发布2018-03-23 16:07:44
举报
文章被收录于专栏:新智元新智元

【新智元导读】 谷歌官方博客今天发布了一篇文章,介绍如何使用神经网络压缩图片。在论文中,谷歌证明了神经网络可以获得比现在普遍使用的压缩方法质量更好、大小更小的图片,理论上会小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

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

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2016-09-30,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 新智元 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档