高效的H.265/HEVC快速帧内编码方法

2022-10-01 03:48何书前余绪杭邓正杰
计算机工程与设计 2022年9期
关键词:代价复杂度纹理

何书前,余绪杭,邓正杰

(1.海南师范大学 信息科学技术学院,海南 海口 571158;2.海南师范大学 信息网络与数据中心,海南 海口 571158)

0 引 言

相对于H.264/AVC,高效视频编码H.265/HEVC帧内编码采用了更加丰富的编码单元结构组合、变换单元大小组合和35种编码模式等高计算复杂度的编码工具,带来50%以上率失真性能的提升;其中,计算复杂度占比重最大的模块是率失真最优化的编码单元选择,该部分计算复杂度占比达到了50%以上[1,2]。2020年7月7日下一代视频编解码标准H.266/VVC(versatile video coding)制定完成,相比于H.265/HEVC,针对4K/8K视频应用率失真性能进一步提高一倍。当前,因视觉技术的成熟与发展,视觉传感器网络得到了广泛的应用,节点数大,因此,急需投入成本低,消耗功率小,能够达到实时高清视频通信的具有一定产业基础视觉终端。现阶段能够满足该需求的唯有H.265/HEVC能够符合。如何降低H.265/HEVC预测编码的计算复杂度,实现视觉传感器网络的实时视频通信,已成为当前视觉传感器网络大规模应用的研究热点问题。预测编码中帧内编码方式在计算复杂度和降低功耗方面都比帧间编码更有优势,本文针对以上应用场景提出一种高效的帧内编码方法。

1 相关研究现状

近年来,很多学者在H.265/HEVC和H.266/VVC帧内优化领域取得了大量成果[3-20],提出了多种快速帧内优化方法,在保持率失真性能较小损失的同时大大降低计算复杂度[3-6]。其中,Zhang Y等[3]基于空间相邻编码单元的纹理和编码单元深度递归预测当前编码单元的深度范围,利用统计模型来优化提前中止和提前跳过编码单元决策。Zhang T等[4]分别提取了深度差、Hadamard变换代价与率失真代价为特征,用于线性支持向量机执行CU拆分与中止决策。文献[5]在每个编码单元大小上设定提前终止条件,提出了一种基于分层方法的有效复杂度控制算法。Lim K等[6]利用图像复杂度和自适应深度预测来进行早期分割CU决策,并在提前中止CU决策过程中使用了贝叶斯决策规则和二次判别分析。诸志龙等[7]分析了相邻CU之间的统计相关性,融合已编码帧率失真代价,用于更新CU决策算法参数,控制误差传播。Kim TS等[8]提出了一种使用分层和跳过方法的HEVC帧内预测的自适应快速模式决策算法。Tariq J等[9]使用Hadamard计算代价,并结合时空相关统计特性来改善初始模式范围,也使用了最优停止理论预测提前中止决策。Podder PK等[10]通过引入人的视觉特征,有效地选择合适的块划分模式来降低HEVC编码器的时间复杂度。Correa G等[11]基于HEVC编码树块(coding tree block,CTB)的动态约束,以解决权衡率失真性能条件下的计算复杂度控制问题。文献[10-15]结合了编码单元和模式选择优化,进一步降低计算复杂度。最典型的方法是文献[15],结合了绝对变换差分低成本代价和Prewitt算子来估计率失真代价,减少预测帧内模式处理,大大降低了帧内模式选择的计算复杂度。

近几年,文献[15-20]中引入机器学习方法,融合了多种解决方案。Xu M等[16]通过卷积神经网络(convolutional neural networks,CNN)和长短期记忆(long short-term memory,LSTM)网络抽取特征向量,直接预测获得最佳的帧内与帧间编码单元分块结构,从而极大降低了预测编码非最优模式的率失真计算复杂度。Sun HM等[17]则使用多种神经网络模式来映射相邻参考信息与当前传统编码模式的关系,以获得更准确的最佳模式集合,降低了帧内编码的比特率。Wang Y等[18]提出了一种用于帧内角度预测的多尺度卷积神经网络,将角度预测信息与相邻数据输入神经网络,得到更准确的预测块,平均节省3.4%比特率。Dong X等[19]针对H.266/VVC帧内编码环境,利用机器学习分类器针对集中特殊模式选择进行提前判决,并结合提前终止算法,节省了计算复杂度。Zhang Q等[20]基于随机森林分类器(random forest classifier,RFC)模型的快速编码单元分割和基于纹理区域特征的快速帧内预测模式优化,节省了54.91%的编码时间,BDBR几乎不变。这类方法因其需要配置更多的计算和存储资源支持深度神经网络,无法在H.265/HEVC的视觉传感器网络推广。

无论是编码单元提前中止还是帧内模式判决,帧内预测编码还有进一步的优化提升空间。本文利用不同编码单元深度的非纹理(残差编码之外信息)代价和纹理(残差编码信息)率失真代价之间的关系,定义了一种编码单元内容复杂度的判定准则。利用内容复杂度与编码单元判决条件之间的关系,提出了一种简单高效的H.265/HEVC帧内编码单元提前中止阈值方法。同时,分析了最优编码单元结构深度的统计特性和空间相关性,预测当前编码单元最佳的初始编码深度,节省了非最佳深度范围的处理。

2 编码单元深度分布统计分析

H.265/HEVC帧内预测过程是将待编码帧分割为一序列相同大小的正方形编码单元,每个编码单元根据四叉树的结构进行迭代分割,分割大小从64×64到8×8的尺寸,每个编码单元再进行35种编码模式的代价计算,最终选择代价最小的编码分割组合作为最佳的预测编码结果。下面主要从非纹理信息与纹理代价的角度分析最佳编码单元选择结果。对编码内容来说,包含不同对象的区域,选择较大的编码单元意味着较高的预测残差,但编码结构、模式和变换等非纹理信息则较小;相反,选择较小的编码单元和复杂的编码分割结构将获得更高的预测残差精度,但要求传输更多的非纹理参数信息。

每个编码单元模式选择由量化参数和视频内容决定。一般来说,小的编码深度(大的编码单元尺寸)更适合于平滑区域,而大的编码深度(小的编码单元尺寸)对高纹理复杂内容更有效。为了验证以上的观察结果,本文选择3个纹理特征有明显差异的视频序列(BasketballDrill、Kimono和BQTerrace)进行验证实验测试,采用原始HM编码器的全搜索率失真最优化帧内编码模式选择,量化参数为22、27、32和37,编码帧数为50帧。结果见表1,最佳的编码单元深度“0”、“1”、“2”和“3”的平均占比分别为19.8%、33.7%、19.9%和26.6%。对不同纹理复杂度的视频序列各种比例也不一样,如高纹理复杂序列“BasketballDrill”中,“0”深度的比重较小,在0.6%~1.7%的范围;而与平滑内容的视频序列“Kimono”比较,深度“0”为最佳编码单元大小的比例较高(为25.6%~38.3%)。从以上数据可以得出:最佳编码单元大小与视频内容纹理复杂度有明显的对应关系,可通过当前编码单元内容复杂度预测最佳的编码单元大小。另外,大多数编码结果选择前3个低深度最佳编码单元,在高量化参数情况下更为明显。以视频序列“BQTerrace”为例,最佳深度“3”的比例变化较大,从量化参数22至37,占比差异达到了22%。根据H.265/HEVC编码器中编码单元编码顺序,即从“0”到“3”进行顺序迭代分割编码,最佳编码单元深度为非“3”时,省略后续的编码单元处理对最佳编码选择并无影响。同时,最佳编码单元深度为“2”或“3”时,可省略“0”和“1”深度的计算复杂度。因此,可选择最佳编码单元深度范围预测和提前中止方法,将在不改变编码性能的情况下节省大量的编码计算复杂度。

