我正在使用以下代码使用LSTM对视频进行分类。使用VGG16模型从每个帧中提取特征。我也有兴趣提取空间域中的特征。我从keras文档中了解到CONVLSTM2D可以做到这一点。但是我不确定使用CONVLSTM2D时如何使用vgg16中的功能。
frames=19
channels=3
rows=224
columns=224
classes=2
video = Input(shape=(frames,
rows,
columns, channels))
cnn_base = VGG16(input_shape=(rows,columns,channels),weights="imagenet",include_top=False, pooling = 'avg' )
encoded_frames = TimeDistributed(cnn_base)(video)
encoded_sequence = LSTM(256)(encoded_frames)
hidden_layer = Dense(output_dim=1024, activation="relu")(encoded_sequence)
outputs = Dense(output_dim=classes, activation="softmax")(hidden_layer)
model = Model([video], outputs)
对此有何建议?
答案 0 :(得分:0)
ConvLSTM2D需要类似输入的图像(高度,宽度,通道)。因此,您可以先使用VGG中的图层输出,再使用随后的Flatten和Dense图层,在这些图层中,输出仍然是形状(高度,宽度,通道),并将其输入ConvLSTM2D。