写点什么

基于人眼视觉模型,实现码率、质量、成本的最优均衡

  • 2022-12-12
    浙江
  • 本文字数:3969 字

    阅读完需:约 13 分钟

基于人眼视觉模型,实现码率、质量、成本的最优均衡

将编码器的优化目标从经典的保真度最高,调整为「主观体验最好」。


视觉是具有「掩蔽效应」的。


通俗地说,人眼作为图像信息的接收端,并不能精准捕捉到图像画面的所有变化。


例如,人眼对于画面中亮度的变化、静止的图像、画面整体结构比较敏感;而对于色度的变化、运动的图像以及画面内部细节相对不敏感。


面对人们追求更高清、极致的视频体验趋势,视频编解码技术是重中之重,其核心目标是:在可用的、有限的计算资源内,追求尽可能更高的视频「重建质量」和尽可能高的压缩比,即更低的带宽,以及更高清的画面体验。


「窄带高清」便可以利用人眼视觉的掩蔽效应,从人眼视觉模型出发,将编码器的优化目标从经典的“保真度最高”调整为“主观体验最好”,从而实现码率、质量、成本的最优均衡


窄带高清技术全景


窄带高清转码主要经过解码、重建提升视频质量、再编码三个过程,这便对应产生了三个问题:如何定义视频质量?如何实现质量提升?如何在编码环节巩固提升视频质量?


如何定义视频质量?在视频编码的标准制定过程当中,客观质量(PSNR,SSIM)的衡量占比相对较高。


但在实际应用中,对于视频质量的评价更偏向主观。因此,依靠主观体验建模,提取人眼感兴趣和视觉冗余的区域做处理。


在质量提升方面,使用一些低复杂度的深度学习的方式,通过画质增强把一些人眼更敏感的如:细节和强边缘等信息进行增强。


而如何巩固提升视频质量?则需要增强和编码进行协同配合,也就是编码要尽量保证增强之后的细节能够保留下来,在增强时也需要考虑编码的友好性。


下图是窄带高清全景图,在对视频的内容分析上分为 High level 和 Low level。High level 包括语义:场景,分割等;Low level 包括时空复杂度、JND。


编码和处理各自都有一定的内容分析能力,流程内部还会有编码和处理的反馈机制。



根据以上这些维度的分析,可以得到自适应参数的决策结果。根据此结果,窄带高清再去做相应的视频修复视频增强


质量、码率与成本的最优均衡


每一代编码标准的演进,都是在不断探索极限压缩率。


在极致的质量和码率之间寻找平衡,也就是不断的优化 Bit-rate,随之而来的是成本的不断增加。


在实际商用中对成本更加敏感,所以商用编码器的优化就是在质量、码率和计算复杂度(成本)之间不断地寻求最优平衡。


阿里云视频云的编解码主要基于自研的两大编码器 S264 和 S265,覆盖直播,点播,RTC 场景,从内核、前处理到码控各个部分,基于不同应用场景开发了 100 多个算法。总体性能相对于开源编码器,在全场景下有 20%-60%的压缩率优势,特别是在超高清、低延时场景下有主观的优势。


针对不同场景,在内核(运动搜索、运动补偿、SAO、WPP 等)和码控(AQ、CUTREE 等)上调整编码决策。而主观质量的优化,在上述模块中都有涉及,包括对主观更友好的模式决策和码率分配。


比如:在一段视频中某些片段质量会比较差,某些片段质量比较好,在传统的模式下很难做到主观上的质量均衡,对此窄带高清会有一些针对性的码控优化。


针对低时延直播场景,它的 Lookahead 长度不能像点播那么长,能够更好的分配码率,因此也需要一些优化方法,去保证在低延时场景下,客观质量尽量逼近点播场景。


下图是视频云 S264 和 265 的演化路径,到目前为止,S265 经过优化质量得到了提升,特别是从去年到今年,点播质量提升 13%,直播质量提升 15%,S264 质量提升 15%,RTC 场景也有相应的优化。



