一种基于深度学习的提高视频压缩编码效率的方法与流程

文档序号:13984703阅读:278来源:国知局

本发明属于多媒体视频编码领域,针对于最新的视频编码标准,具体涉及一种基于深度学习的提高视频压缩编码效率的方法。



背景技术:

随着网络通信技术的发展,电脑端和移动端互联网观看视频的需求量不断增加,同时人们对于视频的质量要求也不断提升,这使得视频压缩技术不断得到发展。针对视频编码,国际标准化组织联合其他组织制定了一系列视频通信标准,包括h.261、h.262、h.263、h.264,mpeg-1、mpeg-2、mpeg-3,mpeg-4,avs等。现如今最新视频编码标准是高效视频编码标准hevc,也就是传统意义上的h.265,此标准是建立在h.264/avs基础之上的,力求做到在保证相同重建视频图像质量的前提下,视频编码效率提高50%以上。hevc作为现如今最优的视频编码标准,在帧内预测和帧间预测方面较之以前的编码标准都进行了优化,并引入了一种称为样本自适应补偿的新的编码工具,从而进一步提高解码图像的质量。虽然编码效率有所提高,但是在视频编码中的帧间预测部分还有很大的改善空间,包括提高帧间预测的编码速度、效率等等。近年来,深度学习得益于其优异的性能以及计算机运算速度的提高得到了突破性的发展,并广泛应用在模式识别等领域中。深度学习旨在使用深度卷积神经网络模型从数据中学习获得一系列参数,即学习训练获取参数,从而能广泛作用于实际应用中。深度学习是一种基于有监督或无监督的学习方法,在现如今的图像分类、语音识别、图像增强等领域发挥了很重要的作用,是现如今应用于各个领域中比较好的方法,往往高于其他的一些传统的方法。

现如今的视频压缩编码在帧内预测这块已经做的比较完善,同时帧内预测的时间也比较少,而编码所花费的大部分时间都是在帧间预测这块,要想更好的提高编码效率,必须着眼于帧间编码。从减少帧间压缩编码的时间角度和提高压缩编码效率的角度出发,将前沿的基于学习的深度学习方法引入视频压缩编码可以自适应的消除帧间预测中时间域与空间域的相关性,从而更好的提高视频压缩编码效率。因而,将深度学习应用在视频压缩编码领域已经势不可挡。



技术实现要素:

本发明主要考虑了视频压缩编码的流程以及深度学习在视频编码领域的可应用性。如何将深度学习前沿的机器学习方法应用于视频压缩领域,从而提高视频压缩编码效率以及速度是值得探讨的问题。

本发明解决其技术问题所采用的技术方案步骤如下:

步骤1:获取由基本的运动估计和运动补偿组成的原始视频帧间预测的峰值信噪比psnr1;

1-1.对相邻帧进行运动估计;

1-2.对相邻帧进行运动补偿;

1-3.计算原始视频帧间预测的psnr值psnr1;

步骤2:引入srcnn模型对帧间图片进行训练得到权重矩阵与偏差矩阵,对srcnn模型的参数进行修改,并对网络进行调整从而,得到最优的训练参数;

步骤3:将训练得到的模型对测试图片进行测试,得出由srcnn模型测试的结果psnr2,对psnr1与psnr2进行比较,得出srcnn模型应用于帧间预测编码的可行性;

步骤4:将srcnn模型应用于最新编码标准hevc提供的官方代码hm16.0中;

4-1.测试用了srcnn模型的帧间预测psnr值记做psnr3;

4-2.测试没用srcnn模型的帧间预测psnr值记做psnr4;

4-3.比较psnr3与psnr4并得出相关节结论。

步骤1-1所述的对相邻帧进行运动估计,具体实现如下:

对于原始视频序列中前一帧中的某一块ⅰ,在后一帧对应位置的块ⅱ周边的搜索区域内找到与之最相似的块ⅲ,其中前一帧设为第i帧,记做im_src;后一帧设为第i+1帧,记做im_actual;

比较块ⅰ和块ⅲ的位移变化并获得一个运动矢量;从而对于第i帧的每一块区域都能获得相应的运动矢量;

所述的搜索区域设置为20。

步骤1-2所述的对相邻帧进行运动补偿,具体实现如下:

用前后两帧运动估计得到的运动矢量来对第i帧图片的每一块区域进行补偿,即对于某一块得到的运动矢量直接加在该块上;从而对于第i帧的每一块都能获得一个运动补偿后的结果,最后得到图片im_output。

步骤1-3所述的计算原始视频帧间预测的psnr值psnr1,具体实现如下:

