
我正在尝试实现上图中所示的模型,该模型基本上由时间分布的CNN组成,后面是一系列使用Keras和TF的LSTM。我已经划分了两种类型的类,并从捕获的每个视频中提取帧。提取的帧是可变的,不要修复。
然而,我在尝试弄清楚如何为每个类中的每个视频加载图像帧以成为x_train、x_test、y_train和y_test时遇到了一个问题。
model = Sequential()
model.add(
TimeDistributed(
    Conv2D(64, (3, 3), activation='relu'), 
    input_shape=(data.num_frames, data.width, data.height, 1)
   )
)  如果每个视频包含n个不同数量的提取帧,我不知道如何在data.num_frames中键入。
输入是3-8秒的小视频(即一系列帧)。
发布于 2019-02-15 02:43:42
您可以使用None,因为此维度不会影响模型的可训练权重的数量。
不过,使用numpy创建一批视频会有问题,因为numpy不接受可变大小。
您可以单独训练每个视频,也可以创建虚拟帧(零填充)以使所有视频达到相同的最大长度。然后使用Masking层忽略这些帧。(某些Keras版本在使用TimeDistributed +Masking时会出现问题)
https://stackoverflow.com/questions/54696029
复制相似问题