Li ,火山引擎视频云核心图像算法引擎
张,火山引擎视频云产品负责人
在其建立开始时构建了一个图像处理平台,最初主要为应用程序的图形和文本资源服务。随着业务的扩展,我们将逐渐开始为用户可以看到的几乎所有图像显示场景提供服务,例如图片专辑,简短的视频封面和。火山引擎视频云团队将的图像处理实践汇编成“进化之路”系列,并将在产品应用程序,后端技术,前端技术,算法和客户端SDK的详细范围内详细解释背后的图像技术。
这是由火山引擎基于的内部服务实践推出的一站式图像解决方案,涵盖了上传,存储,处理,分发,显示和质量监视的全链路应用。
前言
压缩技术对于图像和视频应用非常重要。在确保具有相同主观质量的前提下,如何将图像压缩到较小的体积并促进互联网信息传输,火山引擎视频云团队正在不断突破压缩技术的“天花板”。
目前,上的任何应用程序或网站页面都无法在没有加载图像的情况下执行。 HEIF是图像处理领域中有效的编码和压缩图像格式。在节省成本和图像质量平衡方面,用户一直受到用户的青睐。图像格式已在各种情况下广泛使用,从最早的JPEG,无损压缩PNG,具有较高压缩效率的WebP到追求更高压缩效率的HEIF和AVIF。
与其他几种图像格式相比,HEIF格式提供了更多的灵活性,并可以支持更多的图像特征,例如透明的通道,深度图,缩略图和其他辅助图像信息,还可以执行图像编辑,裁剪,旋转,旋转和图形叠加,而无需破坏原始图像。此外,HEIF容器支持封装多个图像序列动画,结合不同的编码和压缩方法可以达到高压缩效率。高压率可以有效地节省传输成本,提高加速速度并改善用户体验。
heif图片
HEIF是由公共国际标准ISO定义的图像文件格式。这是一个封装容器。除了必要的文件信息外,还可以将各种图像编辑信息添加到文件中。由于它独立于编码方法,因此编码器的选择更加灵活,并且可以根据实际需求进行调整。 的自发BVC系列编码器在压缩效率和编码速度方面具有明显的优势。目前,它涵盖了主要的业务方案,并获得了良好的业务利益。
HEIF包装格式
HEIF图片格式如下。它由几个盒子组成。文件属性和数据存储在框结构中。对于静态图,必须包括的主框类型是FTYP,META和MDAT:
HEIF包装格式
基于HEIF特征和算法优化
HEIF具有灵活,高效的包装和编码方法,使功能支持更加方便。目前,字节HEIF支持的功能是:
heif缩略图的应用
缩略图以缩略图说明了HEIF特征在业务场景中的应用。 Heif 是一个场景,就像原始图像一样较小的场景,用作快速预览和其他场景。目前,字节已使用Heif缩略图来实现渐进图像加载的功能。此功能主要反映在用户的耗时优化中,从而改善了用户体验。例如:当用户网络处于较差状态时,加载缩略图后,时间显示缩略图,然后在加载图片后显示原始图像。预览的渐进效果如下。用户首先看到图片整体轮廓的模糊效果,直到图片满载为止。
HEIF块编码
HEIF文件可以封装图像序列。考虑到大型图像的并行处理,记忆消耗,裁剪和其他性能,使用瓷砖编码可以有效地优化上述问题。此外,业务中还有一些超长的图像,决议超过了手机制造商的支持范围,从而导致系统接口解码等异常显示。您可以使用瓷砖编码来解决此类问题。
瓷砖编码是根据一定尺寸将较大的原始图像分为几个小块,独立编码小块,然后将编码的数据封装在某些规则中。在解码端进行解码后,根据原始规则将剪接成大图像,然后将冗余数据裁剪为原始图像分辨率以进行显示。
瓷砖图
自适应调整瓷砖尺寸
瓷砖编码解决方案解决了上述问题,并带来了文件大小的增加,主要是因为:
测试后,与正常编码的文件大小相比,固定的瓷砖大小编码平均增加了22.40%,并且文件大小的增加主要是由于引入了冗余数据编码。
为了优化体积的这一部分,设计了自适应瓷砖大小方案,并且根据原始图像分辨率对瓷砖大小进行自适应分配。在自适应溶液测试之后,与正常编码相比,文件大小的体积增加了1.91%,避免了冗余和浪费。
Heif图片ROI编码
在实际图像应用中,人眼对图片的每个区域都有不同的关注。例如,面部,文字,图像中心区域等通常是人眼注意的重点,而天空,草原和图像背景区域的图像质量要求是第二。鉴于人眼的视觉特征,HEIF图像在基于检测区域增加了显着性检测和编码压缩,并结合了显着性检测以提高感兴趣领域的图像质量,以确保代码速率稳定并且用户的感官体验得到改善。
ROI(OF)编码是一种基于显着性区域优化的编码压缩方法,即图像中识别的感兴趣区域和非利益区域在编码算法上优化,提高ROI区域的质量,减少量化参数的程度,并增加位分配的数量;对于非ROI区域,在确保主观图像质量的同时减少了位分配的数量。
当图像需要ROI编码时,它首先通过ROI检测算法来识别图片中的显着性区域(通常不超过N区域),并根据某些规则将ROI坐标区域封装并将其传递给编码器。编码器根据该区域重新分配每个区域的位数,并根据确保主观的图像质量提高ROI区域的图像质量。该算法最终由专家评估和测试,并盲目地测试,图像质量满足了需求,并应用于实际业务。
ROI编码零件流程图
HEIF编码压缩技术
为了满足低存储成本,图像处理当前符合多种分辨率,样式等的适应问题。通常,需要实时或准真实的时间处理。 HEIF格式使用字节的自发BVC系列编码器,该编码器具有较高的初始CPU计算解决方案,同时,在体验级别上,图像压缩和编码相对较高。
为了减少链接时间,火山发动机已经启动了FPGA异质计划,以节省计算成本。结合了FPGA和CPU编码的优点,FPGA+CPU解决方案在HEIF编码解决方案上设计了,该解决方案提供了高速压缩编码体验。由于FPGA的硬件限制,CPU解决方案需要与其他受限使用情况相兼容并适应。 CPU提供了有效的编码压缩体验,并可以根据业务需求选择不同的图片质量水平并选择适当的编码参数。编码器正在不断升级和优化,希望提供更好的压缩性能和编码速度。
FPGA和CPU编码呼叫过程
FPGA- HEIF编码方案
在提高压缩率的同时,HEIF编码还需要更多的CPU计算资源,因为它的复杂性很高。为了降低HEIF格式的编码计算成本,采用FPGA异质体系结构,总成本约为CPU解决方案的10%。
HEIF压缩性能的比较
HEIF与WebP
选择一定数量的图片以测试WebP和HEIF图片。在相同的图像质量下,与WebP代码速率相比,HEIF动态和静态图片可节省约50%。 HEIF可以节省更多的文件大小,同时对齐主观和客观的图像质量。总体比较效果如下:
在具有简单图片内容和更平坦区域的场景中,WebP具有更多的块效果,丝带和其他扭曲,Heif图片可以保持更好的图像质量,减少压缩失真和更高的清晰度。
WebP 12K与HEIF 7K
对于复杂的图像,HEIF图像的纹理细节保留了更多,边缘清晰,没有明显的毛刺。原始图像具有良好的颜色修复,没有明显的颜色转移。
WebP 60k与HEIF 39K
SRC与WebP 67K与HEIF 38K
Heif vs. Avif
测试和比较后,获得以下数据。当客观指标相同或略高时,与AVIF快速齿轮相比,HEIF节省了约10%的体积。
Heif自适应
为了满足用户的图像清晰度需求,图像的大小也增加了,所消耗的带宽越来越大。如何考虑有限的网络带宽下的图像质量和大小对于改善用户的图像质量体验尤为重要。根据上述考虑,团队设计了图像自适应算法策略,节省了带宽成本,同时保持主观图像质量不变。
算法简介
互联网上图片的内容丰富而多样,固定的编码参数无法灵活地为不同类型的内容提供合适的图像质量体验。自适应算法根据图片内容的统计特征为不同类型的图片制定参数自适应调整策略。
首先,选择适当数量的测试图片数据集,分析图片的基本信息,文件格式,宽度和高度,文件大小,参数/未参数质量,指示器用户模板配置等,计算在线图片的当前图片质量,并为后续调整策略提供适当的基准作为参考;其次,由于有多种类型的在线图片格式,因此自适应算法选择一种统一的预编码方法,获取预编码功能作为模型输入,并从统计上对图像编码难度,分辨率等的图片进行分类,以获取图片的分类信息;最后,为每个分类图片执行RD曲线预测,并根据当前的用户配置期望确定质量阈值,该预期根据预编码阶段的特征自适应调整。
在调整过程中,质量较低的图片需要提高质量参数。当质量符合标准并高于预期的标准时,将根据不变的主观图像质量减小文件大小。从效果的角度来看,调整了自适应算法后,图像质量得到了提高,质量相对稳定,并且降低了严重失真的图片。尽管用户的图像质量体验得到了改善,但可以节省带宽成本。
图片分类和质量分布
保存比特率
随机选择5,000张图片以测试自适应比特率节省。与固定编码参数的图像大小相比,自适应节省了大约10%的体积。当然,在设计火山引擎时,也可以使用其他格式,例如JPEG和WebP。
主观效果
HEIF 234K与HEIF 174K
HEIF 30K与HEIF 22K
HEIF 42K与HEIF 29K
heif解码
HEIF格式由于其有效的压缩效率,高质量的图像质量体验以及丰富而灵活的图像内容而引起了很多关注。之所以没有被普及的原因主要是由于终端的兼容性。近年来,越来越多的设备制造商支持 Heif解码,从而促进了HEIF生态系统的改进,但是仍然有许多场景不支持HEIF解码和渲染。
因此,火山引擎使用自己的BVC系列解码器设计了客户的HEIF解码解决方案,该解码器比开源解决方案具有更高的解码速度优化程度,从而解决了每个最终系统的兼容性问题。图片SDK基于模型调整系统和自我模式,以确保模型的性能,同时改善用户的平滑观看体验。此外,图片SDK还提供了报告图像访问指标的能力,该指标可以轻松查看控制台上的相关图像业务指标,并为业务实验,问题定位等提供方便的手段。
概括
HEIF图片叠加在有效的编码和压缩算法上,以较低的成本获得高质量的图像质量。火山引擎希望通过持续探索和对算法策略的持续优化为用户带来更令人惊讶的图像质量体验。同时,火山引擎还希望通过图像压缩技术,改善用户加载体验,加速互联网传输速度并共同为整个社会产生价值,从而减少企业用户的互联网传输带宽。