低复杂度HEVC帧内编码快速划分算法
2021-07-08周帅燃
周帅燃,杨 静
(上海海事大学 信息工程学院,上海 201306)
1 引 言
与之前的H.264/高级视频编码(AVC)来说,高效视频编码(HEVC)标准[1]在相似的视频质量下节省了大约50%的比特率.这主要是因为在HEVC当中引用了新的四叉树划分对图像结构进行划分成树单元(Coding Tree Unit,CTU),其中最大编码单元(Largest Coding Unit,LCU)尺寸为64×64,最小编码单元(Shortest Coding Unit,SCU)尺寸为8×8.虽然这样使编码划分更加灵活,预测模式更加准确,但是同样也极大增加了编码复杂度,Correa G等人[2]实验得到HEVC的编码时间是AVC编码的253%,这显然不可能顺利应用在现实生活中,因此,有必要将HEVC的编码复杂度降低到可以接受的范围,并且其编码性能的损失可以忽略不计.
近些年来,在降低HEVC编码复杂度的研究中已经看到了巨大的进步,出现了各种有效的方法.尽管这些方法大都是运用在帧间预测模式上,但是也有必要降低HEVC帧内编码复杂度,毋笑蓉等人[3]提出了一种基于机器学习的随机森林分类算法,有效提高了帧内编码划分速度.朱威等人[4]提出一种结合纹理信息和方向信息特征,分析编码单元的纹理划分特征与最佳编码单元之间的相关性,来判断是否提前终止划分.易清明等人[5]提取编码单元纹理特征并线下训练支持向量机模型,从而对编码深度进行快速决策,并根据CU纹理复杂度,对纹理简单的CU提前终止划分,对纹理复杂的CU直接进行划分[6].Yao-Dong T等人[7]通过对当前CU以及进一步划分的四个子CU的率失真代价(RDO)进行对比,来决定当前CU是否划分.黄胜等人[8]采用差分矩阵来表示纹理的复杂度,采用子块相似度来对CU是否划分进行判决.Song Y等人[9]设计了一种离散全变差的像素插值求解计算,利用像素之间的差值得到的全变差与设定好的阈值相比较,来确定编码单元是否划分.
上述算法中纹理复杂度虽然被大量使用,但根据不同使用场景,纹理特征仍然有被挖掘利用的潜能.在编码率失真性能不受到影响的前提下降低编码复杂度,本文结合传统方法和深度学习提出了一种应用在编码单元决策的算法.针对64×64编码单元,通过综合分析纹理复杂度和量化参数,利用阈值来决策编码单元是否划分;而针对32×32和16×16纹理复杂度较高的编码单元,不能简单通过阈值来准确预测是否提前划分,故设计一种CNN结构提前终止划分(训练数据库来源于Li T等人研究[10]).
2 编码深度快速决策
本节从3个部分详细描述了编码单元快速划分算法,首先针对大小为64×64的编码单元提出了基于阈值纹理分类的模型.其次针对32×32和16×16的编码单元设计一种CNN网络.最后对编码单元快速划分算法进行了总结.
2.1 阈值纹理分类
针对64×64的编码单元,本文利用相邻均方误差来测量它的纹理复杂度,并用大量实验综合考虑阈值与量化参数(QP)和CU深度的关系,建立阈值与64×64编码单元之间的关系.
标准差(SD)是常用度量纹理复杂度的指标之一,它能准确的反映出全局的纹理复杂度,但是具有较弱的局部复杂性反映能力,而相邻均方误差(NMSE)就能弥补这种缺陷,因此本文选取NMSE作为图像纹理复杂度,NMSE计算表达式如下:
(1)
(2)
本文通过大量的实验发现阈值与CU划分深度、QP和纹理复杂度高度相关,图1显示了在QP=32的情况下4个序列上的最佳CU分布(PeopleOnStreet,BasketballDrill,RaceHorses and Cactus).由图1可以看出,5种大小的CU所占比例都不超过40%,因此在阈值分析的时候需要考虑CU的大小.图2是BasketballDrillText的第1帧CU在QP(22,27,32,37)的分布.从图2被选中的灰色方格可以看出随着QP的不断减小,越来越多高深度的CU显现出来,这是因为在QP较小的时候,CTU往往被划分为较小尺寸的CU,主要是为了避免较大的失真度.因此可以看出QP也是阈值建模的重要因素.通过以上分析,并根据大量实验数据得出阈值与QP之间的关系如图3所示.
图1 序列PeopleOnstreet、Catus、Johnny和ChinaSpeed CU分布图Fig.1 Distribution of the sequence PeopleOnstreet,Catus,Johnny and ChinaSpeed CU
图2 BasketballDrillText第1帧CTU分布图Fig.2 BasketballDrillText CTU distribution of the first frame
图3 QP与阈值之间的关系Fig.3 Relationship between QP and threshold
本文选取在QP=22时阈值为1.7,QP=27时阈值为2.2,QP=32时阈值为2.8,QP=37时阈值为3.6.即将等式(1)中NMSE的值与阈值作比较,若NMSE的值大于阈值,则对64×64的编码单元直接划分,相反则提前终止划分.
2.2 基于CNN的CU分类器
深度学习在实践过程中往往需要大量的学习样本,并对每个学习样本标记类别,本文选取学者李天一[10]建立的HEVC帧内预测编码数单元数据库(CTU Partion of Intra Mode HEVC,CPIH)为训练样本,以防测试序列与训练样本存在相关性.
CPIH数据库是以高分辨拍摄的2000张分辨率为4928×3264原始图像集,此外每组图像集又被下采样分辨率为2880×1920,1536×1024,768×512的图像集,并且每一帧都由原始HM编码器进行编码,不仅保证了足够多变的训练数据,也提高CTU预测划分精准度.
本文设计分离的CNN结构提高划分效率.首先将CU深度引入内核大小,使内核大小与CU大小一致,以避免部分纹理细节损失[11].其次将QP引入损失函数,以提高样本的拟合度.具体的CNN结构如图4所示.
图4 CTU 32×32和16×16的CNN结构Fig.4 CNN structure for CTU 32×32 and 16×16
输入层(Input Layer):CNN模型输入是不同CU大小的矩阵,CU的输入大小(32×32,16×16),对应着每个CU的亮度.
卷积层(Convolution Layer):针对32×32CTU,并行运用8×8和4×4两个内核,8×8内核可以在32×32 CTU中有效地提取纹理特征的4个8×8子CU,4×4内核可以增强纹理细节并避免填充.针对16×16CTU,并行运用4×4和2×2两个内核.对于非重叠卷积,本文将内核步幅统一设置为2×2,在第一层卷积之后,通过与非卷积重叠的2×2内核进行卷积来进行操作,直至最后特征图大小为2×2.
归并层(Concatenation Layer):将卷积层所产生的两组分别具有256个2×2特征图串联在一起,然后通过串联层转换为向量.归并后的特征图由不同来源组合而成,有助于获得全局和局部特征.
全连接层(Full Connection Layer):归并后的级联向量要流经三个全连接层,包括两个隐藏层和一个输出层,在第二层全连接层和输出层之间,在CNN训练过程当中,会以50%的概率随机丢失,避免过拟合,提高网络泛化能力.
由于ReLU具有很快的收敛速度,所有卷积层和隐藏的全连接层都是有用修正线性单元(rectified linear units,ReLU),并且根据输出结果为划分或者不划分,输出层采用S型(Sigmod)函数进行激活,使输出层都位于(0,1)之间.
2.3 CU划分算法总结
本节总结了整体CU划分过程,针对64×64的编码单元,首先通过计算纹理复杂度与我们经验所得的阈值进行比较判断是否划分,如果小于则不划分,大于则进行下一步判
断,对其他不同大小的CTU使用CNN分类器来决定是否划分.整个算法流程如图5所示.
图5 算法总流程图Fig.5 Overall flow chart of the algorithm
3 实验结果与分析
本文提出的算法以HM16.5标准为基础,所配置的文件是内部主文件,量化参数是22、27、32、37,测试序列是JCT-VC的推荐测试序列.结果分析的硬件是Intel Core i7-8700 CPU,3.2GHz主频,16GB内存,Windows10 64操作系统的计算机进行的.本文选取编码时间减少的百分比ΔTS、比特率变化百分比ΔBR和峰值信噪比变化ΔPSNR来衡量编码性能和质量,计算公式如下所示:
(3)
(4)
ΔPSNR=PSNRprop-PSNRHM
(5)
式(3)中THM和Tprop分别代表原始算法编码所需时间和所提出的算法需要的时间,式(4)中BRHM和BRprop分别代表原始编码的比特率和所提算法的比特率,式(5)中PSNRHM和PSNRprop分别代表原始编码的峰值信噪比和所提算法的峰值信噪比.
表1为本文算法与原始HM16.5算法之间的对比结果,由表可看出本文算法在编码比特率仅增加2.15%和峰值信噪比(PSNR)损失0.11dB的状况下,平均节省60.28%的帧内编码时间.为了评估本文算法整体性能,本文还与其他两种先进的算法进行比较,为了公平起见,使用相同的配置文件encoder intra main.cfg对16个标准测试序列进行编码.表1中PartyScene 和BlowingBubbles等此类型测试序列纹理比较复杂,算法测试性能较差,主要原因是这种类型视频序列在编码过程中一般要遍历到较深的编码深度,视频优化空间较小.总体来说,本文算法优化后的视频序列在主观视觉上与原始编码后的效果基本无差别.
表1 本文算法实验结果Table 1 Experimental results of this algorithm
表2显示了本文算法与其他文献在帧内快速编码算法的性能对比.从表中可以看出,Li T[10]和Liu D[12]等人得出的编码比特率分别增加2.38%和8.56%,均高于本文算法得到的比特率.而在PSNR损失方面,Li T[10]等人提出的算法与本
表2 与其他优秀算法比较Table 2 Comparison with other excellent algorithms
文算法相近,而Liu D[12]等人提出的算法远高于本文算法得到的PSNR.最重要的是在编码时间方面,本文算法分别比上述研究的算法快2.91%和14.06%.故可以看出本文算法整体编码性能表现更加优秀.
4 结 论
为了降低HEVC帧内编码复杂度,本文提出了一种基于纹理分类的深度卷积神经网络(CNN)模型来对CTU的划分进行预测.针对64×64的编码单元,通过分析QP、纹理复杂度与CU深度之间的关系,大量进行数据实验,建立阈值来快速对其进行划分判断.针对32×32和16×16编码单元,本文设计了两种不同的CNN结构来决断它们是否划分.实验结果表明,本文算法与原始HM16.5算法相比,可节省60.28%的编码时间,而在编码比特率和峰值信噪比的损失方面可忽略不计.