【论文解读】Analysis and Optimization of x265 Encoder

时间: 2014 年

级别: IEEE

机构: 上海交通大学

结论:x265 作为 HEVC 开源的编码项目,旨在提供世界上最快、计算效率最高的HEVC编码器。通过深度研究 x265 的编码框架和计算复杂度,发现 RDO 是最耗时的过程,为此提供一种有效的预测方案,包括降低 RDO 次数、提前 skip 决策、快速帧内模式。在 x265 上HD 视频序列编码速度从 19.86fps 提升到37.76fps,47.44%的复杂度降低,仅1.37%的BDBR 编码性能损失。

介绍:x265 是比 HM 快1000 倍,但是在 ppreset = faster时仍然无法实时编码 1080p 视频序列。通过全面剖析和分析x265的计算复杂度,通过优化其编码流程和模式选择算法来提高x265的实时编码速度。提出了一种快速预测方案来减少RDO次数,这是最耗时的部分。此外,还提出了一些有效的快速算法,如提前skip检测和帧内预测等。

x265 编码性能分析: preset=faster 被选择在本篇论文中,x265 的版本是 0.8。配置是faster 的主要特征是:CU 尺寸 64x64~8x8 、最大 TU 递归深度是 1 、禁用矩形和非对称运动分区、启用帧级和 wpp。

通过和 HM11 比较,编码速度提升 1385 倍,PSNR 减少 1.053dB;与 x264 比较,PSNR 增加 0.729dB 。
在这里插入图片描述
通过分析工具进一步研究了编码模块的复杂度:
在这里插入图片描述CU 的模式决定的RD 代价计算如下:其中 Bmode 是给定模式的码率,SSEluma 和SSEchroma 是原始和重建 CU 的亮度、色度误差平方和 SSE,wchroma是色度分量的权重因子,λ是拉格朗日因子。
在这里插入图片描述
RD代价计算占据了 48% 的编码时间,运动估计和运动补偿占据了 21%,因此帧间的预测包括 RDO计算和运动估计,是最耗时的部分,超过了总编码耗时的 60%;
x265 的CU 模式决策的流程:如下,为了检测 skip 模式,MergeRDO在每个深度都进行,所以 MergeRDO 的计算量是高于其他部分的。当skip模式的RD代价小于merge模式的RD代价时,skip模式被选为最优模式。否则继续计算其他模式的RD成本,选择RD成本最小的模式作为该深度的最佳模式。然后去下一个深度,做同样的过程。最后选择所有深度下RD代价最小的模式作为最优模式。
因此,在每个深度上,通常需要进行merge、inter、intra-in-inter RDO 3次RDO处理,导致计算复杂度巨大。
因此,减少RDO次数是减少计算量的关键.
在这里插入图片描述

提出的优化算法

减少RDO次数量:减少非必要的 RDO计算是非常重要的,使用 SATD 来决定计算 RD 代价:
在这里插入图片描述

其中 satdmode 是原始 CU 和预测块之间的 SATD,λ是拉格朗日因子,Bsatd是比特。
该方案利用SATD代价选择当前深度中值最小的模式。由于skip模式对编码性能有重要影响,计算SATD代价值最小的模式的码率代价,并将其与skip模式的RD代价进行比较,从而选择当前深度下的最佳模式。
提出的算法只需要计算一次 RDO,相较于原始的计算三次 RDO。
基于相邻CU的skip模式检测: skip 模式是非常重要的模式,提供较好的编码性能,准确有效的skip 模式决定扮演关键角色。在原始 x265 中,为了检测跳跃模式,每次都要进行MergeRDO,带来了较大的计算量。为了避免对其他模式进行不必要的代价计算,提出了一种新的早期跳跃检测算法。
CU 的预测 RD 代价公式:
在这里插入图片描述

predrdcost表示CU 的预测 RD 代价,avgcostNeigh 表示相邻 LCU和当前 CU 相同尺寸大小的平均 RD 代价,包括左、上、左上、右上的 LCU,avgcostCU 表示目前 LCU所有已编码的 CU平均 RD 代价,α和ß是基于当前树块与其相邻树块之间的相关性的权重,分别设置为0.6 和 0.4。
由于 skip 的码率开销是 0,所以
在这里插入图片描述

所以 skip 模式被提前决定:
在这里插入图片描述