psnr值名为峰值信噪比,具体的psnr1计算公式如下

公式中的n表示图片的比特数,由于图片是8比特,因而n=8,mse指的是两张图片的均方误差,i和j分别为两张图片,m和n分别是图片的长和宽;在我们的方法中,i和j分别是图片im_actual与im_output;从而得到psnr1。

步骤2所述的引入srcnn模型对帧间图片进行训练得到权重矩阵与偏差矩阵,对srcnn模型的参数进行修改,并对网络进行调整从而,得到最优的训练参数;具体实现如下:

首先将前一帧(第i帧)的图片组成一个集合ⅰ,集合ⅰ相当于卷积神经网络的输入集合(需要将每一张图片分成f1×f1的小块当做输入),同时将后一帧(第i+1帧)的图片组成一个集合ⅱ,集合ⅱ相当于卷积神经网络的label,进行一个训练操作;在训练操作过程中,不断查看loss值,执行300000次迭代,以loss曲线为是否达到迭代次数标准,防止过拟合;训练最终得到一个权重矩阵文件和一个偏差矩阵文件;此模型训练需要三个网络,三个网络的作用以及执行方法具体如下:

2-1.小块提取和表示

f1(y)=max(0,w1*y+b1)(2)

其中,y是输入的图片,实际上为f1×f1的小块;w1是由训练第一层网络生成的一个权重矩阵文件,本质上是一个滤波器或者卷积核,大小为c×f1×f1×n1,n1代表滤波器的数量,c为常数;b1是由训练第一层网络生成的一个偏差矩阵文件,大小为n1×1的向量;

2-2.非线性映射

f2(y)=max(0,w2*f1(y)+b2)(3)

式中,f1(y)是第一层网络的输出,也就是第二层网络的输入,w2是由训练第二层网络生成的一个权重矩阵文件,大小为n1×1×1×n2,n2代表滤波器的数量;b2是由训练第二层网络生成的一个偏差矩阵文件,大小为n1×1的向量;

2-3.非线性映射

f3(y)=max(0,w3*f2(y)+b3)(4)

式中,f2(y)是第一层网络的输出,也就是第二层网络的输入,w3是由训练第三层网络生成的一个权重矩阵文件,大小为n2×f1×f1×c,b3是由训练第三层网络生成的一个偏差文件,大小为n1×1的向量;

2-4.在训练过程中不断将输出f3(y)与label进行比较,以两者之间最小的误差为基准,生成一组w1,w2,w3,b1,b2,b3。

步骤3所述的将训练得到的模型对测试图片进行测试,得出由srcnn模型测试的结果psnr2,对psnr1与psnr2进行比较,得出srcnn模型应用于帧间预测编码的可行性;具体实现如下:

3-1.对图片im_src进行双三次插值预处理操作;

3-2.将预处理后的图片作为输入,利用得到的参数进行三层网络卷积操作得到输出图片im_output_srcnn;

3-3.比较im_actual与im_output_srcnn的psnr值得到psnr2;

3-4.比较psnr2与psnr1之间的值,若psnr2大于psnr1,则该块为运动剧烈的块,若psnr2小于等于psnr1,则该块为运动静止不变的块。

步骤4所述的将srcnn模型应用于最新编码标准hevc提供的官方代码hm16.0中,具体实现如下:

4-1.在hevc官方提供的代码hm16.0中,找出用于帧间预测的图像帧buffer,并将图像帧buffer中运动剧烈的块找出来,将srcnn模型先作用于这些块,再执行后续的官方代码的操作,将测试用了srcnn模型的帧间预测psnr值记做psnr3;

4-2.将测试没用srcnn模型的帧间预测psnr值记做psnr4;

4-3.比较psnr3与psnr4并得出相关节结论,若图像帧buffer中用了srcnn模型的块,psnr值会提高,即帧间的编码效率是提高的。

本发明有益效果如下:

本发明通过引进srcnn模型,首先与最基本的帧间预测方法的结果进行比较,得出srcnn模型作用于帧间预测的可行性之后,再进一步将srcnn模型应用到最新的编码标准hevc中,从而提高视频编码的效果。本发明的创新性在于将深度学习应用在了帧间编码领域,这是深度学习所没有应用到的地方,创新程度比较高,并且也能提高帧间运动剧烈块的编码效率。

附图说明

图1:srcnn模型的网络结构图;

具体实施方式

下面结合具体实施方式对本发明进行详细的说明。

如图1所示,一种基于深度学习的提高视频压缩编码效率的方法,按照以下步骤进行操作:

步骤一、以foreman、flowers视频序列为例,获取原始帧间预测(最基本运动估计与运动补偿)后得到的图片与真实图片之间的峰值信噪比psnr1,获取此psnr1的具体方法如下:

a.基于块的运动估计:

运动估计是指从视频序列中抽取运动信息的一整套技术,研究的主要内容就是如何快速有效的获得足够的运动矢量。具体的方法是对于foreman视频序列的前一帧(第i帧,记做im_src)中的某一块在后一帧(第i+1帧,记做im_actual)对应位置的块周边的搜索区域内(在我们的方法中搜索区域设置为20)找到与之最相似的块,并比较二者位移变化并获得一个运动矢量。从而对于第i帧的每一块区域都能获得相应的运动矢量。

b.运动补偿:

运动补偿是是通过先前的局部图像来预测、补偿当前的局部图像,它是减少帧序列冗余信息的有效方法。在我们的方法中,用前后两帧运动估计得到的运动向量来对第i帧图片的每一块区域进行补偿,即对于某一块得到的运动向量直接加在此块上。从而对于第i帧的每一块都能获得一个运动补偿后的结果,最后得到图片im_output。

c.计算原始帧间预测的psnr值,记做psnr1:

psnr值名为峰值信噪比,它是目前衡量处理后图像品质的一个最官方的标准,具体的psnr计算公式如下

公式中的n表示图片的比特数,由于我们的图片是8比特,因而n=8,mse指的是两张图片的均方误差,i和j分别为两张图片,m和n分别是图片的长和宽。在我们的方法中,i和j分别是图片im_actual与im_output。从而得到psnr1。

步骤二、利用srcnn模型对帧间图片进行训练得到权重矩阵与偏差矩阵。

首先将前一帧(第i帧)的图片组成一个集合1,集合1相当于卷积神经网络的输入集合(需要将每一张图片分成f1×f1的小块当做输入),同时将后一帧的图片(第i+1帧)组成一个集合2,集合2相当于卷积神经网络的label,进行一个训练操作。在训练过程中,不断查看loss值,执行300000此迭代,以loss曲线为是否达到迭代次数标准,防止过拟合。训练最终得到一个权重矩阵文件和一个偏差矩阵文件。此模型训练需要三个网络,三个网络的作用以及执行方法具体如下:

a.小块提取和表示

f1(y)=max(0,w1*y+b1)(2)

其中y是上输入的图片,实际上为f1×f1的小块。w1是由训练第一层网络生成的一个权重矩阵文件,本质上是一个滤波器或者卷积核,大小为c×f1×f1×n1,n1代表滤波器的数量c为常数。b1是由训练第一层网络生成的一个偏差文件,大小为n1×1的向量。

b.非线性映射

f2(y)=max(0,w2*f1(y)+b2)(3)

式中f1(y)是第一层网络的输出,也就是第二层网络的输入,w2是由训练第二层网络生成的一个权重矩阵文件,大小为n1×1×1×n2,b2是由训练第二层网络生成的一个偏差文件,大小为n1×1的向量。

c.非线性映射

f3(y)=max(0,w3*f2(y)+b3)(4)

式中f2(y)是第一层网络的输出,也就是第二层网络的输入,w3是由训练第三层网络生成的一个权重矩阵文件,大小为n2×f1×f1×c,b3是由训练第三层网络生成的一个偏差文件,大小为n1×1的向量。

在训练中,不断将输出f3(y)与label进行比较,以两者之间最小的误差为基准,生成一组w1,w2,w3,b1,b2,b3。

步骤三、将训练得到的参数对测试图片进行测试。

在执行此步骤时,我们的方法是对图片im_src进行了双三次插值预处理操作,然后将预处理的图片作为输入利用得到的参数进行三层网络卷积操作得到输出图片im_output_srcnn,通过比较im_actual与im_output_srcnn的psnr值得到psnr2,比较psnr2与psnr1之间的值。在我们的实验结果中,对于运动剧烈的块,psnr2比psnr1要大0.2~0.5db左右,而对于运动静止不变的块,psnr2比psnr1要小。这样证明了srcnn模型在用于帧间预测这一块对于运动剧烈的块是比较有用的

步骤四、将srcnn模型应用于hm代码中

在hevc官方提供的代码hm16.0中,找出用于帧间预测的图像帧buffer,并在图像帧buffer中运动剧烈的块找出来,将我们的srcnn模型先作用于这些块中再执行后续的官方代码的操作,并比较用了srcnn模型进行视频编码的psnr值psnr3与没用srcnn模型进行视频编码的psnr4之间的大小关系。得出的结果是对于帧中用了srcnn模型的块,psnr值会提高,即帧间的编码效率是提高的。

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