具有TimeDistributed的RCNN用于视频分类

时间:2018-03-21 06:43:44

标签: python machine-learning computer-vision keras recurrent-neural-network

我需要一个RCNN结构来在使用OpenCV提取帧后对视频进行分类。我已经为这个结构进行了大量的搜索和搜索,并在Keras达到了这个模型:

model = Sequential([

#Visual features learning
TimeDistributed(Conv2D(units=128, kernel_size=5, strides=1, input_shape(28, 28, 1))),
TimeDistributed(MaxPooling2D(pool_size=2)),
Dropout(0.25),

TimeDistributed(Conv2D(units=256, kernel_size=5, strides=1)),
TimeDistributed(MaxPooling2D(pool_size=2)),
Dropout(0.25),

TimeDistributed(Conv2D(units=128, kernel_size=5, strides=1)),
TimeDistributed(MaxPooling2D(pool_size=2)),
Dropout(0.25),

TimeDistributed(Conv2D(units=128, kernel_size=5, strides=1)),
TimeDistributed(MaxPooling2D(pool_size=2)),
Dropout(0.25),

#Flatten
TimeDistributed(Flatten()),

#LSTM for sequence learning
LSTM(units, activation, recurrent_activation, use_bias),

#FC
Dense(units=500, activation='relu'),
Dropout(0.25),
Dense(units=4, activation='softmax')

])

我可以调整这个结构(或直接使用它)来学习LSTM层的图像数据和时间特征吗? 如果没有,我该如何正确调整这个模块?

OBS:这个例子中的超参数仅仅是一个例子。我仍然需要找到一种方法来参数化LSTM层以使其工作。

感谢您的支持!

1 个答案:

答案 0 :(得分:1)

使用ConvLSTM2D 像这个例子 https://github.com/keras-team/keras/blob/master/examples/conv_lstm.py 但是用分类层改变模型的结尾

或使用prebuild模型使用它来编码帧的特征 在一定时间内将此功能提供给LSTM 然后在最后进行分类