基于CPU+GPU异构平台实现HEVC中熵编码环节的并行处理方法技术

技术编号:20451865 阅读:31 留言:0更新日期:2019-02-27 04:41
一种基于CPU+GPU异构平台实现HEVC中熵编码环节的高效并行处理方法,是在按HEVC协议标准对视频图像序列进行编码过程中,将当前帧图像的最终熵编码环节与对下一帧图像的处理中除了最终熵编码环节以外的全部其它环节做并行处理‑亦即采用CPU+GPU计算平台对当前帧图像的熵编码用CPU进行处理,对下一帧图像的预测、变换、量化、率失真优化、反量化、反变换、滤波及图像重构等全部其它环节用GPU进行处理,CPU和GPU二者同时并行计算;通过采用这种并行处理方案,可以省去上述二者之中耗时较短的环节(即最终熵编码环节)所需要花费的处理时间,从而显著提高HEVC编码器的整体计算速度。

【技术实现步骤摘要】
基于CPU+GPU异构平台实现HEVC中熵编码环节的并行处理方法
本专利技术属于数字视频压缩编码
,涉及到在高效视频编码HEVC(HighEfficiencyVideoCoding,也称为H.265或称为HEVC/H.265)协议标准中的熵编码环节如何实现高效并行处理的方法,以达到显著提升HEVC编码器的计算效率的目的。
技术介绍
随着互联网和信息技术的迅速发展,多媒体技术在社会生活中起到了越来越重要的作用。而视频作为一种重要的信息载体,具有直观性、确切性、高效性及广泛性等优点,广泛应用在社会各个领域。随着人们对视频分辨率和清晰度等需求的不断提高,数字视频的发展从最初的352×240分辨率发展到高清(1920×1080)进而再到超高清(4k×2k及以上),视频数据量也随之大幅度增加。然而实际信道及存储设备的容量却是有限的,因此,视频数据压缩已成为视频技术应用和发展中必不可少的关键技术。作为最新一代高效视频编码标准,HEVC由国际电信联盟的视频编码专家组(ITU-T/VCEG)和国际标准化组织及国际电工委员会(IEC)的运动图像专家组(ISO/IECMPEG)于2013年正式发布。HEVC包含了最新的视频编码技术,与前一代视频编码标准H.264/AVC相比,HEVC可以在保证相同的编码质量前提下,能够节省约50%的码率。HEVC在获得出色视频压缩性能的同时也使得编码过程的计算复杂度显著增加(据统计是H.264/AVC的2-4倍),从而给编码器的实时处理的实现带来了巨大挑战。因此,设计高效快速的HEVC编码算法现已成为视频数据压缩领域的一个重要研究课题。在HEVC编码器中主要包括预测(帧内预测和帧间预测)、变换、量化、率失真优化、反量化、反变换、滤波(去方块效应滤波和样点自适应补偿滤波)、图像重构及熵编码等环节,目前除了熵编码环节以外针对其它各个环节现已分别设计出了相应的高效并行处理算法,进而通过采用GPU和多线程编程技术实现并行计算来显著提升这些环节的计算效率。但对于其中的熵编码环节,由于在HEVC中采用的是基于上下文的自适应二进制算术编码(Context-basedAdaptiveBinaryArithmeticCoding:CABAC)方法,该计算过程本身是一种递推运算,在对后一数据的进行编码计算时需要用到对前一数据的编码结果,因此只能在已经求出对前一数据的编码结果之后才能对后一数据进行编码,故只能按照数据的前后顺序依次进行串行运算,而不适于做并行处理,所以难以使该环节的计算速度得到大规模的提高。在整个HEVC编码过程中有两个环节涉及到熵编码计算,一个是在进行率失真优化时需要对图像中各个CU数据块分别求出每个CU块的码率信息以获得其最佳编码参数,另一个是对已经求出全部最佳编码参数后的整帧图像的全部待编码数据进行最终的熵编码以产生该帧图像压缩后的比特码流。实验测试结果表明,采用第七代i7CPU(例如,CoreTMi7-7700)在对高清(1080P)视频图像在数据压缩比为100-130倍下,用HEVC中的熵编码算法完成一幅整帧图像的最终熵编码环节平均耗时14--17毫秒。而对于预测、变换、量化、反量化、反变换、率失真优化、滤波及图像重构等全部环节,通过采用一块GPU卡(例如GTX-1080)进行并行处理平均可在32--36毫秒内完成。因此,对于整个HEVC编码器,熵编码环节现已成为实现实时处理的瓶颈问题。如何设计出高效的熵编码算法以显著节省该环节的处理时间,对于实现HEVC编码器的实时处理十分关键。目前,针对提高HEVC编码器的计算效率的研究主要集中于算法改进和硬件加速。2014年发表的硕士学位论文(赵亚楠.新一代视频编码标准HEVC的并行化研究[D].上海交通大学,2014.)针对预测环节同时采用粗粒度并行和细粒度并行两种并行方式,从编码树单元CTU级和CTU内部两个层级进行并行化研究。该方法能在一定程度上提高HEVC编码器的计算效率,但因为细粒度并行仅涉及到CU级并行,其并行度较小,而且并没有针对熵编码环节做并行化处理,因此其加速效果无法满足对实时性的需求。2014年发表于浙江大学学报的论文(周承涛,田翔,陈耀武.HEVC编码单元尺寸快速选择算法[J].浙江大学学报:工学版,2014,48(8):1451-1460.)提出了深度单一性的概念,利用相邻单元编码深度的选择,跳过某些出现概率比较小的深度,从而加快CU块划分速度,该方法虽然使得编码速度提高了约25%,但由于跳过一些CU划分深度,使得HEVC编码器最终的编码质量受到一定影响。2016年发表于JournalofVisualCommunicationandImageRepresentation杂志上的文献(TariqJ,KwongS,YuanH.HEVCintramodeselectionbasedonRateDistortion(RD)costandSumofAbsoluteDifference(SAD)[J].JournalofVisualCommunicationandImageRepresentation,2016,35:112-119.)分析了率失真(RDcost)与绝对误差和(SAD)之间的二次关系,得到估计率失真代价的近似计算公式,以此可以省掉求取率失真代价中对各个CU块进行熵编码所需要的耗时。但由于该方法对各个CU块的码长是做近似估算,这样就会给率失真的计算带来误差,从而对图像的编码质量造成一定损失。2018年发表的文献(Cebrián-MárquezG,GalianoV,MigallónH,etal.HeterogeneousCPUplusGPUapproachesforHEVC[J].TheJournalofSupercomputing,2018,April2:1-12.)对基于片级(Slice)的并行方案以及基于层级(Tile)的并行方案两种方法进行了实现,该方法也使得编码器的计算效率得到了一定程度的提高。但该方法仅为片级或层级并行,并行度受限,无法使其计算效率得到更大规模的提升。以上方法并没有涉及到对已经确定好最佳编码参数后的整帧图像的最终熵编码环节进行并行化处理。而如前所述,该环节本身在处理一帧高清图像(1080p)时平均耗时14--17毫秒。因此,如何有效地节省该环节的处理时间,对于实现整个HEVC编码器的实时处理是至关重要的。
技术实现思路
本专利技术提出一种适合在CPU+GPU异构平台上实现的HEVC编码器的并行处理方法,该方法将整帧图像的最终熵编码环节和预测、变换、量化、率失真优化、反量化、反变换、滤波及图像重构等其它全部环节一起进行并行处理、同步运行,达到显著提升HEVC整体编码器的计算效率的目的。在HEVC中,对于每一幅当前帧图像都要首先进行预测、变换、量化、率失真优化、反量化、反变换、滤波、图像重构及熵编码等环节的运算。由于在预测、变换、量化、滤波及图像重构这些环节中均可以通过设法对其所涉及的待处理数据进行有效的划分而设计出高效的并行处理算法,同时通过利用GPU的众核结构和多线程编程技术高效并行地实现对这些数据的处理,从而可以大规模地提升这些环节的计算效率。但对于HEVC中的熵编码过程,尤其对于整本文档来自技高网
...

