Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Google Guetzli图片压缩算法预研报告

Google Guetzli图片压缩算法预研报告

原创
作者头像
陈磊
修改于 2017-06-19 11:10:38
修改于 2017-06-19 11:10:38
3.7K0
举报
文章被收录于专栏:陈磊的专栏陈磊的专栏

作者介绍:陈磊,腾讯社交平台部后台开发,高级工程师。参与过朋友网、手机qq空间、微群组、企鹅FM等产品的开发,对大型服务器架构设计、音频、直播、图片领域有研究和工程经验。

背景

Google推出了一个新的编码算法Guetzli,用于编码jpeg格式,官方称比之前libjpeg可以缩小30%的量。此算法只是改了jpeg的编码算法,并没有改解码算法,编出的jpg通用目前的jpg解码器。考虑webp相对弱的兼容性和慢解码速度,Guetzli值得考虑的方案。本文将通过比较libjpeg, Guetzli,webp的压缩率、压缩延时、压缩资源、解压性能,评估Guetzli可用性。

原理

Guetzli基于同样来源于google的一个图片视觉差异评价工具Butteraugli。Butteraugli的评价体系基于三个传统方法没有考虑的原则:

  • 人眼对强黄色光附近蓝光变化是不敏感的,因此黄光区域附近的蓝光可以用更少的bit来编码
  • 人眼对蓝光有着较低的空间分辨率,视网膜中用于分辨高清细节的区域没有蓝色光的受体,故高频区域的蓝色光部分可以用更粗的粒度编码。
  • 将图像中的噪声区域分辨出来进行粗粒度的编码。

基于这三点,Guetzli主要从两方面下手来进行:

  • 对全局量化表进行微调,这一步和我们调整质量参数本质上是一样的
  • 对DCT系数的高频部分进行有选择的丢弃

第二步就比较tricky了。我们通常调整质量参数本质上就是有选择的丢弃高频信息。Guetzli在这一步就相当于替我们降低了质量而不告诉用户,让用户以为仍然保持了质量。总的流程就是Guetzli尝试多种a,b两个方面的可能性,然后分别放到Butteraugli评测工具中评分,最后选择一张它认为最好的结果返回给用户。所以它的处理时延特别长。