表1 最优编码单元深度分布结果/%

3 帧内预测编码单元提前判决方法

根据以上分析,本节将介绍基于非纹理信息与纹理代价关系提出的编码单元大小提前中止阈值算法,并融合空间率失真代价统计特性,提出初始编码单元深度预测算法,通过分级简化帧内预测的四叉树CU大小决策过程计算复杂度来加快编码过程。

3.1 提前中止阈值方法

在帧内预测编码中,编码单元从最大64×64尺寸,分割为最小8×8单元尺寸,每个编码单元固定用35种模式进行预测编码,在编码单元分割结构和模式表示所用的比特数与编码结构深度存在单调线性关系。本文通过分析纹理信号和非纹理信息之间的关系,推导出一种编码单元深度之间存在稳定关系的判别准则。根据纹理残差和非纹理信息的分类,每个最大的编码单元比特率由非纹理信息和纹理信息组成

R=Rnontexture+Rtexture

(1)

式中:Rnontexture为非纹理信息,包括了残差信息之外的头信息和量化参数等,Rtexture为纹理残差信号经过变换量化和熵编码得到的比特数。将式(1)代入率失真代价函数JRD=SSE(Qp)+λ×R, 其中SSE为失真平方和,率失真代价则分解为两个部分

(2)

式中:JRDtexture、JRDnontexture分别为纹理代价和非纹理代价,纹理代价包含了残差的失真和码率,非纹理代价包含了非纹理信息,信息与失真通过归一化参数λ统一尺度。非纹理信息由编码单元的分割结构决定,即编码单元深度越大,则编码分割结构越复杂,非纹理信息则越多;因此,当前深度的非纹理信息小于下一层深度的非纹理信息,则非纹理代价深度间关系如下

JRDnontexture,dpi

(3)

(4)

从非纹理代价与编码单元深度之间的关系,可以得到纹理代价与编码单元深度之间的关系

JRDtexture,dpi>JRDtexture,dpi+1

(5)

其中, JRDtexture,dpi=SSEdpi(Qp)+λRtexture,dpi(Qp), 由于JRDtexture,dpi

(6)

因此,存在一个确定最佳率失真代价的中止阈值TH,当TOC小于该阈值时,后续深度编码可被省略而不影响编码率失真性能。当然,也可以用计算复杂度换取一定的性能损失,为确定合适的TOC中止阈值,以最大限度降低CU编码的计算复杂度的同时保证编码性能不变。通过定义参数ω统一计算复杂度和编码效率的尺度,将该优化问题构建为非约束的最优化问题。

首先,定义最佳的中止代价

J(TH)=PA(TH)+ω×TR(TH)

(7)

其中,在中止阈值TH确定之后,TR为计算复杂度缩小率(%)

(8)

PA表示中止阈值结果的准确率

(9)

一个合适的TOC阈值TH选择,实现在较高的预测精度的情况下获得较高的计算复杂度降低率。该最佳的优化问题可表述为

(10)

ω为预测精度和计算复杂度之间的权衡因子。以上最优函数的求解过程,可得

(11)

从式(11),相对于TH、PA和TR之间存在耦合关系,即最佳中止阈值为PA增加率等于TR的降低率时的折中结果。在实际操作中,因PA和TR的取值范围均为[0,1],为简化权重因子的选择,将ω参数设置为1。式(11)则简化为

(12)

如图1所示,将TOC的分布取值与编码结果统计PA、TR值对应分析,为视频序列“Kimono”量化参数为27采集的数据,选择最低的TOC值0.5时,预测精度保证100%,计算复杂度降低了12%;在测试实验中保证预测精度80%以上,TOC的最佳中止阈值为0.6,以保证编码性能。

图1 PA和TR相对于TOC分布关系

3.2 初始最佳深度预测