下图是阿里云编码部分的模块划分图,中间内核部分用的是传统 265 的编码流程。


图片部分来源于网络


Lookahead 部分包括内容检测,块级 QP 决策和帧类型决策。其中内容检测包括片源场景检测(动画/电影/直播)、片源质量检测(噪声、强边缘、弱边缘)等模块。块级 QP 决策除了 CUtree 和 AQ,还包括 JND 和 ROI。


编码目标部分可以认为是码控部分,阿里云的编码器除了目标码率之外还可以调整目标质量和目标复杂度。

目标质量可以是主观质量也可以是客观质量,比如以块效应来衡量,保证视频没有明显主观短板。


目标复杂度主要是针对机器负载,以恒定的机器负载去执行编码任务,最大限度的利用计算成本换取质量。


此外,视频云还针对不同架构做了相应的底层优化,针对倚天 ECS 进行 S264 和 S265 编码器的深度优化,打造 ARM 友好的视频编码器,优化主要基于以下三个方面:


01 计算函数汇编优化

计算密集型函数通过汇编实现单指令多数据操作优化,其中可伸缩向量指令集,mmla 类型高并发指令,塑造更高的汇编加速比,总体性能提升 40%;


02 计算函数并行优化

对有性能增益但原本串行处理数据的算法(如 SDH)进行并行化优化,并实现基于 ARM 平台的汇编版本代码,在压缩性能基本一致的情况下函数速度性能提升约 40%。


03 偏控制函数优化

将算法设计与优化相结合,提升效率,例如快速算法 checkSkip,Earlyskip 等,总体性能提升 20%。


主观优化


主观优化算法主要有两个核心点:一是码控部分,二是内核的 RDO 模块



码控部分,关注在块级 QP 分配对主观质量的影响。例如:AQ 是基于方差来判断视频在空域上的复杂情况,它的出发点同样也是用到一定的掩蔽效应。


但有时候基于方差的 AQ 与主观不一定匹配,比如同样两个方差一致的块,一个是内容离散,一个是有强边缘的,它们方差是一样的,但是对主观退化的容忍度是不一样的。


另一个主观优化的出发点是来自 CUTREE,CUTREE 的基本思想是基于信息传递,如果当前帧的某些内容会被后续参考,信息会向后传递拷贝,那么就会对这块内容分配更多的码率,达到更好的整体质量。但因为人眼具有运动掩蔽效应,所以很多时候它的信息传递原理与主观感受存在一定的 Gap。


另一个核心点在内核的 RDO 模块,通过提出 PRDOQ 技术,自适应的保留对主观更敏感的系数。以及自适应λ决策,在除 MSE 外,根据内容特征,例如:JND 进行自适应λ决策,相比常见 SSIM_RD,主观质量会更佳。


此外,依据率失真理论构建的编码器在块效应方面表现不佳,还专门优化了编码器的块效应。它的依据在于:基于客观的 RDOQ,编码部分模式会放大块效应。而人眼对于块效应的敏感程度更高。


实践发现虽然编码标准中存在 deblocking filter 这样的工具,去块的强度在这些场景下还是不够,它需要通过码率分配的方式进一步解决。具体的做法如下:首先识别出容易出现块效应的区域,针对平坦区域分配更多码率,同时优化 CUTREE 的信息传递理论。最后,除了在码率分配上进行优化,也可以从模式决策的倾向性方面入手,比如 skip,DC 模式更容易出现块效应。



上图是两张主观对比图,可以看到左边的对比图优化了边缘部分的块效应,而右边对比图是对细节模糊的部分做了重新的码率分配。


对于场景检测优化来说,在 lookahead 里的 SceneCut 模块通常用于判断当前是否存在场景切换,如果识别到场景切换,会在两个场景之间插入 I 帧。但在很多情况下,该模块存在判断不准确的问题。比如渐变区域的 I 帧到底是插在开始还是最后,我们对此进行了优化,从客观上有一点提升,从主观上也能看到在场景切换的区域,主观质量会更好一些。



