繁体   English   中英

用于视频分类的 CNN LSTM keras

[英]CNN LSTM keras for video classification

我创建了一个视频数据集,其中每个视频的尺寸为 5(帧)x 32(宽)x 32(高)x 4(通道)。 我正在尝试使用 CNN LSTM 网络对这些视频进行分类(二进制分类),但我对输入形状以及如何重塑数据集以训练网络感到困惑。

model = Sequential()
model.add(TimeDistributed(Conv2D(64, 5, activation='relu', padding='same', name='conv1', input_shape=??))
model.add(TimeDistributed(MaxPooling2D(pool_size=(2,2), strides=(2,2), padding='same', name='pool1')))

model.add(TimeDistributed(Conv2D(64, 5, activation='relu', padding='same', name='conv2'))
model.add(TimeDistributed(MaxPooling2D(pool_size=(2,2), strides=(2,2), padding='same', name='pool2')))

model.add(TimeDistributed(Conv2D(64, 5, activation='relu', padding='same', name='conv3'))
model.add(TimeDistributed(MaxPooling2D(pool_size=(2,2), strides=(2,2), padding='same', name='pool3')))

model.add(TimeDistributed(Conv2D(64, 5, activation='relu', padding='same', name='conv4'))
model.add(TimeDistributed(MaxPooling2D(pool_size=(2,2), strides=(2,2), padding='same', name='pool4')))


model.add(TimeDistributed(Flatten()))
model.add(LSTM(256, return_sequences=False, dropout=0.5))
model.add(Dense(1, activation='sigmoid'))

我在模型中遗漏了什么吗?

您的输入形状应该是(batch_size, time steps, height, width, channels) 所以它应该是一个 5 维张量。

此外,您的input_shape参数应该是这样的。 它应该是TimeDistributed层而不是Conv2D层的参数,因为TimeDistributed是第一层。 在这里,我展示了输入形状是什么,

  • 任意数量的样本批次
  • 5 个时间步长(视频帧)
  • 32vpixels高(高度)
  • 32 像素宽(宽)
  • 4通道
model.add(TimeDistributed(Conv2D(64, 5, activation='relu', padding='same', name='conv1'), input_shape=(5, 32, 32, 4)))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM