【问题标题】:How to classify videos of different length using CNN-LSTM?如何使用 CNN-LSTM 对不同长度的视频进行分类?
【发布时间】:2019-12-08 14:15:03
【问题描述】:

我正在尝试将视频分为 10 个类别。到目前为止我有这个模型:

model=keras.models.Sequential()
model.add(keras.layers.TimeDistributed(keras.layers.Conv2D(filters=3,kernel_size=(5, 5),activation='relu'),input_shape=(None,90,90,3)))
model.add(keras.layers.TimeDistributed(keras.layers.Flatten()))
model.add(keras.layers.LSTM(20,activation='relu'))
model.add(keras.layers.Dense(10, activation='softmax'))
model.compile(loss=keras.losses.categorical_crossentropy,
          optimizer=keras.optimizers.Adam(),
          metrics=['accuracy'])

问题是每个视频都有不同的帧数,每个帧是 90x90 3 个通道。我观察到 input_shape 中的第一个输入表示每个视频中的帧数,但每个视频中的帧数不同。 如何在这些视频上训练这个模型?我加载了以下格式的视频: [[视频1的图像1,视频1的图像2],[视频2的图像1,视频2的图像2,视频2的图像3],[视频3的图像1]]。 如果我尝试这样训练,我会出错。 numpy 也不支持变长。我还想避免添加黑框来制作等长的视频。

【问题讨论】:

    标签: python image-processing keras deep-learning


    【解决方案1】:

    您可以使用数据生成器并动态馈送帧,而无需事先将数据保存为 numpy 数组,这样您就可以动态创建数据。 This 是一篇很棒的文章,介绍了如何实现自定义数据生成器

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-07-15
      • 2018-07-12
      • 2019-01-03
      • 1970-01-01
      • 2018-06-12
      • 2017-10-29
      • 2021-10-20
      • 1970-01-01
      相关资源
      最近更新 更多