视频内容分析


JND 模块

传统视频压缩方法主要基于信息理论,从预测结构的角度来减小时域冗余、空间冗余、统计冗余,但是视觉冗余挖掘不足。而 JND 模块是基于人眼的掩蔽效应,具体的做法是对每一帧输入的图像,经过空域和时域的 JND 特征计算,将图像上存在视觉冗余的部分传到编码器,再由基于 MOS 的自适应码控算法进行调节。其中空域和时域的 JND 特征既可以使用传统算子,也可以基于深度学习获取。在通用场景下,JND 算法可以在同等主观下节省超过 30%码率。



本页做了一个简单对比来证明 JND 的可行性。左边是原图,我们会在原图上增加一些噪声,一直加到人眼能看到差异为止。中间是 SOTA 结果,右边是我们的实验结果。可以看到我们的结果在 PSNR 上已经很低了,但是从主观上看的话,和原始图还比较接近。



基于 ROI 的处理+压缩

ROI 编码是针对人眼感兴趣的区域,将更多的码率分配到这些区域上,从而增强主观质量。ROI 编码的难点有以下几个方面:1. 计算成本。2. 如何确定 ROI 的区域。3. 对于 ROI 和非 ROI 的区域,如何分配更合适的码率,既能保证 ROI 区域的质量提升,又要保证非 ROI 的区域的主观不下降。4. 如何保证时域上的连续性,使得最后在连续观看时不会出现闪烁。



一个低成本的 ROI 方案是人脸区域的增强,人脸区域通常都是人眼感兴趣的区域,通过自适应决策的检测加上人脸跟踪算法,能实现相对低成本的 ROI 方案。


进一步的,ROI 还需要与编码器和 JND 算法结合,保证 ROI 区域的时域连续一致性,和保证 ROI 区域和非 ROI 区域主观均衡


细节增强


细节增强的核心在于细节增强算法本身的设计和与编码相结合的方式。其中细节增强算法需首先精细化的提取图像纹理,基于不同尺寸,不同特征提取纹理结构,才能使得增强效果更优。然后再根据纹理复杂度的区域进行自适应的增强。在与编码结合上,我们做了基于编码反馈的增强方式,对于点播场景,会使用 2pass 方式,对于直播场景,会将细节增强加入 lookahead 里面。


窄带高清 2.0 是复杂度更高、成本更高的修复增强效果。上图是我们在 BesTV 上的一个实例,用于 NBA 直播场景。其中左边是蓝光流,右边是修复流,可以看到右边的修复流在强边缘的保留上效果更好,运动区域的模糊也会更少。




窄带高清 2.0 是复杂度更高、成本更高的修复增强效果。上图是我们在 BesTV 上的一个实例,用于 NBA 直播场景。其中左边是蓝光流,右边是修复流,可以看到右边的修复流在强边缘的保留上效果更好,运动区域的模糊也会更少。



最后,关于窄带高清在未来的持续发展方向


一是视频编码持续沉淀

从传统编码的角度,无论是在模式决策,码控上都还有很多性能空间可以挖掘。在限定码率和复杂度的情况下不断地优化视频质量,是团队长期投入的方向。


二是视频编码与处理联合优化

让增强部分与编码能够更好地结合,对编码更友好,从人眼的角度去尽量保证在极低码率上不出块,尽量减少细节纹理的时域不连续。


三是视频处理的自适应能力和生成能力

编码的自适应能力包括了内容自适应,码率的自适应,还有负载的自适应,这都是我们未来会重点研究的方向。

发布于: 刚刚阅读数: 3
用户头像

公众号:视频云技术 2020-10-20 加入

「视频云技术」你最值得关注的音视频技术公众号,每周推送来自阿里云一线的实践技术文章,在这里与音视频领域一流工程师交流切磋。

评论

发布
暂无评论
基于人眼视觉模型,实现码率、质量、成本的最优均衡_云计算_阿里云视频云_InfoQ写作社区