基于人眼视觉模型,实现码率、质量、成本的最优均衡
将编码器的优化目标从经典的保真度最高,调整为「主观体验最好」。
视觉是具有 「掩蔽效应」 的。
通俗地说,人眼作为图像信息的接收端,并不能精准捕捉到图像画面的所有变化。
例如,人眼对于画面中亮度的变化、静止的图像、画面整体结构比较敏感;而对于色度的变化、运动的图像以及画面内部细节相对不敏感。
面对人们追求更高清、极致的视频体验趋势,视频编解码技术是重中之重,其核心目标是:在可用的、有限的计算资源内,追求尽可能更高的视频「重建质量」和尽可能高的压缩比,即更低的带宽,以及更高清的画面体验。
「窄带高清」便可以利用人眼视觉的掩蔽效应,从人眼视觉模型出发,将编码器的优化目标从经典的“保真度最高”调整为“主观体验最好”,从而实现码率、质量、成本的最优均衡。
窄带高清技术全景
窄带高清转码主要经过解码、重建提升视频质量、再编码三个过程,这便对应产生了三个问题:如何定义视频质量?如何实现质量提升?如何在编码环节巩固提升视频质量?
如何定义视频质量?在视频编码的标准制定过程当中,客观质量(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直播场景。其中左边是蓝光流,右边是修复流,可以看到右边的修复流在强边缘的保留上效果更好,运动区域的模糊也会更少。
最后,关于窄带高清在未来的持续发展方向。
一是视频编码持续沉淀
从传统编码的角度,无论是在模式决策,码控上都还有很多性能空间可以挖掘。在限定码率和复杂度的情况下不断地优化视频质量,是团队长期投入的方向。
二是视频编码与处理联合优化
让增强部分与编码能够更好地结合,对编码更友好,从人眼的角度去尽量保证在极低码率上不出块,尽量减少细节纹理的时域不连续。
三是视频处理的自适应能力和生成能力
编码的自适应能力包括了内容自适应,码率的自适应,还有负载的自适应,这都是我们未来会重点研究的方向。

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
模型精度再被提升,统一跨任务小样本学习算法 UPT 给出解法!
近日,阿里云机器学习平台PAI与华东师范大学高明教授团队、达摩院机器智能技术NLP团队合作在自然语言处理顶级会议EMNLP2022上发表统一多NLP任务的预训练增强小样本学习算法UPT(Unified Prompt Tuning)。这是一种面向多种NLP任务的小样本学习算法,致力于利用多任务学习和预训练增强技术,在仅需要标注极少训练数据的情况下,提升大规模预训练语言模型在多种场景下的模型精度。 论文: Jianing Wang, Chengyu Wang, Fuli Luo, Chuanqi Tan, Minghui Qiu, Fei Yang, Qiuhui Shi, Songfang Huang, Ming Gao. Towards Unified Prompt Tuning for Few-shot Text Classification. EMNLP (Findings) 2022 背景 随着预训练语言模型的规模逐步地扩大,千亿、万亿甚至更大规模的预训练语言模型的分布式训练和优化工作不断涌现。预训练语言模型规模的扩大,带来这一类模型在自然语言理解等相关任务效果的不断提升。然而,...
- 下一篇
深入浅出 Sanitizer Interceptor 机制
欢迎关注【字节跳动 SYS Tech】。字节跳动 SYS Tech 聚焦系统技术领域,与大家分享前沿技术动态、技术创新与实践、行业技术热点分析等内容。 背景 对于 C++ 开发者来说,经常会碰到缓冲区溢出/悬垂指针等内存错误、数据竞争/死锁等多线程错误,这些错误往往会导致程序出现非预期的行为,从而影响程序的安全性和稳定性。如何快速定位上述问题,一直是大家非常头疼的问题。由 Google 开源的 sanitizer 动态分析工具,可以高效地帮助 C/C++ 开发者定位问题,提升研发效率。目前 sanitizer 已经广泛应用于字节跳动的搜索、广告、推荐等核心服务端业务的 crash/coredump 分析中,解决了数百个因内存错误和多线程数据竞争导致的疑难问题。本文通过介绍 sanitizer interceptor 机制的原理,来帮助大家更好地理解并使用 sanitizer。 Sanitizer 简介 Sanitizer 是由 Google 开源的一系列动态代码分析工具,从 Clang 3.1 和 GCC 4.8 开始被集成在 Clang 和 GCC 中,能够帮助程序员快速准确地在运行...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- CentOS7,8上快速安装Gitea,搭建Git服务器
- CentOS关闭SELinux安全模块
- CentOS8编译安装MySQL8.0.19
- CentOS8安装Docker,最新的服务器搭配容器使用
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- Docker安装Oracle12C,快速搭建Oracle学习环境
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- Red5直播服务器,属于Java语言的直播服务器
- Windows10,CentOS7,CentOS8安装Nodejs环境