帧内编码从64×64的编码单元大小执行率失真最优化编码,直至8×8的编码单元大小,选择最优的编码单元组合,存在最优深度范围 [dpimin_o,dpimax_o], 其中, dpimin_o为初始最小深度级,当深度级小于初始最小深度时,可省略当前深度级的代价计算。这里讨论如何确定dpimin_o。 因率失真最优化选择方法,该最优的深度范围与每一深度级率失真编码代价具有高相关性。首先得到64×64深度级的率失真编码代价RDdpi=0, 如RDdpi=0小于预选阈值TRD0=α×min(RDopt,i), 则判定该单元为平滑纹理单元,即最佳深度级为“0”;其中, RDopt,i为空间相邻(上、左、左上、右上)已编码单元的最佳率失真代价;如RDdpi=0大于预选阈值,最佳深度dpimin_o>0。 定义当前编码单元深度为“0”时,以该“0”级代价区域分为4个编码单元“0、1、2、3”,如图2所示,第j个区域(j为0,1,2,3)的纹理复杂度为第j个“0”深度代价与该区域最佳代价比值: Cj=RDdpi=0,j/RDopt,j, 其中,因RDdpi=0,j≥RDopt, 则Cj≥1。 当前编码单元最佳率失真代价预测值为相邻编码单元的最小代价

RDopt_pre=min{RDopt,i}

(13)

则可得当前单元的纹理复杂度预测值为: Cpre=RDdepth0,cur/RDopt_pre。 将相邻编码单元的纹理复杂度按升序排序: C1≤C2≤C3≤C4; 最优初始深度级可按照下式确定

(14)

dpimax_o的确定是上一节中介绍的提前中止阈值算法来确定。

图2 深度层级关系

3.3 本文算法整体流程

从第2节分析中可知,各类深度为最佳分割单元所占的比重较为均匀,可采用分类处理的办法节省计算复杂度。对于最佳深度为“0”或“1”的编码单元,可采用提前中止后续深度单元的计算;对于最佳深度为“2”和“3”的编码单元,可省略“0”和“1”深度单元的计算;从而达到降低计算复杂度的同时保持最佳编码性能不变。本文的编码单元优化算法具体流程如图3所示,具体步骤如下:首先对“0”级深度进行率失真最优化代价计算,利用时空相邻已编码单元相关性信息,可提前确定“0”级最优选择阈值,根据该阈值判定该“0”级代价是否符合最佳编码单元;其次,“0”级率失真编码代价与最优编码单元分割存在相关性,利用该关系可准确预测最佳深度范围的初始最小深度级,如当前编码深度小于该最小深度级,则省略该编码深度级的计算;最后,编码深度级均未满足以上2个条件,则进入当前深度级率失真最优化处理,可利用深度级之间的非纹理和纹理代价比值之间的固有线性关系,在保证达到最佳编码深度级的前提下,提前中止后续编码深度级单元的处理。

图3 整体算法流程

4 实验结果分析

本文中,选择H.265/HEVC参考软件平台HM15,实验中选择默认的帧内率失真最优化预测编码作为对比参考,并选择H.265/HEVC帧内编码单元快速选择算法[15]进行比较。实验中,编码环境选择为:全部为帧内编码,最大编码单元为64×64,最大的深度为4。采用JCT-VC推荐的5类视频序列:A(4K×4K),B(1080p),C(WVGA),D(QWVGA) 和E(720p)作为测试视频。选择4种量化参数22、27、32和37。编码结果的对比参数指标选择平均比特率变化BDBR(%),平均峰值信噪比BD-PSNR(dB)和默认配置HM15的编码时间缩小率

(15)

式中:TFast为快速算法得到的处理时间,THM为原始参考软件模型得到的处理时间。