ρ表示自适应参数,设置为 0.9。
快速帧内预测:对于帧内预测,HEVC提供了35种预测模式来提高性能,需要递归搜索从64x64到4x4的5种尺寸的CUs来找到最优模式。这带来了巨大的计算复杂性。
根据不同大小的像素块的方差可以判断该区域是平滑的还是复杂的。平滑区域的CU方差较小,这些块倾向于划分成较大的预测块。当纹理丰富的CU方差较大时,倾向于将其分割为较小的预测块。因此,利用不同大小CU的方差来选择可能的深度层,从而大大降低了帧内预测的复杂度。
DC模式和平面模式每次都需要计算SATD代价,而其他33种角度预测模式由于相邻预测角之间SATD代价的连续性,可以采用粗、精结合的搜索策略。首先,计算每两个方向的SATD代价;然后重新排序结果并选择两个最小值。最后计算两个最小值相邻模式的SATD代价。粗搜索保证了帧内和帧间预测的计算复杂度显著降低,而细搜索能够保持良好的编码性能。
整体帧间预测框架:提出的算法归纳如下:

  1. 帧间 CU 开始模式决策
  2. 通过公式计算 skiprdcost、prerdcost,并且判断 skip模式,如果达到skip 条件,跳转到 6
  3. 分别计算 Merge、inter、intra-in-inter 的SATD 代价
  4. 选择最小的 SATD 作为候选模式,为这模式进行 RDO 过程,计算 RD 代价
  5. 比较 4 中的 RD代价和 skip 模式的 RD代价,然后转到 6
  6. 确定当前深度的最佳模式,如果最佳模式不是 skip 模式,转到下一个深度,继续相同的过程
    在这里插入图片描述
    结论:对比 x265 原始的 faster 配置条件下,47.44% 的编码复杂度降低,每部分的减少占比如下图
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Docker 部署 2FAuth 服务

拉取最新版本的 2FAuth 镜像: $ sudo docker pull 2fauth/2fauth:latest在本地预先创建好 2fauth 目录, 用于映射 2FAuth 容器内的 /2fauth 目录。 使用以下命令, 在 前台 运行 2FAuth 容器: $ sudo docker run -it --rm --name 2fauth -p 10085:8000/tcp -v /ho…

Navicat 技术指引 | 适用于 GaussDB 分布式的备份/还原功能

Navicat Premium(16.3.3 Windows 版或以上)正式支持 GaussDB 分布式数据库。GaussDB 分布式模式更适合对系统可用性和数据处理能力要求较高的场景。Navicat 工具不仅提供可视化数据查看和编辑功能,还提供强大的高阶功能(如模型、结…

华为配置Smart Link主备备份示例

定义 Smart Link,又叫做备份链路。一个Smart Link由两个接口组成,其中一个接口作为另一个的备份。Smart Link常用于双上行组网,提供可靠高效的备份和快速的切换机制。 Monitor Link是一种接口联动方案,它通过监控设备的上行接口…

ElementUI 时间选择器如何限定选择时间

DatePicker 日期选择器 | Element Plus 我们如何限定我们的选择时间呢,比如限定选择时间为今天之前,或者今天之后的时间? 我们可以使用官方提供的disabled-date来实现 我们通过这个属性 做一个回调函数,在里面比较我们想要限定的时…

Python接口自动化测试:断言封装详解

概要 在进行API接口测试时,断言起着至关重要的作用。断言是用于验证预期结果与实际结果是否一致的过程。在Python中,我们可以利用一些库来实现断言功能。 1. 安装必要的库 在Python中,我们主要会使用两个库:requests和jsonpath。…

Pytorch从零开始实战12

Pytorch从零开始实战——DenseNet算法实战 本系列来源于365天深度学习训练营 原作者K同学 文章目录 Pytorch从零开始实战——DenseNet算法实战环境准备数据集模型选择开始训练可视化总结 环境准备 本文基于Jupyter notebook,使用Python3.8,Pytorch2.…

cookie总结

cookie和session: 一、Cookie和Session二、使用Cookie保存用户上次的访问时间。三、Cookie常用方法总结乱码问题解决: 一、Cookie和Session 会话:用户从打开浏览器到关闭的整个过程就叫1次会话。 比如有的网站登录过一次,下次再进…

Elastcsearch:通过 Serverless 提供更多服务

作者:Ken Exner 人们使用 Elasticsearch 解决最大数据挑战的方式一直令我们感到惊讶。 从超过 40 亿次下载、70,000 次提交、1,800 名贡献者以及我们全球社区的反馈中可以清楚地看出这一点。 Elastic 在广泛的用例中发挥的作用促使我们简化复杂性,让搜索…

oracle 下载java之前版本

登录oracle官网:Oracle | Cloud Applications and Cloud Platform 点击resource 进入该页面 点击这个 出现之前版本

搭配君正主控芯片测评:创想三维物有所值,让你玩3D打印,而不是玩3D打印机

如果你在一年前开始接触3D打印,并且拥有一台入门级的3D打印机。那么,我相信很大一部分时间你是在给机器打“补丁”,让它真正能为你所用。而这台机器很可能是来自创想三维,不出意外就是其Ender系列的某一款。 然而,现在…

如何进行更好的面试回复之缓存函数在项目中的性能优化?

缓存函数是一种提高函数性能的技术,在函数被调用时,会将计算结果缓存起来,以便在后续的调用中直接返回缓存的结果,从而减少了重复计算的时间。 缓存函数的实现通常包括两个步骤: 判断缓存是否存在:在函数被…

Ubuntu22.04安装完成后便可直接使用键盘上的Print键进行截图

概要:Ubuntu22.04安装完成后,无需安装什么截图软件,可以直接使用键盘上的Print键进行截图。 1、按一下Print键 我的电脑上Print键是PrtSc,如下图所示 2、框选区域并截图 如下图中,可以框选(Selection),也…