(此原理描述摘自文章《Guetzli:谷歌家的东西可能也没有想像的辣么美》

压缩率

压缩率:描述压缩文件的效果名,是文件压缩后的大小与压缩前的大小之比

质量系数:图片压缩级别,质量系数1表示最低图像质量和最高的压缩,质量系数100表示最佳的图片质量和最低效的压缩。下图是libjpg、Guetzli、webp不同质量系数下的压缩率,可以看出:

  • 整体压缩效果:webp>Guetzli>libjpg
  • guetzli比libjpg优12%-33%, webp比Guetzli优20%左右
  • guetzli在高质量系数下,压缩率表现更好

图片肉眼观察质量

对于相同质量系数压缩的图片,各算法肉眼是看不出区别

压缩延时

模型:这里假设业务需要转5档图,这里压缩延时计算模型是一张图片转换成业务需要的五档图的总延时

数据:下面的表是测试后的平均值,每个数据都是五档图加起来的总延时

可以看出:quetilz算法的压缩延时远远高于libjpg webp,前者到分钟,后者不到秒。也就是说业务用guetzli算法,单个节目或者专辑的图片转五档图,不算任务排队时间,转码就需要1分钟。

OMG的yajunwang同学最近用guetzli算法跑了一个不同大小图片,范围是1k到4M,转换成图表如下:横坐标是图片大小,纵坐标是耗时

(此原理描述摘自文章:《谷歌开源图片压缩算法Guetzli实测体验报告》)

分析得出:

  • 转码耗时整体随着图片大小增长
  • 有些异常数据点,是图片size相对小的图片有比较大的像素,这个算法严格的说是耗时和像素大小相关,而不是文件大小

后台压缩资源评估

  • cpu:执行一个guetzli进程可以把单核cpu跑满
  • 内存:guetzli是个内存消耗性的的算法,占用内存随着像素增加而增加,具体测试数据如下:

比如:处理个7.9MPix的图片,尺寸3264*2448,占用1G内存,60G内存的机器只能同时处理不到60张;库里的图片在100K左右,也要100M左右内存。

假设业务每天的图片入库量10000,上面的数据看到单核cpu处理一个图片均值60s,也就是一小时处理60个图片,10核处理600个图片,17个小时可以消化一天的量。对于延时要求不高的运营图片上架场景,是满足的,也可以增加逻辑提高指定图片的优先级。

客户端下载、解码耗时

用户查看图片经过客户端下载和解码两个阶段:

  • 下载延时依赖网络环境、文件大小
  • 解码延时依赖解码算法、机器性能
  • 同一档图,不同算法,总延时优劣比较方法:

设带宽用户网络带宽为N,Guetzli算法压缩的文件大小与Webp压缩后的文件之差为DeltaSize,Webp解压延时与Guetzli解压延时之差DeltaDecodeCost

Guetzli与Webp的优劣公式: 整体耗时差 = DeltaSize/N - DeltaDecodeCost, 整体耗时差大于0表示Webp更优,整体耗时差小于0表示Guetzli更优

以上算法需要线上大量数据测出个均衡值,可以考虑根据带宽和文件大小动态选择。

看一下真实测试的效果

  • 输入:相同的图片源,转换成五档不同的大小
  • 机型:andirod选8核、4核、单核三种机型,ios选择iphone5s、iphone6p、iphone7
  • 下面第一张表是不同机型的解码耗时;第二张表是两个平台不同网络条件的下载耗时、解码耗时、总耗时

(数据由wealongcai,freddyyao两位同学提供)

分析出:

  • 解压性能:guetzli>jpg>webp
  • 解压性能与机器性能成正相关关系
  • 整体耗时上,webp和Guetzli接近,webp从此数据看更胜一筹,两者比jpg优势明显
  • 在网络环境越来越好的情况下,guetzli整体性能表现会越来越好

兼容性

gutilz只能编码yuv编码的图片,不能直接编码RGB格式,需要做先做一步转换

综合评估

  • 对于jpg与guetzli的比较,视觉质量上无区别,压缩率上guetzli有明显优势;编码延时上,guetzli对资源要求高,对图片上线延时要求不高的可以接受。
  • 对于guetzli与webp的比较,视觉质量上无区别,从目前的测试数据来看,webp整体优一些,但是优势不是特别明显,网络环境越好,guetzli表现的越好。
  • 对于H5的jpg在上传延时要求不高的场景,都适合直接用guetzli替换

Guetzli算法刚提出不久,还需要更多的数据支持和验证,如果有问题,请各位指正,谢谢!

相关推荐

Android动态库压缩壳的实现

关于Android图片资源瘦身的奇思妙想

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

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

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

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

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
谷歌开源图片压缩算法 Guetzli 实测体验报告
王亚军
2017/03/21
14.5K0
谷歌开源图片压缩算法 Guetzli 实测体验报告
Guetzli:谷歌家的东西可能也没有想像的辣么美
望昕宇
2017/03/28
3.5K0
如何节省1T图片带宽?解密极致图像压缩
图像已经发展成人类沟通的视觉语言。无论传统互联网还是移动互联网,图像一直占据着很大部分的流量。如何在保证视觉体验的情况下减少数据流量消耗,一直是图像处理领域研究的热点。也诞生了许多种类的图像格式JPEG、PNG 、GIF、WEBP、HEVC,以及腾讯公司自研的WXAM和SHARPP格式。 腾讯TEG - 架构平台部图片存储系统TPS 作为超大规模的图片平台,图片数万亿张存储量百P,下载带宽数T,一直需要严重关注图像压缩技术的发展。本文就近几年图像压缩技术的发展、新格式的出炉,和图片存储系统TPS在实际业务上
腾讯大讲堂
2018/04/02
1.9K0
如何节省1T图片带宽?解密极致图像压缩
数据万象 CI 图片瘦身,实现超高压缩与视觉无损两全
据统计,一个人获得的信息大约有75%来自视觉,而图片是人们最主要的信息源。进入信息化时代,人们越来越依靠计算机获取和利用信息,而数字化后的多媒体信息具有海量性,大量的图片信息会给存储器的存储容量,通信干线信道的带宽,页面加载速度,以及计算机的处理速度增加极大的压力。这时对图片信息进行有效的压缩处理无疑会极大的降低压力,并且显著提升页面加载速度。
云存储
2020/10/21
1.4K0
数据万象 CI 图片瘦身,实现超高压缩与视觉无损两全
如何节省 1TB 图片带宽?解密极致图像压缩
在不断出现的新格式被逐步应用之后,兼容性最好的传统老格式 JPEG 依然地位高居不下占据大幅带宽,如何在老格式上也继续挖掘优化点?
腾讯技术工程官方号
2018/01/24
3.9K2
如何节省 1TB 图片带宽?解密极致图像压缩
万象优图:图片成本优化的瑞士军刀
该文介绍了万象优图的技术原理、功能特点、适用场景和实现效果等方面的信息。
腾讯云数据处理团队
2017/06/26
2.5K1
万象优图:图片成本优化的瑞士军刀
腾讯社交网络图片带宽优化技术演进之路
作者介绍:游佳龙,腾讯高级工程师,目前专注于SNG组件运维工作。6年运维领域相关工作经验,具备中间、云计算、接入组件、CDN网络等建设优化能力。 前言 腾讯社交网络相关产品,例如腾讯课堂、增值会员、动漫、直播、游戏商城、音乐、Qzone校园等,主要目标群体定位为年轻一代,属于对新事物接受比较高也更喜欢新鲜个性内容的群体,产品设计上必然使用大量的图片展示;同时核心产品QQ也涉及大量的图片存储及展示,例如QQ群图、群相册等。图片在产品中的大量使用拥有诸多好处的同时,也带来以下几点问题: 服务器端出口流量
织云平台团队
2018/01/26
3.1K1
腾讯技术分享:社交网络图片的带宽压缩技术演进之路
腾讯社交网络相关产品,例如腾讯课堂、增值会员、动漫、直播、游戏商城、音乐、Qzone校园等,主要目标群体定位为年轻一代,属于对新事物接受比较高也更喜欢新鲜个性内容的群体,产品设计上必然使用大量的图片展示;同时核心产品QQ也涉及大量的图片存储及展示,例如QQ群图、群相册等。
JackJiang
2018/08/29
2.5K1
腾讯技术分享:腾讯是如何大幅降低带宽和网络流量的(图片压缩篇)
每年年初腾讯公司都要制定 SNG 成本优化年度目标,过去三年已经用技术手段为公司节省了超过 10 亿的现金流。产品的架构和容量也越来越健康,继续成本优化变得十分艰难。
JackJiang
2018/08/29
3.1K1
《数据万象带你玩转视图场景》第一期:avif图片压缩详解
随着硬件的发展,不管是手机还是专业摄像设备拍出的图片随便可能就有几M,甚至几十M,并且现在我们处于随处可及的信息海洋里,海量的图片带来了存储问题、带宽问题、加载时延问题等等。对图片信息进行有效的压缩处理无疑会极大的降低存储成本、流量压力,并且还能显著提升页面加载速度。
jimmy老师
2023/03/06
7710
《数据万象带你玩转视图场景》第一期:avif图片压缩详解
深度学习为图片压缩算法赋能:节省55%带宽
随着互联网的发展,人们对高清图片的需求也在不断增加,在保证图像画质的情况下最大程度降低图像体积已成为行业发展趋势。
LiveVideoStack
2021/09/02
2.1K0
深度学习为图片压缩算法赋能:节省55%带宽
十亿元背后的价值
我是来自腾讯 SNG 社交网络运营部,简称 DSNO(屌丝 NO.1)团队的一枚大龄女屌丝。这个命题想跟大家分享在腾讯运营成本优化的实战经验,并探讨精细化成本管理的价值是什么。下面这张图上半部分大家很
织云平台团队
2018/05/22
1.2K0
Android 中图片压缩分析(上)
该文章讲述了在 Android 上使用自定义视图实现画布绘制,通过 Canvas 类和 Skia 库实现自定义视图的绘制,并总结了在 Android 实现自定义视图绘制的基本流程。
QQ音乐技术团队
2017/11/07
4.1K0
Android 中图片压缩分析(上)
超越 Google,腾讯推出自研图片编码格式 TPG
本文介绍了腾讯公司提交的一项关于图片编码技术的专利申请,该专利被命名为TPG(Tiny Portable Graphics),在数据上TPG图片格式产生的文件大小明显小于JPG/JPEG、PNG、GIF、WEBP等业界主流的图片格式,处于世界领先水平。TPG图片格式压缩率世界领先,在保证图片质量的前提下,能大幅度减少图片文件的大小,对于互联网行业来说,这意味着可以减少带宽和存储成本。腾讯的微创新不可小觑,QQ与MSN的对决就是典型案例。
云资讯小编
2017/05/08
3.8K0
超越 Google,腾讯推出自研图片编码格式 TPG
腾讯云开放自研TPG转码服务,大幅提升业界图片压缩率
腾讯云开发者社区
2017/12/19
2.8K0
腾讯云开放自研TPG转码服务,大幅提升业界图片压缩率
压缩算法简介
压缩算法是一种通过减少数据量来节省存储空间或传输数据的技术。压缩算法可以分为两种类型:有损压缩和无损压缩。 有损压缩算法会牺牲一定的数据精度或质量,在压缩数据的同时丢失一些信息。这种算法适用于音频、视频等多媒体数据,例如JPEG和MP3等格式。 无损压缩算法则能够完全还原原始数据,不会造成数据丢失。这种算法适用于需要准确还原数据的场景,如文档、代码等,例如ZIP和GZIP等格式。 常见的压缩算法包括哈夫曼编码、Lempel-Ziv算法、Run-Length Encoding(RLE)等。这些算法通过不同的方式对数据进行编码和解码,以实现数据压缩和解压缩的目的。
FPGA开源工作室
2024/06/21
4090
压缩算法简介
图片流量节省大杀器:基于 CDN 的 sharpP 自适应图片技术实践
本文介绍了如何利用谷歌开源图片压缩算法Guetzli在技术社区中实现图片压缩优化,以降低带宽成本和加速页面加载速度。同时,还介绍了如何将Guetzli算法与腾讯云CDN相结合,以支持全站HTTPS,提高用户访问体验,并总结了在实施过程中需要注意的关键问题和技术方案。
小时光
2016/10/19
23.1K10
图片流量节省大杀器:基于 CDN 的 sharpP 自适应图片技术实践
利用谷歌开源的图片算法 Guetzli 优化你的图片
利用谷歌开源的图片算法 Guetzli 优化你的图片,可以大大减小图片体积,从而减少图片加载时间,对于前端开发人员来说,在开发过程中经常会遇到图片加载问题,使用 Guetzli 可以有效解决该问题,本文介绍如何使用 Guetzli,以及其工作原理和优化图片的方法。
YingJoy_
2017/04/06
3K0
利用谷歌开源的图片算法 Guetzli 优化你的图片
谷歌开源JPEG压缩算法,比同类方法性能优越35%
【新智元导读】 谷歌最近开源了一个JPEG图像压缩编码器,比同类方法压缩要小35%。 在互联网上,速度意味着一切。一个通用的规则是:文件越小,载入的速度会越快。为了在这方面获得提升,谷歌最近开发了一个开源的JPEG 编码器,据称能在不损害图像质量的前提下有效地缩小文件大小,进而让网页的加载变得更快。 新的编码器名为Guetzli,也就是瑞士德语中的“缓存”(cookie)的意思。根据谷歌官方博客的说法,这一新的工具能够创造“高质量的JPEG图像,比当下可用的其他方案压缩的图像小35%”。使用Guetzli
新智元
2018/03/27
2.4K0
谷歌开源JPEG压缩算法,比同类方法性能优越35%
​PNG图片压缩对比分析
随着版本的迭代,业务的增加,QQ音乐apk的大小已经超过25M,其中res目录占用的大小超过5.5M,所以提出了对安装包进行瘦身的技术需求。
QQ音乐技术团队
2018/02/01
10.2K0
​PNG图片压缩对比分析
推荐阅读
相关推荐
谷歌开源图片压缩算法 Guetzli 实测体验报告
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档