【问题标题】:How do you pass video features from a CNN to an LSTM?如何将视频特征从 CNN 传递到 LSTM?
【发布时间】:2016-08-27 19:15:42
【问题描述】:

通过卷积网络传递视频帧并获得输出特征图后,如何将该数据传递到 LSTM?另外,如何通过 CNN 将多个帧传递给 LSTM?
在其他作品中,我想用 CNN 处理视频帧以获得空间特征。然后我想将这些特征传递给 LSTM 以对空间特征进行时间处理。如何将 LSTM 连接到视频功能?例如,如果输入视频是 56x56,然后当通过所有 CNN 层时,假设它以 20:5x5 的形式出现。这些是如何逐帧连接到 LSTM 的?他们应该先通过全连接层吗? 谢谢,乔恩

【问题讨论】:

标签: video tensorflow lstm


【解决方案1】:

基本上,您可以展平每一帧特征并将它们输入到一个 LSTM 单元中。 CNN 也是一样。您可以将 CNN 的每个输出输入到一个 LSTM 单元中。

对于 FC,这取决于您。

查看http://www.eecs.berkeley.edu/Pubs/TechRpts/2014/EECS-2014-180.pdf的网络结构。

【讨论】:

    【解决方案2】:

    cnn+lstm 模型的架构如下图所示 基本上你必须为 CNN 层创建时间分布式包装器,然后将 CNN 的输出传递给 LSTM 层

    cnn_input= Input(shape=(3,200,100,1))   #Frames,height,width,channel of imafe
    conv1 = TimeDistributed(Conv2D(32, kernel_size=(50,5),    activation='relu'))(cnn_input)
    conv2 = TimeDistributed(Conv2D(32, kernel_size=(20,5), activation='relu'))(conv1)
    pool1=TimeDistributed(MaxPooling2D(pool_size=(4,4)))(conv2)
    flat=TimeDistributed(Flatten())(pool1)
    cnn_op= TimeDistributed(Dense(100))(flat)
    

    在此之后,您可以将 CNN 输出传递给 LSTM

    lstm = LSTM(128, return_sequences=True, activation='tanh')(merged)
    op =TimeDistributed(Dense(100))(lstm)
    fun_model = Model(inputs=[cnn_input], outputs=op)
    

    请记住这次分布式 CNN 的输入必须是 (# of frames,row_size,column_size,channels)

    最后你可以在最后一层应用softmax来得到一些预测

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-09-26
      • 1970-01-01
      • 1970-01-01
      • 2020-01-24
      • 1970-01-01
      • 1970-01-01
      • 2020-07-22
      • 1970-01-01
      相关资源
      最近更新 更多