74KB图片也高清,谷歌用神经网络打造图像压缩新算法

萧箫 发自 凹非寺

量子位 报道 | 公众号 QbitAI

还在为图像加载犯愁吗?

最新的好消息是,谷歌团队采用了一种GANs与基于神经网络的压缩算法相结合的图像压缩方式HiFiC,在码率高度压缩的情况下,仍能对图像高保真还原。

GAN(Generative Adversarial Networks,生成式对抗网络)顾名思义,系统让两个神经网络相互「磨炼」,一个神经网络负责生成接近真实的数据,另一个神经网络负责区分真实数据与生成的数据。

简单来说,就是一个神经网络「造假」,另一个神经网络「打假」,而当系统达到平衡时,生成的数据看起来便会非常接近真实数据,达到「以假乱真」的效果。

下面是这种算法展现出来的图像与JPG格式图像的对比。

可见,在图像大小接近的情况下(HiFiC大小74kB,JPG图像大小78kB),算法所展现出来的图像压缩效果要好得多。

而在与原图进行对比时,HiFiC所展现出来的还原效果仍然非常优秀。(真的不是在原图中间画了条线吗?)

目前处于特殊时期,大量国外网友仍在家中隔离,Netflix和油管的播放量暴增,一些视频网站甚至不得不被迫降低视频在线播放的清晰度,以适应激增的数据量。

但看惯了高清视频的网友们,面对突如其来的「模糊打击」自然怨声载道。

用一位网友的话来说,如果视频行业也能被应用类似的技术,相信Netflix和油管会特别高兴,毕竟这种高清低码率的图像复原实在太诱惑。

哇,如果他们可以对视频做同样的事情的话,我相信Netflix和YouTube会很高兴的。

事实上,在了解HiFiC算法的原理后,会发现它的确不难实现。

接近原图的图像重构算法

此前,相关研究已有采用神经网络进行图像压缩的算法,而随着近年来生成式对抗网络兴起,采用GANs生成以假乱真图像的算法也不在少数。

如果能有办法将二者结合,图像压缩的效果是不是会更好、更接近于人类的感知?

这次图像压缩的模型便是基于二者的特性设计,在基于神经网络的压缩图像算法基础上,采用GANs进一步让生成的图片更接近于人类视觉,在图像大小和视觉感知间达到一个平衡。

可以看见,HiFiC的架构被分成了4个主要部分,其中E为编码器,G为生成器,D为判别器,而P则是E的输出E(x)的概率模型(这里用y表示),也就是P用于模拟y的概率分布。

GANs运作的核心思想在于,需要让架构中的生成器G通过某种方法,「欺骗」判别器D判定样本为真。

而概率模型P,则是达成这步操作的条件。

然后,将E、G、P参数化为卷积神经网络,这样就可以通过率失真优化的条件,对这些网络进行共同训练。

同时,研究者也对已有的几种GANs算法架构进行了微调,使其更适于HiFiC架构。

研究发现,将GANs与深度学习相结合的HiFiC算法取得了意想不到的效果。

模型评估

下图是采用目前几种主流图像质量评估标准,对几种前沿的图像压缩算法与HiFiC算法进行比较的结果。

在图中,评估标准后面自带的箭头,表示数据更低(↓)或数据更高(↑)表示图像质量更好。

为了更好地对比,结果分别采用了HiFiC算法(图中红点连线)、不带GANs的对比算法(图中橙方连线)、目前较为前沿的M&S算法(图中蓝方连线)和BPG算法(图中蓝点连线)。

从结果来看,HiFiC算法在FID、KID、NIQE、LPIPS几种评估标准均为最优,而在MS-SSIM和PSNR标准中表现一般。

由评估标准间的差异可见,各项图像质量标准不一定是判断压缩技术的最好办法。

用户评测对比

毕竟,图像是用来看的,最终的判断权还得交回用户手里。

图像究竟是否「清晰」,某种程度上得通过人眼的判断来决定。

出于这个考虑,团队采取了调研模式,让一部分志愿者参与算法的比较。

他们先展示一张测试图片的随机裁切图样,当志愿者对其中某张裁切图样感兴趣时,便用这一部分来进行所有算法的对比。

志愿者将原图与经过算法处理后的图像对比后,选出他们认为「视觉上」更接近于原图的压缩算法。

在所有算法经过选取后,将会出现一个排名,以衡量HiFiC的实际效果。(其中,HiFiC的角标Hi、Mi和Lo分别为设置由高至低3种不同码率阈值时的算法)

上图中,评分越低,则代表图像在用户眼中「越清晰」。从图中来看,HiFiC(Mi)在0.237bpp的压缩效果下,甚至比两倍码率的0.504bpp的BPG算法在用户眼里还要更好。

即使压缩效果达到了0.120bpp,也比0.390bpp的BPG算法更好。

这项研究再次推动了图像压缩技术的发展,正如网友所说,随着图像压缩技术的发展,在线看4k电影也许真能实现。

作者介绍

Fabian Mentzer,目前在瑞士苏黎世理工学院进行计算机视觉研究,感兴趣的研究方向有深度学习、图像压缩、前馈神经网络、图像分类等。

这篇论文的主要工作由Fabian Mentzer在谷歌研习期间完成,其余三位作者均来自谷歌团队。

目前有关这个项目的源代码和训练好的模型也即将放出,小伙伴们可以戳下方传送门查看最新进展。

传送门

项目链接
https://hific.github.io/

—  —

推荐阅读

谷歌开源NLP模型可视化工具LIT,模型训练不再「黑箱」

点击“阅读原文”图书配套资源

本文分享自微信公众号 - 相约机器人(xiangyuejiqiren)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

2020年前端实用代码段,为你的工作保驾护航

有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )