本发明涉及时序性图像预测改进方法,尤其涉及一种基于lstm和dcgan的时序性图像预测方法。
背景技术:
现阶段,图像识别与深度学习的结合已然成为计算机视觉方面的研究热点,但就目前的发展形势而言仍有很大的局限性,其最大程度表现在识别的对象是离散的、彼此无关的,且主要以分类为主。为更好的拓展相关业务需求,图像识别近期的发展侧重点已经放在了图像彼此相关联的时序性上。通过有效的学习可以预测未来指定时刻图像特征的变化,可将传统分类操作拓展到预测操作上了。时序性图像的研究可以在多种应用中受益,如短时强降雨预报、视频分类、行为识别等。
针对时序性数据的研究,过去有很多序列建模的算法被提出。其中,最著名的就是hmm隐马尔科夫模型。但hmm的计算量太大,即使使用动态规划viterbi算法去实现,在状态过多的时候也会出现不可计算问题。幸运的是,上世纪80年代末循环神经网络(rnn)的理念被提出。rnn多用于时序数据的学习,它具有端到端可导、特定框架及可通过正则化的方法,如权重衰减、dropout机制、限制自由度等改善过拟合的特点。在过去的几年中,rnn在语音识别、语言建模、翻译、图片描述等问题上已经取得一定成功。但传统的rnn存在长期依赖问题(long-termdependencies)。
之后,在1997年hochreater和schmidhuber提出了rnn的改进版本——长短期记忆神经网络lstm,并在近期被alexgraves进行了改良和推广。在很多问题上,基于lstm的模型,有效解决了rnn存在的梯度消失和梯度爆炸以及长期记忆不足的问题。现如今lstm已经在诸多领域得到应用和发展,如choetal在2014年提出了gatedrecurrentunit(gru),它将遗忘门和输入门合成了一个单一的更新门,同样混合了细胞状态和隐藏状态,最终的模型比标准的lstm模型要简单。yao等人提出depthgatedrnn。xingjianshi,zchen等人提出了一种将卷积与lstm相结合的新型网络,该模型可以同时学习到空间和时间上特征。yayaheryadi等人将stackedlstm和cnn-lstm用于识别欺诈性交易信息。xhan等人利用双向lstm实现帮客户找到最适合的穿着搭配方式。swang等人在fpga上使用结构化压缩技术实现了高效的lstm。jli等人基于双向lstm和序列采样来优化图像描述。
dcgan出色的特征捕捉和生成能力在很多场景中得到了证实。dcgan将gan从多层感知机mlp结构扩展到cnn结构,摒弃池化层的同时还在卷积操作与激活函数之间加入batchnormalization实现局部归一化,从而解决了网络模型在训练时梯度消失和梯度弥散等问题,保留了出色的生成数据能力和cnn特征提取的优点,使它在图像分析和处理能力上得到提升。它在celeba、lsun和googleimagenet这种现实世界的真实大规模数据集上训练,结果令人满意。
技术实现要素:
发明目的:针对以上问题,本发明提出一种基于lstm和dcgan的时序性图像预测方法,可有效提高图像预测的精确度。
技术方案:为实现本发明的目的,本发明所采用的技术方案是:一种基于lstm和dcgan的时序性图像预测方法,包括步骤:
(1)构建dcgan编码器,包括编码模块和解码模块,两个模块之间接入lstm时序预测网络;
(2)对构建的编码器进行训练,前馈传播完成后,计算损失函数,对编码器进行整体参数调优;
(3)dcgan编码器内部,编码模块、解码模块和lstm的连接处都采用栈式级联策略;
(4)使用lstm时序预测网络,针对输入的时间序列,进行未来时段输出序列预测。
进一步地,所述步骤1中,编码模块对收集的图像提取空间特征,lstm时序预测网络对提取到的特征进行预测,解码模块对预测的结果进行图像复原。
进一步地,所述步骤2中,在编码器的损失函数中引入正则化概念优化算法;在网络训练过程中,采用学习率衰减策略加快训练速度。
进一步地,所述步骤3中,所述栈式级联策略对每一层网络进行单独训练,并将输出作为下一层的输入。
进一步地,所述步骤4具体为:
(4.1)由编码模块获取输入时间序列,将序列转化为固定大小状态向量,完成关于输入时间序列的时序特征提取,将整个输入序列的信息量保存在lstm神经元的细胞状态st中;
(4.2)lstm预测模块将上述神经元的细胞状态作为该模块细胞起始状态,输出未来时段的预测序列。
所述步骤4包括单帧预测和序列预测;单帧预测完成预测下一帧图像;序列预测输出固定时段的多个连续帧图像。
有益效果:本发明通过dcgan很好的降低了特征维度,解决了高维不可计算的问题;改进后的lstm能够更好地学习到时序性特征,从而实现更精确的预测;整体网络结构在连接方法上遵从栈式级联策略,为控制网络深度提供保障。本发明提出的时序性图像预测模型架构理论上适用于所有的时序性图像。
附图说明
图1是本发明方法流程图;
图2是编码器结构图;
图3是栈式级联结构图;
图4是单帧预测原理图;
图5是序列预测原理图;
图6是训练损失度比较图;
图7是编码器综合评测图;
图8是单帧预测训练比较图;
图9是序列预测损失度比较图。
具体实施方式
下面结合附图和实施例对本发明的技术方案作进一步的说明。
本发明所述的基于lstm和dcgan的时序性图像预测方法,包括步骤:
(1)构建dcgan编码器,包括编码模块和解码模块,两个模块之间接入学习时序图像的lstm网络来预测特征分布;
在编码模块中,设计四层卷积、四层下采样的网络结构;解码模块中,采用四层反卷积和四层上采样;两个模块之间接入学习时序图像的lstm网络来预测特征分布。如图1所示,首先收集图像,并将其输入到编码模块中提取空间特征;将提取到的特征输入到lstm中进行预测,并将预测的结果经过解码模块进行图像复原。
训练编码器需要进行以下两步具体操作:前馈传播和整体参数调优。前馈传播即将图像输入到编码器中,经过相关操作最终得到复原的数据。在前馈传播完成后,就该通过误差反向传播算法对整个编码器进行微调。
假设有训练样本n(xσ,yσ),其中,σ∈[1,n],输入为
(2)在网络结构设计上,采用栈式级联策略;dcgan编码器内部,即编码模块、解码模块和lstm的连接处都采用栈式级联策略,对每一层网络进行单独训练;
在网络结构设计上,采用栈式级联策略。这种策略能使每一层网络都可进行单独训练,相当于初始化了一个合理的数值。栈式级联使得每一层都能单独训练,可以保证降维特征的可控性。栈式级联可以理解为将复杂问题逐层降维,直接使用降维后的特征值进行二次训练,因此可以增加任意的层数。经过独立的训练,可以很容易地得到每一个中间层的值,将它们串联之后再进行网络调优。在本发明中,dcgan编码器内部和lstm连接处都采用了栈式级联策略。
如图2所示,针对第一个隐含层进行独立训练,得到原始输入的一阶特征表示h1。将h1作为输入,对其再一次进行独立编码训练,并同时获取二阶特征表示h2,第三层利用h2作为输入,训练生成高维数据。将这3个隐含层结合起来,就构成了栈式连接的编码器网络,如图3所示。除了最后一层外,每一层训练所依据的损失函数是由各层的预测输出与真实输入差值的平方定义的。
(3)优化算法,在编码器的损失函数中引入正则化概念;在之后的网络训练过程中,采用学习率衰减策略以加快训练速度;
为了使得模型具备较好泛化能力,避免过度拟合以达到良好的均衡性,引入了正则化概念。其中,l1、l2正则可分别表达为公式2和3:
l1(θ)=α∑i|θi|(2)
正则项之前α是一个系数,θi可表示成每层权重的倒数,表示对于学习到过高权重的层,需降低其更新程度。相反,对于层中学习到过低的权重的结点反而要提高其更新程度,从而达到层中所有权值平摊任务的目的。因此,本发明在编码器的损失函数构建中,在损失函数后又加上了l2正则化式子,如公式4所示,其中,α设为0.0001。
在之后的网络训练过程中,采用学习率衰减策略以加快训练速度。原因是,如果学习率固定不变,当到了训练后期会导致梯度在收敛的附近摆动不定。较大的学习率会实现非常快的收敛,因此在初期会采用一个较大的值;到了后期,较小的学习率可以使得收敛步伐减小,避免结果摆动。学习率衰减策略可以表示为公式5。每当训练一定次数,学习率将会减少一点。其中,decay_rate为初始系数,epochi表示第i次训练,α0是初始学习率。
(4)使用lstm时序预测网络,针对输入的时间序列,进行未来时段输出序列预测;
首先,由编码模块获取输入时间序列,进而将序列转化为固定大小状态向量,从而完成关于输入时间序列的时序特征提取,此时整个输入序列的信息量将会保存在lstm神经元的细胞状态st中;之后,lstm预测模块将上述神经元的细胞状态作为该模块细胞起始状态,输出未来时段的预测序列。
该细胞中包含三个门控,并通过每个时间步长来完成一次次权重更新,完整的梯度通过使用bptt来进行计算。在构建预测雷达图像的lstm模型中,本发明将原始的点乘计算方式转化为卷积相乘。在构建预测雷达图像的lstm模型中,分为单帧预测和序列预测。单帧预测只完成预测下一帧图像;序列预测则要输出固定时段的多个连续帧图像。
单步预测原理如图4所示,假设有数据集x={x1,x2,…,xn},目的是通过前n-1个时序数据生成第n个数据。根据lstm细胞结构,发现每一个细胞都有一个固定输出。可以将这个输出理解为对下一个时刻的预测,这样一来对于去掉最后一项的数据集x而言,网络输出的将会是一个新的预测序列
序列预测是在单帧预测的基础之上进行的,结构更加复杂,如图5所示。考虑到每张图片在经过一个lstm网络后,其输出就是下一帧预测。理论上当t1时刻的图像经过n次更新后,会输出tn+1时刻的状态。假设根据数据集{x1,x2,…,xn-t},预测后面的时序序列图像,那么就需要原数据经过t层状态更新才可得到预测序列
下面通过具体的实验将本发明的方法与现有技术进行性能对比。
先对图像特征提取和图像复原的神经网络进行训练。对图像进行编码和解码的dcgan网络模块深度都设定为四层,并将公式4作为损失函数进行最小化训练。由于全局采用栈式级联策略,一旦产生较为精确的模型,该模型参数就会持久化,避免复原出效果不佳的图像。训练dcgan的数据集不需要太多图像数据,在进行了50次批量训练后,模型接近收敛。
为了能够体现出本发明利用dcgan进行编码、解码操作的优势,对比其他方法:稀疏自编码器和栈式自编码器。将这三种编码器的训练过程放在一起进行比较,如图6所示。其中,红色表示稀疏自编码器,绿线表示栈式自编码器,蓝线表示dcgan编码器。而黑色的线则表示没有用栈式级联策略连接的dcgan编码器,训练很不稳定。通过这张对比图,可以很清楚地看到dcgan编码器与栈式级联策略相结合的优越性,它的损失是最低的。针对各个编码器所生成的图像,通过峰值信噪比、均方误差和结构相似性度量进行了综合比对。如图7所示,综合比对下发现dcgan编码器最为优越。
在获得了健壮的编码模型后,就要通过lstm预测雷达图像了。把训练集投入到dcgan编码器中,图像的特征随后输入进lstm。需要与3dcnn和convlstm进行对比来显示本文中所提出方法的健壮性。首先进行单帧预测,这是对后面序列预测的一个可行性验证。如图8所示,训练批次为30次时,三者都进入了收敛震荡区。通过观察,在单帧预测训练环节,dcganlstm虽然占有优势,但与另外两个相差并不多。左侧为3dcnn训练过程,中间为convlstm,右侧为dcganlstm。其中,横坐标表示迭代批次,纵坐标表示相似性。完成单帧预测后,就该进入序列预测实验了。按照上述提到的方法重新设置神经网络,在保留栈式级联策略的条件下增加网络深度。通过批量迭代了3000次后,得到了三种方法的误差分布图。如图9所示,发现3dcnn和convlstm训练并不稳定,后期虽然基本收敛于一个范围内,但值域的震荡对于精确预测很不利。而dcganlstm误差分布则相对稳定很多,损失收敛于0.05左右。采用了栈式级联策略和学习率衰减策略两大优化方法对其进行优化,效果较为满意。