【技术保护点】
1.一种基于CPU+GPU异构平台实现HEVC中熵编码环节的并行处理方法,其特征在于:(1)采用二核或二核以上的CPU和一个GPU卡构成一个CPU+GPU异构计算平台;(2)在CPU上设置两个线程,分别称为“CPU主线程”和“CPU从线程”;在GPU上设置一个多线程,称为“GPU多线程”;其中“CPU主线程”负责整个编码器系统的计算流程控制,也对“CPU从线程”和“GPU多线程”的调度以及CUP与GPU之间的数据信息交流;“CPU从线程”负责实现对前一帧图像所有待编码数据的最终熵编码环节,“GPU多线程”负责实现对当前帧图像的预测、变换、量化、率失真优化、反量化、反变换、滤波及图像重构;(3)对于率失真优化过程中对各个CU数据块的熵编码环节,预测、变换、量化等环节是由GPU通过“GPU多线程”做并行处理,而且此时是以CU数据块为单元进行计算,在此过程中用“GPU多线程”对每一个CU数据块仍按原串行熵编码算法对该CU块中的各个数据进行编码,而对不同的CU数据块进行并行编码,由此实现CU级的并行熵编码,提高该环节的计算效率。

【技术特征摘要】
1.一种基于CPU+GPU异构平台实现HEVC中熵编码环节的并行处理方法,其特征在于:(1)采用二核或二核以上的CPU和一个GPU卡构成一个CPU+GPU异构计算平台;(2)在CPU上设置两个线程,分别称为“CPU主线程”和“CPU从线程”;在GPU上设置一个多线程,称为“GPU多线程”;其中“CPU主线程”负责整个编码器系统的计算流程控制,也对“CPU从线程”和“GPU多线程”的调度以及CUP与GPU之间的数据信息交流;“CPU从线程”负责实现对前一帧图像所有待编码数据的最终熵编码环节,“GPU多线程”负责实现对当前帧图像的预测、变换、量化、率失真优化、反量化、反变换、滤波及图像重构;(3)对于率失真优化过程中对各个CU数据块的熵编码环节,预测、变换、量化等环节是由GPU通过“GPU多线程”做并行处理,而且此时是以CU数据块为单元进行计算,在此过程中用“GPU多线程”对每一个CU数据块仍按原串行熵编码算法对该CU块中的各个数据进行编码,而对不同的CU数据块进行并行编码,由此实现CU级的并行熵编码,提高该环节的计算效率。2.根据权利要求1所述的的并行处理方法,其特征在于以下步骤:步骤1:从T0时刻开始至T1时间内,首先由CPU端的CPU主线程向GPU端传送视频序列中的第0帧图像数据,并向GPU发出调度指令,启动GPU多线程采用如前面所述的“实现HEVC编码器并行处理的技术方案”对第0帧图像进行预测、变换、量化、率失真优化、反量化、反变换及图像重构等环节的并行计算;在此期间,CPU主线程与GPU端将有多次的信息交流,CPU主线程会根据GPU端返回的信息所反映的当前GPU端上的GPU多线程的任务执行状况,启动不同的GPU多线程以完成不同环节的处理任务;当GPU端中的GPU多线程完成第0帧图像的重构计算任务后向CPU主线程返回任务结束标志,CPU主线程收到结束标志后,将GPU多线程产生的第0帧的全部待编码数据传到CPU中;在此期间CPU从线程处于空闲状态;步骤2:从T1时刻开始至T2时间内,CPU主线程启动CPU从线程由该从线程对第0帧全部待编码数据进行熵编码,CPU主线程同时将下一帧(第1帧)图像数据传送到GPU端,并启动GPU端的GPU多线程对第1帧图像进行预测、变换、量化、率失真优化、反量化、反变换、滤波及图像重构等环节的并行计算;在此期间,CPU主线程...

【专利技术属性】
技术研发人员:郭成安董菁鑫
申请(专利权)人:大连理工大学
类型:发明
国别省市:辽宁,21

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1