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

news2024/11/24 17:31:47

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

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

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

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

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

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

窄带高清技术全景

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

如何定义视频质量?在视频编码的标准制定过程当中,客观质量(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场景也有相应的优化。

图片 2.png

下图是阿里云编码部分的模块划分图,中间内核部分用的是传统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直播场景。其中左边是蓝光流,右边是修复流,可以看到右边的修复流在强边缘的保留上效果更好,运动区域的模糊也会更少。

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

一是视频编码持续沉淀

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

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

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

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/84455.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

算法竞赛入门【码蹄集进阶塔335题】(MT2126-2150)

算法竞赛入门【码蹄集进阶塔335题】(MT2126-2150) 文章目录算法竞赛入门【码蹄集进阶塔335题】(MT2126-2150)前言为什么突然想学算法了?为什么选择码蹄集作为刷题软件?目录1. MT2126 奇偶序列2. MT2127 数组扦插3. MT2128 sort4. …

运放常见应用电路,有图有公式-运算放大器--点赞

声明: 本号对所有原创、转载文章的陈述与观点均保持中立,推送文章仅供读者学习和交流。文章、图片等版权归原作者享有,如有侵权,联系删除。 参考原文;《运放常见应用电路,有图有公式,建议收藏…

机器学习学习笔记(1)

字典特征提取 第一列表示北京 第二列表示上海 第三列表示深圳 第四列表示温度 前面三列 是的话用1 不是的话用0 什么时候用稀疏矩阵:比如上面这种情况当你的城市很多的情况下 那这样就会出现大量的0 而系数矩阵只存储不是0的位置 可以节省大量空间 为什么采用这种…

中国算力网络铺开,竟是运营商走在前列?

明敏 发自 凹非寺量子位 | 公众号 QbitAI中国算力格局,已悄然发生改变。今年,在一批云厂商的积极布局下,一座座算力中心建成落地,坐标却纷纷绕开东南沿海和一线城市。成都、张北、乌兰察布、重庆……这种趋势概括起来就一句话&…

spring framework IoC 容器接口体系结构概述

目录BeanFactory体系结构BeanFactory 主要接口,可分为三级:BeanFactory 主要实现类:BeanFactory 相关接口和实现类:主要知识点ApplicationContext体系结构ApplicationContext 主要接口,可分为三级:二级接口…

[kerberos] kerberos 认证详解

什么是kerberos认证? kerberos 认证是一种用于验证通信双方身份的网络协议。即帮助客户端和服务端证明 我是我自己 ,从而使得通信双方可以完全信任对方身份 kerberos 角色组成? 客户端(client):发送请求的…

macOS/Linux如何开机自动挂载/卸载磁盘

不管是Linux还是基于Unix的macOS,挂载磁盘可以使用mount命令进行磁盘的挂载。 挂载的一般状态: 查看磁盘状态挂载磁盘读写磁盘 最后是卸载磁盘。 macOS和Windows类似,移动存储一般会自动挂载;部分Linux发行版本,也…

数据结构与算法(Java版) | 关于以上几个经典算法面试题的一个小结

为了让大家明白算法的重要性,以上我就举了几个经典的算法面试题,我的目的也很简单,就是希望引起大家对算法的一个兴趣。 之所以在正式讲解数据结构与算法之前引出这几个经典的算法面试题,是因为我想告诉大家如下三点。 算法非常…

一文看懂MySQL的explian执行计划

表: 数据: 例如:explain select * from t where a 2; 各个字段解释: select_type 表示查询中每个 select 子句的类型(简单 OR 复杂) type 对表的访问方式,表示 MySQL 在表中找到所需行的方式…

[DT框架使用教程01]如何在DT框架中创建插件

[DT框架使用教程01]如何在DT框架中创建插件 DT框架代码地址: https://github.com/huifeng-kooboo/DT 由于国内访问速度的问题 也可以访问gitee的地址: https://gitee.com/huifeng_github/DT DT框架是基于QT框架衍生出的组件化框架。 对于想具体了解DT框架的同学&…

GO语言基础介绍

go语言的GMP模型(协程并发模型),P是go语言本身内部实现的调度器,它是基于协程队列的,协程在调度器面前就类似一个个独立的任务;P一般数量上是处理器内核数。Process本身有调度和创建M的能力,它会…

Web3中文|迪士尼前任CEO回归,能否带领迪士尼开辟web3之路?

据国外媒体报道,11 月 21 日,当地时间周日晚间,迪士尼宣布首席执行官(CEO)鲍勃 查佩克(Bob Chapek)离职,而其前任鲍勃 伊格尔(Bob Iger)将重返迪士尼CEO一职…

Navicat 16 和表空间 - Part 2

如何运作 "What is it? Its it" - Epic, Faith No More 欢迎回到这个关于在 Navicat 16 中使用表空间的系列。第 1 部分介绍了表空间的一些优点,包括可恢复性、轻易添加更多表、自动存储管理以及在隔离缓冲池中数据以提高性能或内存利用率。而第二部分…

Spring boot 3 GraalVM Native Image

Spring boot 3 && GraalVM Native Image 什么是 GraalVM? GraalVM is a high-performance JDK designed to accelerate the execution of applications written in Java and other JVM languages while also providing runtimes for JavaScript, Python, and a numb…

Seata模式-tcc

Seata模式目录概述需求:设计思路实现思路分析1.tcc模式2.一阶段 prepare 行为参考资料和推荐阅读Survive by day and develop by night. talk for import biz , show your perfect code,full busy,skip hardness,make a better result,wait for change,c…

qiankun 部署微前端-vue2 (二)

对于基本的部署问题,也可以去官网查找答案: 常见问题 - qiankun 这里主要记录在部署过程中遇到的问题 一、路由权限问题 无论主应用路由还是子应用中的路由,都会涉及权限问题,并不是每个路由路径对任何角色都是可见&#xff0…

Linux学习-83-MySQL安装过程

17.12 MySQL安装 作为LAMP架构的后端,是一款流行的开源关系数据库系统。在企业网站、业务系统等应用中,各种账户信息、产品信息,客户资料、业务数据等都可以存储到MySQL数据库,其他程序可以通过SQL语句来查询,更改这些…

〖产品思维训练白宝书 - 产品思维认知篇①〗- 产品思维能够为我们带来多大的价值?

大家好,我是 哈士奇 ,一位工作了十年的"技术混子", 致力于为开发者赋能的UP主, 目前正在运营着 TFS_CLUB社区。 💬 人生格言:优于别人,并不高贵,真正的高贵应该是优于过去的自己。💬 &#x1f4e…

算法竞赛入门【码蹄集进阶塔335题】(MT2026-2050)

算法竞赛入门【码蹄集进阶塔335题】(MT2026-2050) 文章目录算法竞赛入门【码蹄集进阶塔335题】(MT2026-2050)前言为什么突然想学算法了?为什么选择码蹄集作为刷题软件?目录1. MT2026 二维坐标点移动2. MT2027 一秒成零3. MT2028 小…

开关量转4G模块直接阿里云操作介绍

开关量转4G模块直接阿里云操作介绍首先,设备接入阿里云阿里云的连接 同上,配置阿里云平台参数前,和华为云一样,首先要在阿里云控制台创建产品,添加设备获取设备证书 上云流程:创建产品--添加设备--获取证书…