ConvLSTM利用的是Conv2D+LSTM,E3D-LSTM提出的是采取Conv3D+LSTM的结构,处理的问题都是视频预测。
在学习E3D-LSTM文章之前,先看一下C3D,C3D其实就是利用Conv3D的一个CNN的网络架构,主要针对的也是视频的数据集,不过处理的问题是识别和分割方面的。C3D文章主要讲Conv2D在池化卷积过程中会丢失时间信息,作为视频数据集,采用Conv3D主要是将“Frame”当做一维放到了Tensor当中去做卷积。
简单来说就是[B,C,F,H,W]的数据([batch,channel,frame,height,width])对后三维做卷积,卷积核自然就变成三维的卷积核了,C3D还对不同size的卷积核做了对比试验,最后3*3*3的卷积核最优。
回到E3D-LSTM,整体大网络的框架是这样的:
Cell的结构是这样的:
公式:
Cell相当于是除了PredRNN的cell部分,还加了一部分attention(就是Recall这部分公式),这一个cell里面复杂度直接拉满了,下面公式中的Rt It Gt和上面的it gt ft是一套东西,也就是说,每个Cell的输入是三部分:input(也就是公式中的Xt),hidden(也就是公式中的H^{k}_{t-1},还有Memory(公式中的M)。
目前光看文章还没看懂是怎么做到预测未来很多时序的,等我看懂代码,再回来把这部分补上。