veImageX演进之路:我用图像压缩算法为公司省了30%成本

本文作者张锡平,火山引擎视频云veImageX产品负责人。

前言

日前,第五届深度学习图像压缩挑战赛(以下将简称“ CLIC 大赛”)比赛结果公布,首次参赛的火山引擎视频云多媒体实验室夺得视频压缩赛道第一名。压缩技术对于图像、视频应用十分重要。在保证同样主观质量的前提下,如何将图像压缩到更小体积便于互联网信息传输,火山引擎视频云团队不断突破压缩技术“天花板”。

字节跳动在公司成立之初就建设了图像处理平台,起初主要服务于今日头条APP的图文资源。随着业务扩展,后逐步服务于抖音图集、短视频封面、图虫等几乎用户能看到的所有图片展示场景。火山引擎视频云团队将字节跳动图像处理的实践,整理为《veImageX演进之路》系列,将从产品应用、后端技术、前端技术、算法、客户端SDK 详细解读字节跳动背后的图像压缩技术。

veImageX是火山引擎基于字节跳动内部服务实践,推出的图像一站式解决方案 ,覆盖上传、存储、处理、分发、展示、质量监控全链路应用。

一张图片从上传到在用户端消费展示,主要包括带宽、存储、计算三大部分资源的消耗,成本大概占比7:2:1。其中带宽占比甚至可能比这更高,因此针对带宽的节省优化是重要一环。

veImageX架构简图

veImageX可以简化理解为包括三大组件:分发组件(CDN)、存储组件、基础媒体处理组件,组件有效组装到一起形成一整套解决方案。降带宽的本质是通过压缩降低传输的文件大小:图像在未压缩之前体积都很大,因此我们将目标设定为在保持用户主观体验不受损的前提下降低图像传输的体积,选择了基于HEIF自研的图像编解码算法来压缩体积。

为不降低应用性能,需要考虑耗时+带宽+画质等多个因子:对性能的影响主要是用户加载耗时(图片加载排队耗时、图片网络耗时、图片解码耗时),对成本影响主要是用户传输流量或者CDN分发带宽,对画质影响主要是画质清晰度和美学等指标;

基于以上思路,我们以下图为例,来看各环节我们是如何优化的:

双端图像压缩

体积对比

线上图像以各种形式存在:iOS 主要是jpeg格式、Android端以webp为主,以典型的jpeg、png、webp为例,实验室多次抽样验证发现,转换到我们自研的HEIF图片格式,体积可以节省30%以上。

图片对比:黄色部分为自研图片格式,蓝色部分为原图格式

画质对比评估

压缩体积是大目标,保证画质不受影响是第一要义;在画质评估阶段,我们选取了一些客观指标以及我们自己训练的无参考的清晰度评估方式(VQScore算法),对图像清晰度和美学进行整体评估:

q值是在自研算法下调教数值对清晰度的影响

q值是在自研算法下调教数值对美学的影响

通过如上图可以看出,新算法压缩并不会带来很大的画质波动,基本和压缩前对比差异不大。

解码性能对比

要保证用户侧的加载耗时,必须要考虑新的算法在客户端解码的性能,而「按照我们的设计预期用户的解码耗时的增加值」需要小于「由于文件体积的减少带来的耗时」才能保证影响加载耗时变大,我们调研开源的一些图片解码性能,发现业界其他解码器一张图像解码耗时在150MS~250MS 之间,开源实现暂时无法达到要求,于是我们做了一些自行调教:

实验室下:自研解码和开源解码性能对比,耗时越低越好。(单位:ms,其中绿色为自研解码)

经过如上调教,我们基本可以将图片的解码耗时控制在对齐webp的解码耗时时间。

实验设计

秉承科学严谨的原则,我们选择实验验证时,需要充分考虑对照组和实验组变量尽量减少:(veImageX图像压缩访问方式是极简的,只需要将原来的url之后追加一个图像目标模板即可如下表格中隐去了真实的业务信息)

数据论证

实验流量对比

经过线上实验,随机选取了一组流量进入实验过程,经过一段时间运行,我们发现 p-xx-a 的域名带宽和p-xx-b的域名带宽形成显著差异;我们从流量上计算(2.53PB-1.71PB)/2.53PB*100 = 32.4%,因此评判,在严格的和webp对比下,带来至少 30%的带宽节省验证符合预期。

当然,除了自行验证之外,我们也尝试过将线上其他格式(无需区分webp、jpg)与线上自研格式对比,节省比例更优。

验证数据参考

通用的“集智瘦身”

降成本是一个演进过程,在Android 和iOS 双端端原生解决了带宽问题后,在H5端运行,自研算法解码端面临在浏览器兼容性和性能支持的问题。因此我们需要考虑,无需集成客户端SDK的方式能够带来体积的节省,这里我们研发了“集智瘦身”的方式;这个设计初衷是为了解决业务方接入推广难、集成SDK覆盖难等难题,同时还要满足成本节省的目的。

集智瘦身的原理是通过深度学习的方式对传统webp、jpeg甚至png等格式进行瘦身压缩,而不需要集成客户端解码库。

相比于自研编码方式需要集成SDK之外,集智瘦身的接入简单很多,只需要将域名指向到veImageX服务就可以享受降本服务。

演进方式A:有些业务线在实际推进过程中虽然比较复杂,但仍然可以按照veImageX 定义的 “~tplv “模板的方式来应用,因为我们将此算法内置到模板中可以自由选择,不限定任意格式,同时在Web与Chrome场景下也可以选择AVIF+WebP+集智瘦身的方式来使用:

