1.本发明涉及视频编码技术领域,尤其涉及基于神经网络进行视频编码的帧 内预测方法及设备和介质。
背景技术:2.在现有技术中,各种多媒体设备和平台主要使用视频编码标准h264、h265 等中的新一代视频编码器,为了尽可能获得性能最佳的编码性能,在编码的预 测过程中,使用率失真优化(rate-distortion optimization)算法计算各种编码模 式对应的率失真代价(rate-distortion cost),选择率失真代价最小的编码模式 作为最佳编码模式进行编码。
3.现有在视频编码标准帧内预测过程中,为了从所有帧内预测模式中选择出 率失真优化值最小的预测模式,需要遍历计算所有预测模式的率失真代价,其 中计算一个预测模式就需要计算对应预测模式下当前块残差值,将残差块进行 变换、量化、反量化和反变换,再计算得到重建块,最后计算当前宏块原始像 素值和重构像素值的平方误差和(sum of square difference),并将重构像素值 保留下来,作为后续编码块的参考像素。以上的过程包含了大量运算,该过程 逻辑硬件化实现中要求大量存储资源和运算逻辑,不利于硬件化实现。
4.本发明欲解决的技术问题是降低在视频编码的预测过程中的计算量,减少 存储单元和计算单元的资源消耗。因此,有必要提供一种新型的视频编码的帧 内预测方法以解决现有技术中存在的上述问题。
技术实现要素:5.本发明的目的在于提供一种使用神经网络(convolutional neural networks, cnn)进行视频编码的帧内预测方法,将通过目标预测分类cnn网络模型输出 得到的帧内预测编码模式应用于视频编码,并实现视频编码标准帧内预测过程 中的硬件化实现。
6.为实现上述目的,本发明的所述一种基于神经网络进行视频编码的帧内预 测方法,该实现方法包括:
7.步骤s100:将通过目标预测分类cnn网络模型输出得到的帧内预测编码模 式,应用于视频编码。
8.现有编码块做帧内预测方法,首先根据预测模式从当前帧已编码重构的相 邻块获得参考像素值,使用参考像素值计算当前的预测模式的预测像素值,预 测块为宏块中的像素值为预测像素值。当前块为宏块中的像素值为原始像素值 计算当前块原始像素,与预测像素的残差值res。将res进行预编码(变换、量 化、反量化和反变换),得到还原残差值res’,res’加上预测像素值计算得到重 构块像素值rec,重构块像素会作为后续编码块的参考像素,同时预编码会得到 编码当前块的比特消耗值cost。
9.本发明提供的使用神经网络进行视频编码的帧内预测方法,将通过目标预 测分类cnn网络模型输出得到的帧内预测编码模式应用于所述视频编码过程。 即使用一种神经
网络进行选择帧内编码模式的方法,用卷积神经网络(cnn) 对编码预测过程进行机器学习,使用学习后的神经网络模型代替现有率失真优 化算法选择出编码模式。由于卷积神经网络中只存在乘法和加法计算,使用结 构较简单,层数较少且有一定准确率的神经网络进行编码预测,相比于使用率 失真优化算法的现有技术,在简化硬件实现和加速预测过程方面有更好的性能。
10.进一步地,所述的帧内预测方法,所述步骤s100之前包括:
11.步骤s10:将当前编码块像素值和参考像素值输入所述目标预测分类cnn 模型(训练好的);
12.步骤s20:将所述目标预测分类cnn网络模型的输出作为所述帧内预测编 码模式。
13.进一步地,所述的帧内预测方法,其特征在于,所述步骤s10之后包括:
14.步骤s11:构建初始cnn网络模型;
15.步骤s12:将编码宏块和大数据量rdo进行帧内预测的编码块及预测结果 作为数据集,对所述初始cnn网络进行训练,所述编码块的宏块设置为18
×
18、 16
×
16、8
×
8或4
×
4中任一种
16.步骤s13:得到训练好的所述目标预测分类cnn网络模型,即目标预测分 类cnn网络模型。
17.在一些优选的实施例中,所述的帧内预测方法,所述步骤s20中,将目标 预测分类cnn模型输出的dc,hor,ver和planar4个帧内编码模式中选择其中一 个作为所述帧内预测编码模式。
18.进一步地,所述的帧内预测方法,在所述目标预测分类cnn网络模型在dc, hor,ver和planar 4个帧内预测编码模式的最终选择以率失真代价(rate-distortioncost)为标准,选择率失真代价最小的编码模式做为最佳编码模式进行编码。
19.进一步地,所述宏块在dc,hor,ver和planar四种帧内编码模式下以率失真 优化算法去计算各个预测模式下的所述率失真代价的结果数值。
20.进一步地,所述的帧内预测方法,所述步骤s110中,构建的所述初始cnn 网络由第一卷积层、第二卷积层、池化层、第一全连接层和第二全连接层构成。
21.进一步地,所述的帧内预测方法,构建所述初始cnn网络的过程中,设置 第一卷积层参数为18*18*96,设置所述第二卷积层参数为18*18*256。
22.进一步地,所述的帧内预测方法,构建所述初始cnn网络的过程中,设置 所述池化层参数为9*9*256。
23.进一步地,所述的帧内预测方法,构建所述初始cnn网络的过程中,设置 所述第一全连接层节点数为1024,设置所述第二全连接层节点参数为4。
24.本发明方法适用h264(avc)、h265(hevc)和h266(vvc)的视频编码标准。 本发明方法同样适用帧内预测编码方式和帧间预测编码方式。
25.本发明还提供了使用神经网络进行帧内预测编码的视频编辑设备,包括处 理器、存储器以及存储在所述存储器内的计算机程序,所述计算机程序能够被 所述处理器执行,以实现所述帧内预测方法。
26.本发明还提供了计算机可读介质,所述计算机可读介质包括存储的计算机 程序,其中,在所述计算机程序运行时控制所述计算机可读介质所在设备执行所 述帧内预测方
法。
附图说明
27.图1为本发明第一实施例的帧内预测模式确定的流程示意图;
28.图2为本发明第二实施例的目标预测分类cnn模型形成流程示意图;
29.图3为本发明第三实施例cnn构成示意图;图4为一帧图像中宏块划分示意图。
30.附图标记说明:
31.100、原始一帧图像;200、第一卷积层;300、第二卷积层;400、池化层;500、 第一全连接层;600、第二全连接层;2、当前宏块;3、左侧像素;4、上侧像 素;5、左上侧像素。
具体实施方式
32.为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明的附图, 对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例 是本发明的一部分实施例,而不是全部的实施例。基于本发明中的实施例,本 领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都 属于本发明保护的范围。除非另外定义,此处使用的技术术语或者科学术语应 当为本发明所属领域内具有一般技能的人士所理解的通常意义。本文中使用的
ꢀ“
包括”等类似的词语意指出现该词前面的元件或者物件涵盖出现在该词后面 列举的元件或者物件及其等同,而不排除其他元件或者物件。
33.在本发明实施例的一个典型的配置中,终端、服务网络的设备和可信方均 包括一个或多个处理器(cpu)、输入/输出接口、网络接口和内存。
34.本发明实施例的内存可包括计算机可读介质中的非永久性存储器,随机存 取存储器(ram)和/或非易失性内存等形式,如只读存储器(rom)或闪存 (flash ram)。内存是计算机可读介质的示例。
35.本发明实施例的计算机可读介质包括永久性和非永久性、可移动和非可移 动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、 数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于 相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器 (dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除 可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存 储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带,磁 带磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计 算设备访问的信息。按照本文中的界定,计算机可读介质不包括非暂存电脑可 读媒体(transitory media),如调制的数据信号和载波。
36.为更进一步阐述本技术所采取的技术手段及取得的效果,下面结合附图及 较佳实施例,对本技术的技术方案,进行清楚和完整的描述。
37.在本发明的一种实施例中,提供一种使用神经网络进行的帧内预测方法, 该实现方法包括:
38.步骤s100:将通过目标预测分类cnn训练得到的帧内预测编码模式,应用 于视频编码。
39.现有技术编码的预测过程中,需要通过当前宏块(macroblock)周围的参考 像素值进行计算,得到预测像素值,然后对原始像素值与预测像素值差值进行 预编码操作,预编码包括:变换,量化,反量化,反变换等操作,最后计算率 失真代价。预编码包括的操作存在大量的计算,最后计算率失真代价时还存在 次方计算。
40.在视频编码标准帧内预测过程中,为了从所有帧内预测模式中选择出率失 真优化值最小的预测模式,需要遍历计算所有预测模式的率失真代价rdc,其 中计算一个预测模式就需要计算对应预测模式下当前宏块残差值,将残差块进 行变换、量化、反量化和反变换,再计算得到重建块,最后计算当前宏块原始 像素值和重构像素值的平方误差和,并将重构像素值保留下来,作为后续编码 块的参考像素。以上的过程包含了大量运算,该过程逻辑硬件化实现中要求大 量存储资源和运算逻辑,不利于硬件化实现。
41.为了有利于编码预测过程更好的进行硬件化实现,使用一种神经网络进行 选择帧内编码模式的方法,用卷积神经网络(cnn)对编码预测过程进行机器 学习,使用学习后的神经网络模型代替率失真优化算法选择出编码模式。由于 卷积神经网络中只存在乘法和加法计算,使用结构较简单,层数较少且有一定 准确率的神经网络进行编码预测,相比于现有技术使用率失真优化算法,在硬 件化实现和加速预测过程方面有更好的性能。将现有的变换,量化,反量化, 反变换以及次方等复杂计算简化为乘法和加法计算,大大降低计算复杂度,加 快运算速度,占有系统资源少,易于硬件化实现。
42.在上述实施例基础上,所述的帧内预测方法,如图1所示,步骤s100之前 包括:
43.步骤s10:将当前编码块像素值和参考像素值输入所述目标预测分类cnn模型;
44.步骤s20:将所述目标预测分类cnn模型的输出作为所述帧内预测编码模式。
45.一些实施例中,cnn网络由第一卷积层、第二卷积层、池化层、第一全连 接层和第二全连接层构成;
46.一些实施例中,对目标预测分类cnn模型的训练,参考像素值为帧内的当 前编码块像素值所在位置的左侧和上方的像素值。
47.该目标预测分类cnn网络目的是输入当前宏块像的素值和参考值,输出得 到该宏块的帧内编码模式,取代使用率失真优化(现有)的方法计算率失真代 价得到帧内编码模式的方法,如图1所示。以h264中16x16块划分帧内预测为 例,由于每个宏块会在dc,hor,ver和planar4个帧内编码模式中选择其中一个 作为最佳帧内编码模式。以传统的率失真优化选择方法选择出的帧内编码模式 作为衡量标准,则可以看作每个宏块对应4个帧内编码模式中1个帧内编码模 式,所有编码宏块最后都是4个帧内编码模式类型的一种类型。
48.在还有一些实施例中,所述的帧内预测方法,所述步骤s10之后,如图2 所示,还包括:
49.步骤s11:构建初始cnn网络;
50.步骤s12:将编码宏块和大数据量rdo进行帧内预测的编码块及预测结果 作为数据集,对所述初始cnn网络进行训练;
51.步骤s13:得到训练好的所述目标预测分类cnn模型。
52.ssd=∑(p
ori-p
rec
)2ꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(1)
53.rdcost=ssd+λ
·
cost
ꢀꢀꢀꢀꢀꢀꢀꢀꢀꢀ
(2)
54.使用公式(1)计算得到原始像素和重构像素的平方误差和ssd,再用公式 (2)可以
计算得到率失真代价,即可计算各预测编码模式的rdo。每个编码块 会得到预测模式数量的rdcost值,最后选取rdcost值最小的预测模式作为最 后编码的模式。p
ori
原始像素(值),p
rec
重构像素(值)、比特消耗值cost重 构块:宏块中的像素值为重构像素值。cost为当前块经过变换量化熵编码后计算 得到所需的比特数。λ为拉格朗日算子,用于调整块失真和所需比特数在计算 率失真代价的比例。
55.在一些实施例中,步骤s12:将一帧图像有且仅划分为若干个16*16的宏块, 使用率失真优化算法进行内预测编码,将当前宏块像素值及选择的帧内预测模 式记录下来,记录内容作为结果。重复上述方法得到大量结果,作为cnn网络 模型数据集对cnn网络模型进行训练。
56.在另一些实施例中,所述的帧内预测方法,在dc,hor,ver和planar 4个帧 内编码模式中确定其中一个作为帧内预测编码模式。
57.进一步地,所述的帧内预测方法,所述帧内编码模式的选择以率失真代价 (rate-distortion cost)为标准,选择率失真代价最小的编码模式做为最佳编码 模式进行编码。
58.在还有的实施例的所述帧内预测方法中,所述宏块会依次在dc,hor,ver和 planar四种帧内编码模式下以率失真优化算法去计算各个预测模式下的所述率 失真代价的结果数值。
59.在构建cnn网络的还有的实施例中,所述的帧内预测方法,所述初始cnn 网络由二层卷积层、一层池化层和二层全连接层构成,具体的层顺序依次如下: 第一卷积层(18*18*96)、第二卷积层(18*18*256)、池化层(9*9*256)、 第一全连接层(1024)和第二全连接层(4)。其中,第一卷积层参数为18*18*96, 第二卷积层参数为18*18*256,池化层参数为9*9*256,第一全连接层节点数为 1024,所述第二全连接层节点数为4。
60.h.264视频编码标准定义了4种宏块分割和4种子宏块分割方式:
61.宏块分割:16*16、16*8、8*16、8*8;
62.子宏块分割:8*8、8*4、4*8、4*4。
63.当某个宏块配置为8*8形式时,每个8*8宏块将按照子宏块的分割方法 来进一步分割;当某个宏块配置为16*16、16*8、8*16就不再按照子宏块分 割了。如图4所示:在一帧图像中100,宏块2,以像素为基本单位,由空间相 邻的像素构成的一块大小为w*h的长方形连续区域,w为水平方向像素个数, h为垂直方向像素个数,w*h代表宏块包含的像素个数,左侧像素3,大小为 1*h;上侧像素4,大小为w*1;左上侧像素5,大小1*1。上述各种宏块划分 方式均可运用到本方法中进行宏块划分。
64.cnn神经网络的目的是为了将所有编码块进行分类,类别为帧内编码模式 的总数。如图3所示的分类神经网络,在一帧图像100中划分宏块(例如划分 为18*18)后输入为当前宏块像素值及其左方和上方参考像素值和当前块使用 rdo选择(比较rdcost值的大小)的帧内预测模式(训练目标),通过第一卷 积层200和第二卷积层300,利用参数共享和局部连接提取局部特征,然后通过 一层池化层400,进一步筛选局部特征,最后通过第一全连接层500和第二全连 接层600将多维特征值降为2维特征,最后对应输出的学习目标,即分类。
65.通过图3的分类神经网络,将大量编码块及其通过率失真优化方法得到的 目标分类数据输入至网络,使网络不断学习,最后训练得到网络模型。在原来 的编码器每个宏块
帧内预测开始时使用该网络模型,则输出结果即为帧内编码 模式,从而代替了传统的率失真优化的方法。
66.为了有利于编码预测过程更好的进行硬件化实现,可以使用一种神经网络 进行选择帧内编码模式的方法,用卷积神经网络(cnn)对编码预测过程进行 机器学习,使用学习后的神经网络模型代替率失真优化算法选择出编码模式。 由于卷积神经网络中只存在乘法和加法计算,使用结构较简单,层数较少且有 一定准确率的神经网络进行编码预测,相比于使用率失真优化算法,在简化硬 件实现和加速预测过程方面有更好的性能。因此,本发明提出了一种使用卷积 神经网络选择帧内编码模式的方法,该方法针对帧内预测编码中的编码模式选 择更加易于硬件化实现,更快地选择出编码模式。
67.本发明的一些实施例包括,一种使用神经网络进行帧内预测编码的视频编 辑设备,包括处理器、存储器以及存储在所述存储器内的计算机程序,所述计 算机程序能够被所述处理器执行,以实现如前述任意一项所述的帧内预测方法。
68.本发明的一些实施例还包括,一种计算机可读介质,所述计算机可读介质 包括存储的计算机程序,其中,在所述计算机程序运行时控制所述计算机可读介 质所在设备执行如前述任意一项所述的帧内预测方法。
69.虽然在上文中详细说明了本发明的实施方式,但是对于本领域的技术人员 来说显而易见的是,能够对这些实施方式进行各种修改和变化。但是,应理解, 这种修改和变化都属于权利要求书中所述的本发明的范围和精神之内。而且, 在此说明的本发明可有其它的实施方式,并且可通过多种方式实施或实现。