表2为本文方法中初始编码单元深度预测和提前中止阈值方法的单独比较。一方面,初始编码单元深度预测实现了平均25%的编码时间降低率,BDBR提高了0.34%,几乎没有损失编码效率。对一些视频序列,最佳编码单元深度范围比较集中,排除较多的非最佳深度编码处理,带来较大计算量的下降,如”Johnny”、“BQTerrace”、“Cacus”、“Kimono”和“ParkScene”视频序列,降低计算量从17.7%至35.4%不等,最高1.14%的BD-Rate增加。以上数据表明,初始编码单元深度预测有效预测当前编码单元初始深度,准确判决最佳的“0”深度单元,在保证编码性能不变的同时,降低了计算复杂度。另一方面,提前中止阈值实现40.28%的编码时间降低率,BDBR增加了0.27%,损失相对初始编码单元深度预测较少的编码效率。对不同的视频内容,由于纹理内容的特性不同,得到的结果也不一样;如“PartyScene”、“Kimono”、“BasketballDrill”视频序列包含较低的纹理复杂度,最大复杂度降低率达到了54.1%;而“BQTerrace”则包含较高的纹理信息,只获得23.1%的计算复杂度减小率。对于大部分低纹理特性的视频序列“Traffic”,“BasketballDrill”,“Cactus”,“PartyScene”,“Kimono”,“FourPeople”和“Johnny”,本文快速方法均实现了高于42%的计算复杂度降低率。而对于高纹理内容的视频序列“BQTerrace”,“RaceHorse”和“BQMall”,计算复杂度节省率的范围在23.1%~37.5%之间。因此,从以上分析可以得到,本文方法对纹理内容复杂度的准确预测,并提前中止后续的计算代价,引起0.27%的性能损失。

表2 本文方法与HM的对比结果

表3为联合初始编码单元深度预测和提前中止阈值方法的判决算法得到的结果,并与近年同类典型的算法[15]进行了比较。无论是编码时间节省还是客观的BDBR、BD-PSNR性能,本文方法均优于文献[15]。在各类编码性能均优于文献[15],相比于文献[15]算法,编码时间多节省了2.06%,BDBR节省了0.84%比特率,BD-PSNR提高了0.011 dB。对于各类(A,B,C,D和E)视频测试序列,本文方法实现了34.5%~69.1%编码时间的优化,编码性能损失BDBR平均增加了0.49%,BD-PSNR损失了-0.039。而文献[15]降低了39.6%~49.7%的编码时间,增加了1.33%的BDBR,BD-PSNR损失了0.05 dB。在各类视频序列中,本文方法因引入了“0”深度最佳编码单元判决,相比于文献[15]方法,带来了较高的编码时间节省,最高达到了69.1%,而文献[15]方法最高只达到49.7%。综上所述,联合初始编码单元深度预测方法,本文方法实现较高计算复杂度降低的同时,达到了编码率失真性能几乎不变的目标。

表3 本文方法与文献[15]的对比结果

5 结束语

本文围绕视觉传感器网络对视觉节点对视频编码器低成本、低功耗和低延时的需求,针对帧内预测编码计算复杂度的优化问题,提出了一种高效的混合优化编码方案。其中,分析了H.265/HEVC标准编码单元深度的统计分布与视频编码内容之间的关系;采用省略非最优深度级的计算复杂度而不影响编码性能的策略,提出了一种高效的快速帧内编码算法。算法包括了两个重要的编码单元大小提前中止方法:①利用64×64编码单元的率失真代价,提前判决64×64是否为最佳深度,并精确预测初始最小深度级;②以非纹理复杂度和纹理率失真复杂度的比重为基本判决准则,推导出该准则与编码单元深度之间存在一种单调递减关系。利用判决准则与编码单元深度之间的关系,提出了编码单元最佳的提前中止阈值方法。实验结果显示,对于各类不同的视频内容序列,本文方法在保持编码性能不变的情况下,计算复杂度平均降低了48.74%。

猜你喜欢
代价复杂度纹理
基于BM3D的复杂纹理区域图像去噪
Kerr-AdS黑洞的复杂度
非线性电动力学黑洞的复杂度
使用纹理叠加添加艺术画特效
爱的代价
TEXTURE ON TEXTURE质地上的纹理
幸灾乐祸的代价
求图上广探树的时间复杂度
代价
消除凹凸纹理有妙招!