一种基于CPU+GPU混合编码的帧内编码预测方法与流程

文档序号:19664775发布日期:2020-01-10 21:29阅读:309来源:国知局

本发明涉及视频编码相关技术领域,尤其是指一种基于cpu+gpu混合编码的帧内编码预测方法。



背景技术:

hevc是由国际电信联盟(itu-t)推出的最新一代视频编码标准,在上一代视频编码标准h264的基础上,增加了很多新的编码工具,压缩率提高一倍,为超高清视频产业的发展打下了良好的基础。hevc作为成功的国际标准在广电、新媒体以及互联网直播领域都得到了广泛的应用。

avs2是中国于2016年12月发布的面向超高清视频应用的最新一代标准。它的整体框架与hevc类似,同时也增加了很多特有的新工具,在编码效率上略优于hevc。目前,工业和信息化部、国家广播电视总局、中央广播电视总台已经联合印发《超高清视频产业发展行动计划(2019-2022年)》,中国正在大力推进超高清视频产业发展及相关领域的应用,avs2视频标准已成为中国广电总局<<4k超高清电视技术应用实施指南(2018版)>>采用的唯一视频编码标准,具备广阔的应用前景。

针对超高清视频的特点,avs2与hevc均采用了四叉树划分的结构,灵活匹配图像本身的纹理特征。具体来说,编码器把整帧图像划分为大小相等的众多正方形的最大编码单元,hevc称之为ctu(codingtreeunit),avs2里称之为lcu(largestcodingunit)。ctu(或lcu)最大尺寸可以配置为2nx2n,n最大为6,即最大可以是64x64。而对于一个ctu(或lcu),编码器可以按照其纹理特征灵活的通过四叉树划分方式划分为更小的正方形编码块(cu)。最小的编码单元cu可以达到8x8。对于intra帧编码,通常一个cu就是一个预测块(pu,predictunit),两种情况除外:当cu达到最小允许的cu大小,还可以把一个cu分为4个更小的正方形pu;avs2还可以把一个cu分为非对称的矩形pu,这种模式通常用的较少,本文为描述方便先不予考虑,但用本专利方法其实一样可以覆盖。每个pu可以有很多种预测模式供选择。其中,hevc亮度分量有35种预测模式,色度分量有5种预测模式;avs2类似,亮度分量33种预测模式,色度也是5中预测模式。

编码器一般通过率失真优化(ratedistortionoptimization,rdo)的方法来选择最优的编码模式。所谓率失真优化,是根据编码后的码流比特数以及编码造成的图像失真来计算总的编码代价rdcost,公式化表达为rdcost=d+lambda*r。d即图像失真,r为编码后比特数,lambda是量化参数决定的拉格朗日常数,rdcost的计算需要对编码单元进行重建和比特数的估计,因此计算量很大。对于intra帧而言,计算量最大的地方就是通过计算各个cu尺寸下,各种pu的模式的rdcost,从而选择最优或者接近最优的模式。

由于计算rdcost计算量较大,并且由于编码过程可选模式过多,编码器一般采用简化的编码代价rdcost_simple来做一个初选,选出若干较优秀的候选模式,然后再用rdcost在若干候选模式中选出最优的模式。简化的rdcost_simple公式化表达为rdcost_simple=satd+header_bits*lambda。satd是将预测像素值和原始像素值之间的差值先进行哈达玛变换然后再进行绝对值求和得到;对于帧内预测,header_bits主要是帧内预测模式等一些头信息编码的比特数,lambda是由qp决定的拉格朗日常数。rdcost_simple比rdcost计算量小很多,但是模式准确度也不如rdcost。快速算法就是为了解决计算量与模式准确度之间的一个平衡问题,即编码速度和压缩效率的平衡。

目前业内普遍采用bdrate指标来衡量不同编码器压缩效率的差别。bdrate是指在相同的图像客观质量下,编码码率的增加或节省的幅度。图像客观质量一般利用解码后重建图像与原始图像之间的峰值信噪比(peaksignaltonoiseratio,psnr)来衡量。

在编码器的实现上,特别是针对4k/8k超高清编码,通常有如下几种平台构架实现方式:

a)采用纯cpu服务器编码。虽然intel志强多核处理器具备一定的计算能力,但是和4k、8k超高清实时编码的需求相比,还是显得不足。通常需要多台服务器联合编码,或者大量裁剪编码工具、模式,以大量损失压缩效率为代价来节省计算量以满足实时编码的要求。所以纯cpu构架的服务器不适合做4k、8k超高清编码。

b)采用专用编码芯片解决方案。优点是算力比较大,缺点是不够灵活,算法都是固化死的,开发周期长且升级很难,而且像avs2目前市面上没有相应的编码芯片。

c)gpu方案。gpu虽然有强大的并行计算能力,但是由于视频编码过程大部分都是串行计算,很难直接使用gpu。

现有的hevc或者avs2编码中,帧内模式编码,由于编码预测模式很多,所以模式选择计算量很大。特别是对于4k、8k超高清编码,实时编码的计算压力很大。采用传统的cpu的构架来编码,压力非常大,往往不能达到实时编码。一些编码厂商采用多节点并行编码,或者人为删除较多的模式以牺牲压缩率来达到实时的目的。这些方法要么增加了成本,或者降低了压缩效率。



技术实现要素:

本发明是为了克服现有技术中存在上述的不足,提供了一种高效快速的基于cpu+gpu混合编码的帧内编码预测方法。

为了实现上述目的,本发明采用以下技术方案:

一种基于cpu+gpu混合编码的帧内编码预测方法,具体包括如下步骤:

(1)当编码器开始编码一帧intra帧时,获得需要编码的intra帧数据时,通常为yuv数据,先把yuv数据copy到gpu的globalmemory上;

(2)在gpu上面创建n个cuda流处理器,每个流处理器负责一个尺寸的intra预测模式,n为所有intra预测块大小的个数;

(3)每个流处理器分别对整个图像的某个块尺寸的各个模式进行处理,首先基于输入帧yuv的数据而不是重建帧数据以及相应的模式获得预测块数据,然后通过当前帧的编码块数据与预测块数据相减得到残差块数据,进而对残差块数据做哈达玛变换,进而计算出每个残差块的satd,gpu计算完所有模式的satd后,把每个预测块的最优n个模式以及对应的satd传回到cpu;

(4)gpu计算完所有的预测块的所有预测模式的satd后,由于这是近似值,需要用cpu来进一步确定最佳模式。

本发明编码构架上的创新,将hevc/avs2intra帧的预测编码的整个过程分为两部分,一部分适合gpu大规模并行运算,通过这个部分,编码器可以快速得到每个块的每个预测模式的近似的satd,这样可以排除大部分的较差模式,留下若干候选的较优模式;第二部分是利用cpu的串行计算能力,在第一部分计算出来的较优若干候选模式中,用rdcost评价方式选出最优的编码预测模式。

由于intra预测计算预测块需要用到当前块左边或者上边一行的编码重建像素值,通常这就需要等待左边以及上边的编码快完全编码重建结束后才能开始,如此做则不能所有编码快并行编码。本方法创新的采用原始帧像素来做近似,这样就可以做到左右编码块并行编码,适合发挥gpu大规模并行计算能力,从而以较快速度计算出各编码块尺寸以及预测模式的satd;依据gpu并行计算的近似的各预测块以及模式的satd,再在cpu上面做最终的快速而准确的模式决定,获取最终的预测模式。本发明方法,就是通过编码算法实现的创新改造,以便于重复利用gpu强大的并行计算能力,并且结合cpu较好的串行计算能力,以此达到高效快速的intra帧编码。

作为优选,在步骤(2)中,n最多为5,分别代表64x64,32x32,16x16,8x8,4x4大小,编码器可以根据实际情况主动禁止模式尺寸从而减小总复杂度,故n小于等于5。

作为优选,在步骤(3)中,每个流处理器也分很多线程块,每个线程块含多个线程并行处理,线程块的个数以及每个线程块的线程数依据gpu的型号来定。

作为优选,在步骤(4)中,cpu确定最佳模式的具体操作步骤如下:

(a)cpu端采用正常编码顺序,对每个ctu或lcu按顺序串行处理;

(b)对于每一个ctu或lcu,先考察最大的cu,将其视为cuup,将步骤(3)中计算得到的近似satd最优的n个模式为候选模式,使用标准处理方法,计算得到每个候选模式的rdcost_simple,得到最优的模式,然后计算最优模式的rdcost,记做rup,此最优模式为modeup;

(c)把cuup分为4个正方形小cu,每个cu的宽度为cuup的二分之一,这四个小cu称为cusub,然后分别对每个cusub用步骤(b)的方法计算最优模式并得到相应的rdcost,分别记做ri,i=1、2、3、4,四个ri之和记做rthis,如果rup<=rthis,则表示cuup划分确定为上一层,不再往下划分cu,且预测模式即为modeup,本cu的判断到此即可结束;如果rup>rthis,则表示cuup需要划分到本层,甚至还需要继续向更小的cu划分做尝试,针对每一个小cusub,分别继续执行步骤(d);

(d)如果当前cusub的尺寸已经是允许的最小cu尺寸,则当前cusub就划分为当前cusub,否则把当前cusub当做cuup,递归重复步骤(b)、步骤(c)和步骤(d),最终可以确认当前cusub的划分模式以及预测模式;

(e)通过如此迭代,依次对所有的ctu或lcu完成整帧的模式判决,最终确认整个ctu或lcu的划分模式以及相应的预测模式。

作为优选,在步骤(b)和步骤(c)中,计算rup或者ri时候还可以选择的方法是:全部预测模式均计算rdcost,而不是satd最优模式才计算rdcost,具体使用两者中的哪一种依据计算资源和计算量灵活确定。

本发明的有益效果是:便于重复利用gpu强大的并行计算能力,并且结合cpu较好的串行计算能力,以此达到高效快速的intra帧编码。

具体实施方式

下面结合具体实施方式对本发明做进一步的描述。

一种基于cpu+gpu混合编码的帧内编码预测方法,具体包括如下步骤:

(1)当编码器开始编码一帧intra帧时,获得需要编码的intra帧数据时,通常为yuv数据,先把yuv数据copy到gpu的globalmemory上;

(2)在gpu上面创建n个cuda流处理器,每个流处理器负责一个尺寸的intra预测模式,n为所有intra预测块大小的个数;n最多为5,分别代表64x64,32x32,16x16,8x8,4x4大小,编码器可以根据实际情况主动禁止模式尺寸从而减小总复杂度,故n小于等于5;

(3)每个流处理器分别对整个图像的某个块尺寸的各个模式进行处理,首先基于输入帧yuv的数据而不是重建帧数据(这一点和标准做法不一样,是一种快速的近似处理,目的是消除各并行线程间的依赖性,可以高度并行)以及相应的模式获得预测块数据,然后通过当前帧的编码块数据与预测块数据相减得到残差块数据,进而对残差块数据做哈达玛变换,进而计算出每个残差块的satd,gpu计算完所有模式的satd后,把每个预测块的最优n个模式以及对应的satd传回到cpu,n可以调整,默认取3;每个流处理器也分很多线程块,每个线程块含多个线程并行处理,线程块的个数以及每个线程块的线程数依据gpu的型号来定;

(4)gpu计算完所有的预测块的所有预测模式的satd后,由于这是近似值,需要用cpu来进一步确定最佳模式;

cpu确定最佳模式的具体操作步骤如下:

(a)cpu端采用正常编码顺序,对每个ctu或lcu按顺序串行处理;

