本发明涉及图像分类、目标检测、人脸识别等领域,具体地说是一种基于手机平台的深度视频压缩框架的实现方法。
背景技术:
如今,视频成为大众进行信息传播的主要媒介。尤其是自媒体的发展,视频数据呈爆发式的增长。基于深度学习的视频压缩方法目前已经成为最近研究的主流方向。基于深度学习的视频压缩方法已经成为目前的主流方法的h.264和h.265的有力竞争者。
但是基于深度学习的视频压缩方法往往参数量非常大,由于手机设备往往存储量和计算力受限,所以根本无法部署到手机设备中,因此如何对部署到手机中的深度学习视频压缩算法进行压缩,成为了关键问题。
技术实现要素:
本发明的技术任务是解决现有深度学习视频压缩框架,非常大,很难部署到手机等嵌入式设备中的不足,提供一种基于手机平台的深度视频压缩框架的实现方法。本发明在精度损失不大的情况下,利用剪枝、量化和霍夫曼编码对深度视频压缩模型进行压缩,从而使得基于深度学习的视频压缩框架部署到手机中。
本发明解决其技术问题所采用的技术方案是:
本专利主要提出利用剪枝、量化、霍夫曼编码把表现优异的基于深度学习的视频压缩框架部署到手机平台上。
1、一种基于手机平台的深度视频压缩框架的实现方法,该方法的实现步骤如下:
s1、搭建整个视频压缩网络,使用多个不同场景的视频进行模型的训练,然后使用5000多个不同场景的视频进行模型的训练,一共迭代100万次,获得一个训练好的大网络,然后把网络的图模型和参数信息进行保存;
s2、然后把训练好的模型进行剪枝和量化处理;
s3、剪枝和量化都是对每一层分别进行,为了进一步减少存储,使用霍夫曼编码对整个网络中的权重进行霍夫曼编码,然后进行存储。
方案优选地,步骤1中利用tensorflow框架搭建的视频压缩网络,包括opticalflownet、mvencodernet、mvdecodernet、motioncompensationnet、residualencodernet、residualdecodernet这6个网络,工作过程如下:
s101、将视频拆分成每一帧图片,输入当前帧和上一重构帧到光流网络opticalflownet,获得当前帧的运动向量;
s102、然后把运动向量通过运动向量编码网络mvencodernet进行编码,获得编码后的结果,
s103、再对编码后的结果进行量化q得到量化后的结果,作为当前帧所需要存储的内容之一;
s104、把通过运动向量解码网络mvdecodernet后的结果即当前帧的重构运动向量,和上一重构帧的图片输入到运动补偿网络motioncompensationnet获得当前帧的预测帧;
s105、使用真实帧和和预测帧进行相减,获得预测帧没能包括的残差信息rt;
s106、对残差信息进行编码residualencodernet、量化q、熵编码存储,然后解码residualdecodernet获得残差的的重构结果,然后和预测帧相加获得最终的重构帧;
s107、压缩完的视频需要保存步骤s103量化后的运动向量的编码和步骤s106量化后的残差编码。
方案优选地,步骤2中步骤包括如下:
s201、首先是剪枝,通过对每层训练好的权重进行可视化,把绝对值小于0.5的数据全部剪掉,从而得到一个稀疏矩阵,对所得的稀疏矩阵进行存储,
把索引这个绝对位置存储的值,改为使用相对值diff,diff表示的是当前值距离上一个值的偏移量,设置最大的偏移量为8,这样就会使用3个bit存储每个偏移量,另外在12那个位置补充一个数0,使得idx为15的时候,偏移量为3;
s202、剪枝完之后,对剪枝完后的数据进行量化。
方案优选地,步骤s201中,使用csr进行矩阵的存储。
方案优选地,步骤s202中,使用传统的k-mean算法进行矩阵的量化。
方案优选地,步骤s202中,k-mean算法具体如下:
首先进行k-means中初始值的选择,然后进行采样,使用的k为11,就是选择11个点;
然后使用k-mean算法进行训练,获得最终的11个中心点,然后把数据聚类到相应的簇中,假设使用的是k=4,然后使用k-mean聚类,分别得到每个数据的簇,分别得到4个簇中心,然后只需要存储这4个数,每个数据索引我们也要存储一下;
当量化完之后,需要对模型进行一下调优,分别对每个参数反向求导,然后把每个簇的导数相加,然后利用这个加和梯度,对量化后的参数进行梯度下降——param-lr*gradient。
方案优选地,k-means中初始值的选择,使用基于数据密度的方法,就是根据数据出现的频率作为选择的概率,然后进行采样。
本发明的一种基于手机平台的深度视频压缩框架的实现方法与现有技术相比所产生的有益效果是:
本发明在精度损失不大的情况下,利用剪枝、量化和霍夫曼编码对深度视频压缩模型进行压缩,使得模型是原来的1/100倍左右,从而可以将基于深度学习的视频压缩框架很方便的部署到手机设备中。
附图说明
为了更清楚地描述本发明自动喷雾结合捕尘网的工作原理,下面将附上简图作进一步说明。
附图1是本发明所使用的的深度学习视频压缩框架的示意图;
附图2是本发明索引数字存储的示意图;
附图3是本发明使用k-mean算法进行矩阵量化的示意图;
附图4是本发明csr稀疏矩阵的存储图。
图中各标号表示:
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
请参阅图1-3,本发明的一种基于手机平台的深度视频压缩框架的实现方法,该方法的实现步骤如下:
s1、利用tensorflow框架,搭建整个视频压缩网络,包括如图1所示的opticalflownet、mvencodernet、mvdecodernet、motioncompensationnet、residualencodernet、residualdecodernet这6个网络,然后我们使用5000多个不同场景的视频进行模型的训练,一共迭代100万次,获得一个训练好的大网络。然后把网络的图模型和参数信息进行保存。
图1中视频压缩网络的工作过程如下:
s101、将视频拆分成每一帧图片,输入当前帧和上一重构帧到光流网络opticalflownet,获得当前帧的运动向量;
s102、然后把运动向量通过运动向量编码网络mvencodernet进行编码,获得编码后的结果,
s103、再对编码后的结果进行量化q得到量化后的结果,作为当前帧所需要存储的内容之一;
s104、把通过运动向量解码网络mvdecodernet后的结果即当前帧的重构运动向量,和上一重构帧的图片输入到运动补偿网络motioncompensationnet获得当前帧的预测帧;
s105、使用真实帧和和预测帧进行相减,获得预测帧没能包括的残差信息rt;
s106、对残差信息进行编码residualencodernet、量化q、熵编码存储,然后解码residualdecodernet获得残差的的重构结果,然后和预测帧相加获得最终的重构帧;
s107、压缩完的视频需要保存步骤s103量化后的运动向量的编码和步骤s106量化后的残差编码。
s2、然后把训练好的模型进行剪枝和量化处理;
然后把训练好的模型进行剪枝和量化处理,采用一层一层逐步进行剪枝量化,具体步骤如下:
s201、首先是剪枝,我们通过对每层训练好的权重进行可视化,发现每一层的数据大部分数据的绝对值都很小,在0附近,因此我们把绝对值小于0.5的数据全部剪掉,这样我们会的到一个稀疏矩阵,我们使用常用csr方法进行稀疏矩阵的存储,csr进行矩阵的存储如图4所示。
如图4所示,有个3*3的稀疏矩阵,然后我们需要存储的信息为保留下来的值[1,2,3,4,5,6],和每个数据对应的列索引[0,2,2,0,1,2],由于我们是按照行进行存储,因此我们只能值列表中那几个数字属于一行,因此我们使用一个列表进行存储[0,2,3,6]。表示1,2属于一行,3属于一行,4,5,6属于一行。因此我们为了存储这个稀疏矩阵,一共需要存储2*a n 1个数据,这要远远小于n*n。为了进行存储数据压缩,我们把索引[0,2,3,6]这个绝对位置存储的值,我们使用相对值,这样存储索引数字所需要的比特位就会减少。如图2所示,我们如果存储idx绝对值,一个数字所需要的bit位数为4个bits。但是如果我们存储的是diff,一个数字所需要的bit位数为3个bits。diff表示的是当前值距离上一个值的偏移量,为了使用更小的位数存储偏移量,这里我们设置最大的偏移量为8,这样就会使用3个bit存储每个偏移量,为了达到这种效果,我们在12那个位置补充一个数0,这样使得idx为15的时候,偏移量为3。
实验证明,通过剪枝我们能够让存储量减小到原来1/13,而且精度几乎没有损失。这样进一步证明了,深度学习的权重存在大量的冗余信息。
s202、剪枝完之后,我们开始对剪枝完后的数据进行量化,这里我们使用传统的k-mean算法进行矩阵的量化。
如图3所示,首先进行k-means中初始值的选择,这里我们使用基于数据密度的方法,就是根据数据出现的频率作为选择的概率,然后进行采样。我们使用的k为11,就是选择11个点。
然后我们使用k-mean算法进行训练,获得最终的11个中心点,然后把数据聚类到相应的簇中。具体如图3所示,图中我们假设使用的是k=4,然后使用k-mean聚类,分别得到每个数据的簇,图中不同颜色表示不同的簇,如图中蓝色2.09、2.12、1.92、1.87为一个簇,我们把他们统一用数据2.00表示,2.00是4个值得平均得到的。同样对于其他3个簇,我们使用同样的方法进行处理,分别得到4个簇中心2.00、1.50、0.00、-1.00。
然后我们只需要存储这4个数,每个数据占用32个bit,每个数据索引我们也要存储一下,但是索引只需要存储2个bit,这样相比较16个数据都存为32个bit,我们量化后的模型存储量只是原来的5/16。
当我们量化完之后,我们需要对模型进行一下调优,这里我们分别对每个参数反向求导,然后把每个簇的导数相加,然后利用这个加和梯度,对量化后的参数进行梯度下降——param-lr*gradient,如图3所示。
s3、剪枝和量化都是对每一层分别进行,为了进一步减少存储,我们使用霍夫曼编码对整个网络中的权重进行霍夫曼编码,然后进行存储。
实验证明,我们压缩后的模型存储只占原模型的2/205。一个1g多的模型我们压缩到几十兆进行存储。可以很方便的部署到手机设备中。
尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
除说明书所述的技术特征外,均为本专业技术人员的已知技术。
1.一种基于手机平台的深度视频压缩框架的实现方法,其特征在于,该方法的实现步骤如下:
s1、搭建整个视频压缩网络,使用多个不同场景的视频进行模型的训练,获得一个训练好的大网络,然后把网络的图模型和参数信息进行保存;
s2、然后把训练好的模型进行剪枝和量化处理;
s3、剪枝和量化都是对每一层分别进行,使用霍夫曼编码对整个网络中的权重进行霍夫曼编码,然后进行存储。
2.根据权利要求1所述的一种基于手机平台的深度视频压缩框架的实现方法,其特征在于,步骤s1中利用tensorflow框架搭建的视频压缩网络,包括opticalflownet、mvencodernet、mvdecodernet、motioncompensationnet、residualencodernet、residualdecodernet这6个网络。
3.根据权利要求2所述的一种基于手机平台的深度视频压缩框架的实现方法,其特征在于,步骤s1工作过程如下:
s101、将视频拆分成每一帧图片,输入当前帧和上一重构帧到光流网络opticalflownet,获得当前帧的运动向量;
s102、然后把运动向量通过运动向量编码网络mvencodernet进行编码,获得编码后的结果,
s103、再对编码后的结果进行量化q得到量化后的结果,作为当前帧所需要存储的内容之一;
s104、把通过运动向量解码网络mvdecodernet后的结果即当前帧的重构运动向量,和上一重构帧的图片输入到运动补偿网络motioncompensationnet获得当前帧的预测帧;
s105、使用真实帧和和预测帧进行相减,获得预测帧没能包括的残差信息rt;
s106、对残差信息进行编码residualencodernet、量化q、熵编码存储,然后解码residualdecodernet获得残差的的重构结果,然后和预测帧相加获得最终的重构帧;
s107、压缩完的视频需要保存步骤s103量化后的运动向量的编码和步骤s106量化后的残差编码。
4.根据权利要求1、2或3所述的一种基于手机平台的深度视频压缩框架的实现方法,其特征在于,步骤s2中步骤包括如下:
s201、首先是剪枝,通过对每层训练好的权重进行可视化,把绝对值小于0.5的数据全部剪掉,从而得到一个稀疏矩阵,对所得的稀疏矩阵进行存储,
把索引这个绝对位置存储的值,改为使用相对值diff,diff表示的是当前值距离上一个值的偏移量,设置最大的偏移量为8,这样就会使用3个bit存储每个偏移量,另外在12那个位置补充一个数0,使得idx为15的时候,偏移量为3;
s202、剪枝完之后,对剪枝完后的数据进行量化。
5.根据权利要求4所述的一种基于手机平台的深度视频压缩框架的实现方法,其特征在于,步骤s201中,使用csr进行矩阵的存储。
6.根据权利要求4所述的一种基于手机平台的深度视频压缩框架的实现方法,其特征在于,步骤s202中,使用传统的k-mean算法进行矩阵的量化。
7.根据权利要求6所述的一种基于手机平台的深度视频压缩框架的实现方法,其特征在于,步骤s202中,k-mean算法具体如下:
首先进行k-means中初始值的选择,然后进行采样,使用的k为11,就是选择11个点;
然后使用k-mean算法进行训练,获得最终的11个中心点,然后把数据聚类到相应的簇中,假设使用的是k=4,然后使用k-mean聚类,分别得到每个数据的簇,分别得到4个簇中心,然后只需要存储这4个数,每个数据索引我们也要存储一下;
当量化完之后,需要对模型进行一下调优,分别对每个参数反向求导,然后把每个簇的导数相加,然后利用这个加和梯度,对量化后的参数进行梯度下降——param-lr*gradient。
8.根据权利要求1、2、3、5、6或7所述的一种基于手机平台的深度视频压缩框架的实现方法,其特征在于,k-means中初始值的选择,使用基于数据密度的方法,即根据数据出现的频率作为选择的概率,然后进行采样。
技术总结