本发明涉及信息压缩、编解码领域,具体地说是一种基于自编码器的光流信息压缩方法及装置。
背景技术:
在数字媒体时代,大量的图像视频数据从日常生活、网络社交、治安监控、工业生产等领域产生并存储下来,需要耗费大量的存储空间。目前主流的视频压缩格式h264压缩率仍有提升空间,基于块的运动估计也会产生色差,尚未普及的h265由于压缩效率低,因此不被看好。
光流(opticalflow)法是目前运动图像分析的重要方法,它的概念是由jamesj.gibson于20世纪40年代首先提出的,是指时变图像中模式运动速度。因为当物体在运动时,它在图像上对应点的亮度模式也在运动。
鉴于人工智能领域的各项任务已经大规模应用神经网络和深度学习技术,因此借助神经网络对数据进行压缩很有前景。自编码器是一种能通过无监督学习,学到输入数据高效表示的人工神经网络;它不需要专门标注训练数据,损失是基于输入输出的差值来计算的,输入数据通过神经网络进行表示的过程可以被认为是一种编码,其维度通常小于输入数据,从而达到压缩和降维的作用。
故如何利用自编码器实现光流信息的压缩,提高压缩效率是目前亟待解决的技术问题。
专利号为cn106973293a的专利文献公开了一种基于视差预测的光场图像编码方法,包括:将光场图像转换为伪视频序列;在编码端,利用深度神经网络预测伪视频序列中已编码帧和当前帧之间的光流信息,并将其转换为视差信息,然后进行运动补偿,并计算残差;最后,将残差量化编码写入码流;在解码端,采用与编码端一致的方法,利用深度神经网络预测已解码帧和当前帧之间的光流信息,并将其转换为对应解码块的运动矢量,通过运动补偿得到当前解码块的预测块,最后利用码流中的残差信息构建重建块。但是该技术方案不能利用自编码器实现光流信息的压缩,提高压缩效率。
专利号为cn107105278b的专利文献公开了一种运动矢量自动生成的视频编解码框架,无需进行运动矢量预测和运动矢量编码传输,其包括:编码端与解码端;其中:所述编码端,根据当前参考帧的视频数据内容,并基于通过学习的方法构建的像素级的运动光场矢量生成网络,来预测当前帧视频像素的光流信息,再结合输入的块模式信息计算对应块的运动矢量,最终将编码的残差信息传输至解码端;所述解码端,对残差信息进行解码,获得重构参考帧数据,并采用与编码端相同的方法获得每一重构参考帧数据的运动矢量,再进行视频数据重建。但是该技术方案不能利用自编码器实现光流信息的压缩,提高压缩效率。
技术实现要素:
本发明的技术任务是提供一种基于自编码器的光流信息压缩方法及装置,来解决如何利用自编码器实现光流信息的压缩,提高压缩效率的问题。
本发明的技术任务是按以下方式实现的,一种基于自编码器的光流信息压缩方法,该方法是将光流特征通过训练好的基于自编码器(encoder)的神经网络模型进行提取,生成一个特征图(featuremap),通过量化(quantize)降低数据的存储空间,再用熵编码将量化后的数据进行进一步编码压缩;解码时,将已保存的熵编码数据进行熵解码并反量化,再通过结构相反的解码器(decoder)进行解码,从而使特征图恢复为两通道的光流信息。
作为优选,该方法具体如下:
s1、搭建基于自编码器的神经网络模型:设置编码所需的卷积层的层数、卷积核大小、padding的方法及strides的数量;
s2、使用训练集对基于自编码器的神经网络模型进行训练:将每一个光流图信息的标签设置为自身,通过mse和bpp构建损失函数,使用adam优化器进行优化,经过多次迭代后得到训练好的基于自编码器的神经网络模型;
s3、对光流图信息进行编码得到特征图:将光流图信息输入到训练好的基于自编码器的神经网络模型中的encoder部分,通过一步步卷积计算得到特征图;
s4、对特征图进行量化:量化的方式包括添加均匀噪声和软量化;添加均匀噪声是在训练中,添加噪声来代替量化的过程,量化前后的差值类似一种均匀噪声,通过人为添加噪声来进行模拟;
s5、熵编码:对量化后的特征图进行二进制化得到二进制数,再对二进制数进行算数编码;
s6、保存生成的序列化文件:将熵编码后的文件进行序列化保存;
s7、熵解码:把序列化保存的文件读取,先转化为十进制小数,即最高位前面加小数点变为小数,再根据已有的概率密度函数进行解码;
s8、解码:熵解码后得到一个和熵编码之前大小完全相同的特征图,再通过构建一个和编码网络相反的基于自编码器的神经网络模型,用反卷积层代替卷积层,将特征图恢复为两通道的光流信息,并在保存时进行一步取整量化。
作为优选,所述基于自编码器的神经网络模型至少包括一组通过设置strides降采样的卷积层、一组设置strides上采样的反卷积层和一组用于量化和熵编码的层。
更优地,所述基于自编码器的神经网络模型使用gdn激活函数,并结合量化和熵编码进行光流信息压缩。
更优地,所述步骤s5中熵编码过程中对于非二进制数,先进行二进制化或在算数编码强转换成二进制数,再统计所有二进制符号的概率密度函数,对已二进制化的符号的每一个比特根据统计得到的概率密度函数进行算数编码。
更优地,所述步骤s6中序列化文件使用pickle序列化的包进行处理。
一种基于自编码器的光流信息压缩装置,该装置包括,
神经网络模型搭建单元,用于搭建基于自编码器的神经网络模型,并设置编码所需的卷积层的层数、卷积核大小、strides的数量及padding的方法;
训练单元,用于使用训练集对基于自编码器的神经网络模型进行训练,将每一个光流图信息的标签设置为自身,通过mse和bpp构建损失函数,使用adam优化器进行优化,经过多次迭代后得到训练好的基于自编码器的神经网络模型;
特征图获取单元,用于对光流图信息进行编码得到特征图:将光流图信息输入到训练好的基于自编码器的神经网络模型中的encoder部分,通过一步步卷积计算得到特征图;
特征图量化单元,用于对特征图进行量化,量化的方式包括添加均匀噪声和软量化;添加均匀噪声是在训练中,添加噪声来代替量化的过程,量化前后的差值类似一种均匀噪声,通过人为添加噪声来进行模拟;
熵编码单元,用于对量化后的特征图进行二进制化得到二进制数,再对二进制数进行算数编码;
序列化文件保存单元,用于将熵编码后的文件进行序列化保存;
熵解码单元,用于把序列化保存的文件读取,先转化为十进制小数,即最高位前面加小数点变为小数,再根据已有的概率密度函数进行解码;
解码单元,用于熵解码后得到一个和熵编码之前大小完全相同的特征图,再通过构建一个和编码网络相反的基于自编码器的神经网络模型,用反卷积层代替卷积层,将特征图恢复为两通道的光流信息,并在保存时进行一步取整量化。
作为优选,所述基于自编码器的神经网络模型至少包括一组通过设置strides降采样的卷积层、一组设置strides上采样的反卷积层和一组用于量化和熵编码的层。
作为优选,所述基于自编码器的神经网络模型使用gdn激活函数,并结合量化和熵编码进行光流信息压缩。
更优地,所述序列化文件保存单元使用pickle序列化的包进行文件处理保存。
本发明的基于自编码器的光流信息压缩方法及装置具有以下优点:
(一)本发明基于深度学习的自编码器的神经网络架构,结合量化和熵编码实现了对光流信息的压缩,可用于优化光流信息存储空间,提升视频压缩效果;本发明应用于光流信息编解码和压缩领域,通过对已有的光流进行压缩或二次压缩,成倍的减少存储空间,减少存储成本;压缩的光流信息主要用于视频压缩,将压缩的光流信息用于视频运动估计部分,替代传统的运动估计方法;
(二)本发明的基于自编码器的神经网络模型包括一组通过设置strides降采样的卷积层、一组设置strides上采样的反卷积层和一组用于量化和熵编码的层;其中,卷积层的卷积核大小和个数可以通过多次实验得到较优的组合,卷积层的激活函数可以使用gdn(generalizeddivisivenormalization),其已经被验证了对图像压缩和超分辨率的任务有较好的效果;
(三)本发明运用开源常用的开发语言和库,实现了光流压缩的方法,可以嵌入视频压缩的流程内,借助云进行内外部推广与应用。
附图说明
下面结合附图对本发明进一步说明。
附图1为基于自编码器的光流信息压缩方法的流程框图;
附图2为实施例2的流程框图。
具体实施方式
参照说明书附图和具体实施例对本发明的一种基于自编码器的光流信息压缩方法及装置作以下详细地说明。
实施例1:
本发明的基于自编码器的光流信息压缩方法,该方法是将光流特征通过训练好的基于自编码器(encoder)的神经网络模型进行提取,生成一个特征图(featuremap),通过量化(quantize)降低数据的存储空间,再用熵编码将量化后的数据进行进一步编码压缩;解码时,将已保存的熵编码数据进行熵解码并反量化,再通过结构相反的解码器(decoder)进行解码,从而使特征图恢复为两通道的光流信息;如附图1所示,具体如下:
s1、搭建基于自编码器的神经网络模型:设置编码所需的卷积层的层数、卷积核大小、padding的方法及strides的数量;卷积层的设计原则通常是卷积核尺寸先大后小,数量先少后多或前后一致,在某些层设置strides>1来缩小特征图的尺寸;
s2、使用训练集对基于自编码器的神经网络模型进行训练:将每一个光流图信息的标签设置为自身,通过mse和bpp构建损失函数,使用adam优化器进行优化,经过多次迭代后得到训练好的基于自编码器的神经网络模型;
s3、对光流图信息进行编码得到特征图:将光流图信息输入到训练好的基于自编码器的神经网络模型中的encoder部分,通过一步步卷积计算得到特征图;
s4、对特征图进行量化:量化的方式包括添加均匀噪声和软量化;添加均匀噪声是在训练中,添加噪声来代替量化的过程,量化前后的差值类似一种均匀噪声,通过人为添加噪声来进行模拟;
s5、熵编码:对量化后的特征图进行二进制化得到二进制数,再对二进制数进行算数编码;对于非二进制数,先进行二进制化或在算数编码强转换成二进制数,再统计所有二进制符号的概率密度函数,对已二进制化的符号的每一个比特根据统计得到的概率密度函数进行算数编码;
s6、保存生成的序列化文件:将熵编码后的文件进行序列化保存;使用pickle序列化的包进行处理;
s7、熵解码:把序列化保存的文件读取,先转化为十进制小数,即最高位前面加小数点变为小数,再根据已有的概率密度函数进行解码;
s8、解码:熵解码后得到一个和熵编码之前大小完全相同的特征图,再通过构建一个和编码网络相反的基于自编码器的神经网络模型,用反卷积层代替卷积层,将特征图恢复为两通道的光流信息,并在保存时进行一步取整量化。
其中,基于自编码器的神经网络模型包括一组通过设置strides降采样的卷积层、一组设置strides上采样的反卷积层和一组用于量化和熵编码的层。基于自编码器的神经网络模型使用gdn激活函数,并结合量化和熵编码进行光流信息压缩。
实施例2:
本发明主要包括编码器和解码器两部分,如附图2所示,具体工作流程如下:
(1)、光流输入到编码器的卷积层1、卷积层2和卷积层3进行编码得到特征图;
其中,卷积层1的核数(kernal):256,核数尺寸(kernalsize):9×9,卷积步长(stride):4,填充(padding)“same”;
卷积层2的核数(kernal):192,核数尺寸(kernalsize):7×7,卷积步长(stride):2,填充(padding)“same”;
卷积层3的核数(kernal):128,核数尺寸(kernalsize):3×3,卷积步长(stride):2,填充(padding)“same”;
(2)、对特征图进行量化和熵编码;
(3)、保存编码后的压缩文件;
(4)、对压缩文件进行反量化和熵解码得到一个和熵编码之前大小完全相同的特征图;
(5)、对和熵编码之前大小完全相同的特征图输入到解码器的反卷积层1、反卷积层2和反卷积层3,将特征图恢复为两通道的光流信息并输出;
其中,反卷积层1的核数(kernal):128,核数尺寸(kernalsize):3×3,卷积步长(stride):2,填充(padding)“same”;
反卷积层2的核数(kernal):192,核数尺寸(kernalsize):7×7,卷积步长(stride):2,填充(padding)“same”;
反卷积层3的核数(kernal):3,核数尺寸(kernalsize):9×9,卷积步长(stride):4,填充(padding)“same”。
实施例3:
本发明的基于自编码器的光流信息压缩装置,该装置包括,
神经网络模型搭建单元,用于搭建基于自编码器的神经网络模型,并设置编码所需的卷积层的层数、卷积核大小、strides的数量及padding的方法;
训练单元,用于使用训练集对基于自编码器的神经网络模型进行训练,将每一个光流图信息的标签设置为自身,通过mse和bpp构建损失函数,使用adam优化器进行优化,经过多次迭代后得到训练好的基于自编码器的神经网络模型;
特征图获取单元,用于对光流图信息进行编码得到特征图:将光流图信息输入到训练好的基于自编码器的神经网络模型中的encoder部分,通过一步步卷积计算得到特征图;
特征图量化单元,用于对特征图进行量化,量化的方式包括添加均匀噪声和软量化;添加均匀噪声是在训练中,添加噪声来代替量化的过程,量化前后的差值类似一种均匀噪声,通过人为添加噪声来进行模拟;
熵编码单元,用于对量化后的特征图进行二进制化得到二进制数,再对二进制数进行算数编码;
序列化文件保存单元,用于将熵编码后的文件进行序列化保存;
熵解码单元,用于把序列化保存的文件读取,先转化为十进制小数,即最高位前面加小数点变为小数,再根据已有的概率密度函数进行解码;
解码单元,用于熵解码后得到一个和熵编码之前大小完全相同的特征图,再通过构建一个和编码网络相反的基于自编码器的神经网络模型,用反卷积层代替卷积层,将特征图恢复为两通道的光流信息,并在保存时进行一步取整量化。
其中,基于自编码器的神经网络模型包括一组通过设置strides降采样的卷积层、一组设置strides上采样的反卷积层和一组用于量化和熵编码的层。基于自编码器的神经网络模型使用gdn激活函数,并结合量化和熵编码进行光流信息压缩。序列化文件保存单元使用pickle序列化的包进行文件处理保存。
自编码器简单的训练它使得输入输出相同并没有很大意义,因此通过添加内部的尺寸限制,如bottlenecklayer,以及训练数据增加噪声,并训练自编码器使其恢复原有的数据,这样强制它学习到数据的高效表示;得到高效表示之后,可以对其量化来达到进一步压缩的效果。因为有时精度较高的浮点数占用大量存储空间,但小数点后过多位数对实际任务并没有很大益处。然而在神经网络的反向传播中,是通过梯度下降来优化,但量化是一个不可导的过程,无法用于梯度计算的过程。因此有多种可以替代直接量化的方法,如添加均匀噪声、软量化等。量化之后的特征值还需要进行熵编码来进一步压缩,常用的熵编码如算数编码,哈夫曼编码,香农编码等,重要的是设计高效的概率模型。
熵编码属于对数据的无损压缩,通过识别和消除统计冗余的部分来减少比特,这使得其在执行压缩时不会丢失信息。其目的在于用更少的位(比原始数据表示所需要的位)来显示离散数据,同时在压缩的过程中不会有信息损失。
这种基于自编码器和熵编码对光流信息进行压缩的方法可以在低比特率的情况下获得压缩后的光流信息,用于视频压缩的运动估计部分信息的存储和压缩。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
1.一种基于自编码器的光流信息压缩方法,其特征在于,该方法是将光流特征通过训练好的基于自编码器的神经网络模型进行提取,生成一个特征图,通过量化降低数据的存储空间,再用熵编码将量化后的数据进行进一步编码压缩;解码时,将已保存的熵编码数据进行熵解码并反量化,再通过结构相反的解码器进行解码,从而使特征图恢复为两通道的光流信息。
2.根据权利要求1所述的基于自编码器的光流信息压缩方法,其特征在于,该方法具体如下:
s1、搭建基于自编码器的神经网络模型:设置编码所需的卷积层的层数、卷积核大小、padding的方法及strides的数量;
s2、使用训练集对基于自编码器的神经网络模型进行训练:将每一个光流图信息的标签设置为自身,通过mse和bpp构建损失函数,使用adam优化器进行优化,经过多次迭代后得到训练好的基于自编码器的神经网络模型;
s3、对光流图信息进行编码得到特征图:将光流图信息输入到训练好的基于自编码器的神经网络模型中的encoder部分,通过一步步卷积计算得到特征图;
s4、对特征图进行量化:量化的方式包括添加均匀噪声和软量化;
s5、熵编码:对量化后的特征图进行二进制化得到二进制数,再对二进制数进行算数编码;
s6、保存生成的序列化文件:将熵编码后的文件进行序列化保存;
s7、熵解码:把序列化保存的文件读取,先转化为十进制小数,即最高位前面加小数点变为小数,再根据已有的概率密度函数进行解码;
s8、解码:熵解码后得到一个和熵编码之前大小完全相同的特征图,再通过构建一个和编码网络相反的基于自编码器的神经网络模型,用反卷积层代替卷积层,将特征图恢复为两通道的光流信息,并在保存时进行一步取整量化。
3.根据权利要求1所述的基于自编码器的光流信息压缩方法,其特征在于,所述基于自编码器的神经网络模型至少包括一组通过设置strides降采样的卷积层、一组设置strides上采样的反卷积层和一组用于量化和熵编码的层。
4.根据权利要求1或2或3所述的基于自编码器的光流信息压缩方法,其特征在于,所述基于自编码器的神经网络模型使用gdn激活函数,并结合量化和熵编码进行光流信息压缩。
5.根据权利要求2所述的基于自编码器的光流信息压缩方法,其特征在于,所述步骤s5中熵编码过程中对于非二进制数,先进行二进制化或在算数编码强转换成二进制数,再统计所有二进制符号的概率密度函数,对已二进制化的符号的每一个比特根据统计得到的概率密度函数进行算数编码。
6.根据权利要求2所述的基于自编码器的光流信息压缩方法,其特征在于,所述步骤s6中序列化文件使用pickle序列化的包进行处理。
7.一种基于自编码器的光流信息压缩装置,其特征在于,该装置包括,
神经网络模型搭建单元,用于搭建基于自编码器的神经网络模型,并设置编码所需的卷积层的层数、卷积核大小、strides的数量及padding的方法;
训练单元,用于使用训练集对基于自编码器的神经网络模型进行训练,将每一个光流图信息的标签设置为自身,通过mse和bpp构建损失函数,使用adam优化器进行优化,经过多次迭代后得到训练好的基于自编码器的神经网络模型;
特征图获取单元,用于对光流图信息进行编码得到特征图:将光流图信息输入到训练好的基于自编码器的神经网络模型中的encoder部分,通过一步步卷积计算得到特征图;
特征图量化单元,用于对特征图进行量化,量化的方式包括添加均匀噪声和软量化;
熵编码单元,用于对量化后的特征图进行二进制化得到二进制数,再对二进制数进行算数编码;
序列化文件保存单元,用于将熵编码后的文件进行序列化保存;
熵解码单元,用于把序列化保存的文件读取,先转化为十进制小数,即最高位前面加小数点变为小数,再根据已有的概率密度函数进行解码;
解码单元,用于熵解码后得到一个和熵编码之前大小完全相同的特征图,再通过构建一个和编码网络相反的基于自编码器的神经网络模型,用反卷积层代替卷积层,将特征图恢复为两通道的光流信息,并在保存时进行一步取整量化。
8.根据权利要求7所述的基于自编码器的光流信息压缩装置,其特征在于,所述基于自编码器的神经网络模型至少包括一组通过设置strides降采样的卷积层、一组设置strides上采样的反卷积层和一组用于量化和熵编码的层。
9.根据权利要求7所述的基于自编码器的光流信息压缩装置,其特征在于,所述基于自编码器的神经网络模型使用gdn激活函数,并结合量化和熵编码进行光流信息压缩。
10.根据权利要求7或8或9所述的基于自编码器的光流信息压缩装置,其特征在于,所述序列化文件保存单元使用pickle序列化的包进行文件处理保存。
技术总结