演进方式A流程

这种方式,不需要SDK的接入,只需要服务端改造veImageX的模板即可,改成指定的格式,配合自适应的模式来实现H5端的降本。

演进方式B:随着推动过程中,我们发现仍然有些什么都不能修改的业务,针对这样的业务,我们支持了只需要改动DNS就可以实现“集智瘦身”的方案。当然,图像经过处理之后文件的MD5值会发生变化,因此需要确认业务方没有对文件的MD5进行校验。

演进方式B流程

这种方案,对业务的侵入性几乎没有,会根据线上真实的图像做判断,合适的图像自动进行瘦身处理,通过动态监测线上图像输入前后的画质变化确保对用户体验没有影响。

总结

veImageX算法降本除了在如上两大场景应用之外,压缩方面也做了很多尝试,在对比传统WebP场景下可以节省超30%体积,启用自适应质量压缩可以带来至少7%的体积节省。

同时在WebP、jpeg等传统格式切换veIamgeX 调教后的自适应压缩质量可带来5%-10%的压缩,“集智瘦身”可以带来15%-20%的节省,在不区分图像格式混合切量的前提下可以带来约50%-80%的成本节省。

写在最后

针对不同的终端、不同的业务场景通过算法减少文件的体积,在节省服务商的传输带宽之外,也可以降低用户消费端流量的消耗,提升用户的加载速度。

图片加载是目前几乎所有的APP都具备的基础能力,目前火山引擎veImageX已经将上述方法形成端到端的解决方案对外输出,帮助每一个互联网企业用更低的成本达到更好的图片加载效果。除了商务降本之外,也可以用更“绿色”的算法降本,为行业降本增效提供了一种创新可能性。

点击veImageX-火山引擎,了解更多veImageX。

郑重声明:本文内容及图片均整理自互联网,不代表本站立场,版权归原作者所有,如有侵权请联系管理员(admin#wlmqw.com)删除。
(0)
用户投稿
上一篇 2022年9月21日
下一篇 2022年9月21日

相关推荐

  • 卷积图网络的分区池化在粒子物理学中的应用

    卷积图网络在粒子物理学中用于有效的事件建构和分类.然而,如果应用于传感器层面的数据,它们的性能会受到现代粒子探测器中使用的大量传感器的限制。.我们提出了一种池化方案,使用分区来创建…

    2022年8月18日
  • NASA韦伯太空望远镜揭示了银河系进化和黑洞的情况

    NASA的詹姆斯-韦伯太空望远镜(JWST)在一张巨大的新图像中揭示了被称为“斯蒂芬五重奏”的星系群的前所未有的细节。这个星系群的距离很近,给了科学家们一个观察星系合并和相互作用的…

    2022年8月23日
  • 电视盒子什么品牌好?老司机强推2022电视盒子排行榜

    电视盒子功能丰富,价位亲民,适用于市面上绝大部分的电视机,多数家庭都选择购买电视盒子搭配电视机使用。可问题也随之而来,那么多品牌产品,到底电视盒子什么品牌好呢?段臻从事数码行业已有…

    2022年7月23日
  • 遇强烈沙尘天气!祝融号火星车进入“冬眠”

    据国家航天局最新消息,天问一号任务团队通过环绕器获取的中分辨率图像,发现祝融号火星车巡视区经历了一次明显的沙尘暴过程。科学家对2022年3月16日和4月30日的祝融号火星车巡视区1…

    2022年8月14日
  • 续航破一千 麒麟电池吊打特斯拉?

    宁德时代近日发布了第三代CTP技术,内部称其为“麒麟电池”。据悉麒麟电池体积利用率高达72%,技术相比特斯拉电池在同尺寸的体积下至少有13%的续航提升,能量密度越高情况下,续航也大…

    2022年6月28日
  • 特斯拉机器人核心是机器视觉,这一企业已和特斯拉合作

    特斯拉机器人核心是机器视觉,矩子科技给特斯拉电控系统工厂做机器视觉设备 矩子科技给特斯拉电控系统工厂做机器视觉设备: 26. 机器视觉领域,目前国内和海外的企业更多在进行错 位竞争…

    2022年6月22日
  • “手机两轴OIS”因高科技“防抖”受到消费者喜爱,国内马达

    光学防抖OIS,全称OpticalImage Stabilization光学图像稳定,技术字面意思是稳定的光学图像。其工作原理是以陀螺仪检测和位移补偿为基础的。简而言之,就是镜头中…

    2022年6月18日
  • 那常见的分布式锁有哪些解决方案

    分布式锁(DistributedLocking)是一种常见的网络安全解决方案,它允许用户通过在多个服务器之间共享一个公共的“钥匙”来控制对服务器的访问。由于每个服务器都有自己的IP…

    2022年9月25日
  • 怎么在VS Code中配置C/C++开发环境?

    DevWeekly收集整理每周优质开发者内容,包括开源项目、工具资源、技术文章等方面,每周五首发于DevWeekly,欢迎大家Star并收藏! 原文链接:DevWeekly | 第…

    2022年7月25日
  • Python算法之哈夫曼编码

    问题:哈夫曼编码,英文名称Huffman Coding,有时也翻译为霍夫曼编码,在1952年提出的,是最好的编码方式。哈夫曼编码在电子通讯方面有着重要的应用,同时也广泛应用于数据压…

    2022年6月12日

联系我们

联系邮箱:admin#wlmqw.com
工作时间:周一至周五,10:30-18:30,节假日休息