本文由芒果TV音视频技术专家谭嵩在LiveVideoStackCon2020线上峰会的演讲内容整理而成,结合芒果TV的工程化研发实践经验,对基于主观感兴趣区域的视频编码技术进行了详细解析。
文 / 谭嵩
整理 / LiveVideoStack
大家好,本次分享我将结合芒果TV音视频技术研发团队的实践,对主观感兴趣区域的视频编码技术进行详细解析。内容包括以上四个部分,其中会重点介绍我们在主观感兴趣区域编码工程化中遇到的一些问题与思考。
1
5G背景下,视频运营平台的新挑战
随着5G时代的到来,用户对于视频画质体验的要求越来越高,如4K、8K、高帧率、HDR等。广电总局对电视播出的4K超高清视频规范的要求是视频码率大于100兆。互联网视频应用对此还没有规范性的标准,但为了达到合格的播放体验要求,视频码率也将呈现出成倍增长的趋势,这就导致视频运营平台短期内在CDN成本、用户播放卡顿两方面会面临更加严峻的挑战。
面对上述挑战,我们最容易想到的方法就是通过压缩效率更高的下一代视频编码标准,如AV1、VVC等,有效降低成本。但就目前情况来看,这些标准其实还不具备大规模商用的生态环境,真正能够支持硬件解码的设备其实非常的少。另一方面,内容感知编码以及拐点参数在国内外各大视频平台已经得到普遍的应用。在这种情况下,我们需要的是挖掘更多的工具或手段,极限压榨编码的码率。
2
人眼主观感兴趣关注的特点
2.1 人眼的视觉过程
人眼的视觉过程大致为视网膜成像,大脑接收信息并做出初步的分析,产生视觉注意力聚集,并且最后对重点区域做关注。例如,人在开车过程中,前方的道路和车辆就是主观关注和感兴趣区域,周边的区域就是非关注区域。
2.2 主观感兴趣区域数据的提取
主观感兴趣区域数据集一般是通过眼动仪获取。眼动仪是记录眼动行为的一套设备,它包括一幅特殊的眼镜,一个记录模块,一套控制软件,一套数据分析软件。其中控制软件是非常重要的一个组成部分,因为它要对观看的对象和眼部行为数据做精密的同步,数据分析软件就是后期对数据做清洗分析。
使用眼动仪获取ROI大数据要注意这样几点问题:首先使用眼动仪收集数据的成本比较高,且更为重要的是人力的投入,因为需要有一定基数的参与量,数据才具有客观意义;其次是数据的可靠性,一个经验并不丰富的测试人员,很可能在测试过程中会给自己某些心理暗示,导致记录的行为并非自然状态下的真实行为,也就是说最后取得的数据很可能是无效的;最后,第三点就是数据清洗。
3
主观感兴趣视频编码的工程应用
3.1 设计背景
基于感兴趣区域的视频编码是利用人眼主观存在感兴趣区域和非感兴趣区域的特点,我们对主观感兴趣区域和非感兴趣区域的码率分配做一定的修正,将更多的码率分配到主观感兴趣区域,从而在主观上提升视频质量。这是感兴趣区域视频编码的理论设计,在工程上官方版本的x264、x265编码器并没有这样的设计,即对于一个x264编码器或者x265编码器来说,视频的每个画面中的每个像素都是同等重要。因此我们需要对编码器做一个工程化的开发,来实现不同像素的权重差异化,目标是达到同等码率提升主观质量或者同等体验降低码率,降低运营成本。
3.2 ROI编码器实现架构设计
我们在编码的两个阶段做了ROI的处理,分别是视频的前处理以及视频编码的过程。
前处理阶段主要是做ROI区域的增强,即图像层面的增强,同时对非ROI区域图像层面,进行降噪、磨皮等处理。做过视频编码的朋友应该清楚,高频其实对编码是不太友好的,低频则对编码更加友好。非ROI区域进行降噪、磨皮之后,更多的就变成了相对友好的低频区域。那么在同等的PSNR或者客观指标下,码率会有明显的降低。
视频编码阶段,我们主要是通过AQ调整QP值,实现码率分配的修正。也就是说对不同的主观感兴趣区域和非感兴趣区域做不同的QP调整, QP越小,质量越好,码率也会越高;QP越大,宏块得到的码率越小,画质越差。通过这样一个调整,实现ROI的权重调整。
3.3 ROI区域的定义
ROI编码并不是一个很新的概念,之前就有中心区域ROI、人脸ROI、字幕ROI等。
中心区域ROI是基于经验的判断,在正常视频的拍摄手法上通常会将最重要的内容放在画面最中间。人脸ROI其实也是基于这样的经验判断,一般来讲人物往往是视频内容中的主角。
字幕ROI是非常重要的一个方面,我们做过一个主观的调研:完全同样的视频画面,分别提供不同清晰度的字幕进行主观盲测。最终结果是:认为“字幕清晰”的视频是“画质更好”视频的,占比明显更高。
基于深度学习的ROI区域识别是当前更有效的手段。
3.4 深度学习的ROI的识别技术
基于深度学习的ROI的识别在技术上分为两类,一个是基于感兴趣区域的热度图检测,另外一个是显著对象分割。通过实践理解,在应用场景上我们认为这两者是有一定差异性的。我们认为感兴趣区域的热度图更适合长视频剧集类型的节目,显著对象分割则更适合真人自拍小视频等场景。
3.4.1 显著对象分割
显著对象分割为什么会更适合真人直播或者真人自拍小视频?
真人直播或者真人自拍小视频通常来说有这两个特点:第一是前景在画面中面积的占比一般较大;第二是前景和背景相关性比较弱,且前景的内容重要性具有绝对的地位。以此可以也必须对背景做比较多的图像细节丢失和编码压缩,来提升前景显著区域的画面质量。
3.4.2 感兴趣区域热度检测
剧集类长视频节目的特点是画面的整体相关性更强、画面存在多点位ROI区域,因此不能类似于真人小视频一样过度的衰减非ROI区域来补偿ROI区域,需要用较多的非ROI区域来补偿较小的ROI区域,这样非ROI区域的衰减在主观上也不明显。感兴趣热度图符合这个需求特点。
3.5 第一版ROI编码工程化实现过程
这是我们在ROI编码工程化过程中实现的第一个版本。首先实现的是对一个ROI元素的处理。我们从原图分析得到ROI的热度图,然后对热度图做二值化处理并且膨胀后腐蚀到可控的阈值范围内的ROI面积占比。最后我们做了一个宏块级的数据结构化,因为最终要映射到编码宏块上去,这里有一个阈值参数,是我们要控制好ROI区域和非ROI区域的面积占比。面积太小,ROI增强的效果不太明显,但是面积过大,由于ROI区域画质提升是以牺牲非ROI区域的细节或质量实现的,这会导致非ROI区域的质量下降非常明显、如果进一步下降达到主观产生厌恶感的阈值,会吸引注意力到这些糟糕的、突兀的画面上,ROI编码的目的就没有达到。
在工程化实现上,我们对x264、265编码器做了一个ROI的编码实现。编码器读取当前帧的ROI分析结果元数据,在视频编码器中通过AQ实现对QP的修正,ROI区域的QP会降低,编码质量会提升,同时码率也会消耗的更多。整帧码率控制依然由x264和x265原生的码率控制算法负责。
3.6 二值ROI的失败case
做完第一个版本之后,我们发现,由于这是一个二值ROI,ROI区域和非ROI区域是0和1的区别,导致ROI和非ROI区域的非平滑过渡在衔接处会有一个明显的画质对比跳变(QP值跳变)。第二个问题是我们对非ROI区域的QP调整是交回给x264和x265编码器原生的码率控制,由于我们对ROI区域的QP调整破坏了原生码率控制算法的数学关系,所以部分场景出现非ROI区域的渣感现象。这是两个失败的case。
3.7 灰阶ROI迭代版本
因为上述两个失败的case,我们进一步提出了一个迭代版本灰阶ROI。灰阶ROI实现的是ROI和非ROI区域之间一个ROI强度的灰度过渡,所以QP会有一个平滑的调整,避免两个区域边缘质量差距过大,形成一个突兀的画质对比。
3.7.1 灰阶ROI的计算过程
灰阶ROI码率控制的计算过程:我们的计算目标是得到一个QP的修正值QP’,Sij是我们对应宏块的一个灰阶的ROI值,也就是我们刚才这里ROI的一个灰度的数值,范围是0到255。p%其实是ROI区域的面积占比,b%是ROI区域的码率的占比,也就是说我们在p%面积占比的ROI区域上给予了b%的码率。目前我们采用的数值p是20%,b是30%,会对20%的面积修正给予30%的码率。同时对非ROI区域的QP做了反向的主动修正。
通过这个迭代版本实现了ROI和非ROI区域画质的平滑过渡,同时非ROI区域渣感明显降低。
3.8 效果评估
这段视频是最终送给编码器指导ROI编码的ROI灰阶图数据的真实示例。为了更加清晰和直观,这个示例中非ROI区域我们做了一个灰度视频显示,ROI区域还是原来的彩色显示。
上图是ROI编码和非ROI编码的实际效果对比图。其中ROI编码的版本降低10%码率,在这个条件下,主观质量依然高于非ROI编码版本。
4
问题和挑战
我们在最后继续向行业抛出这个不算很新的话题 — ROI编码视频质量的机器评价,目前我们主要还是通过人工的方式进行一些主观评价。在批量化自动生产条件下,如何做好ROI编码视频质量的机器评价,是非常具有挑战和价值的一项工作。