(b)对于每一个ctu或lcu,先考察最大的cu(即整个ctu或lcu即一个cu),将其视为cuup,将步骤(3)中计算得到的近似satd最优的n个模式为候选模式(n作为变量,越大则计算的模式约接近实际最优,默认为3),使用标准处理方法,计算得到每个候选模式的rdcost_simple,得到最优的模式,然后计算最优模式的rdcost,记做rup,此最优模式为modeup;

(c)把cuup分为4个正方形小cu,每个cu的宽度为cuup的二分之一,这四个小cu称为cusub,然后分别对每个cusub用步骤(b)的方法计算最优模式并得到相应的rdcost,分别记做ri,i=1、2、3、4,四个ri之和记做rthis,则有rthis=r1+r2+r3+r4,如果rup<=rthis,则表示cuup划分确定为上一层,不再往下划分cu,且预测模式即为modeup,本cu的判断到此即可结束;如果rup>rthis,则表示cuup需要划分到本层,甚至还需要继续向更小的cu划分做尝试,针对每一个小cusub,分别继续执行步骤(d);

在步骤(b)和步骤(c)中,计算rup或者ri时候还可以选择的方法是:全部预测模式均计算rdcost,而不是satd最优模式才计算rdcost,如此做,则模式选择更加准确,代价是多一些rdcost的计算,具体使用两者中的哪一种依据计算资源和计算量灵活确定,是压缩效率与编码速度的一个平衡;

(d)如果当前cusub的尺寸已经是允许的最小cu尺寸,则当前cusub就划分为当前cusub,否则把当前cusub当做cuup,递归重复步骤(b)、步骤(c)和步骤(d),最终可以确认当前cusub的划分模式以及预测模式;

(e)通过如此迭代,依次对所有的ctu或lcu完成整帧的模式判决,最终确认整个ctu或lcu的划分模式以及相应的预测模式。

本发明编码构架上的创新,将hevc/avs2intra帧的预测编码的整个过程分为两部分,一部分适合gpu大规模并行运算,通过这个部分,编码器可以快速得到每个块的每个预测模式的近似的satd,这样可以排除大部分的较差模式,留下若干候选的较优模式;第二部分是利用cpu的串行计算能力,在第一部分计算出来的较优若干候选模式中,用rdcost评价方式选出最优的编码预测模式。

由于intra预测计算预测块需要用到当前块左边或者上边一行的编码重建像素值,通常这就需要等待左边以及上边的编码快完全编码重建结束后才能开始,如此做则不能所有编码快并行编码。本方法创新的采用原始帧像素来做近似,这样就可以做到左右编码块并行编码,适合发挥gpu大规模并行计算能力,从而以较快速度计算出各编码块尺寸以及预测模式的satd;依据gpu并行计算的近似的各预测块以及模式的satd,再在cpu上面做最终的快速而准确的模式决定,获取最终的预测模式。本发明方法,就是通过编码算法实现的创新改造,以便于重复利用gpu强大的并行计算能力,并且结合cpu较好的串行计算能力,以此达到高效快速的intra帧编码。

采用本发明的基于gpu+cpu框架的方法,也可以兼容在gpu内部和cpu内部采用其他快速算法。本发明以avs2/hevc编码器为例进行实施,但并不局限于avs2/hevc,同样的方法略加改造还可应用于avs、avs3、h.264等编码器。本发明可以有效的利用gpu的超大规模并行运算能力以及cpu的较强的串行运算能力,并运用于avs2和hevc4k/8k超高清编码器中,对intra帧而言,和只有cpu未开质量损失的快速算法的版本比,性能可以提升10倍以上,bdrate损失在1%以内,再配合其他inter帧的处理,可以使得一台e5+nvidiam60的服务器上面同时实时编码一路4k50fpshevc以及4k50fpsavs2的高质量编码;两台这样的服务器联合,则可以做到一路8k60fpshevc或者avs2实时高质量编码。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1