多个对象的动作识别和本地化



我想问关于建议帧的视频的动作检测的问题。我使用Temporal 3D ConvNet对视频进行动作识别。成功训练它,可以识别视频上的动作。

当我进行推理时,我只是从视频中收集 20 帧,将其馈送到模型,它就会给我结果。关键是不同视频上的事件大小不相似。其中一些覆盖了帧的 90%,但有些可能覆盖了 10%。让我们以两个物体碰撞为例,它可能以不同的规模发生,我想检测这个动作。

  • 如果动作识别可以在不同的尺度上与不同的对象发生,如何为模型提供动作识别的确切位置?我想到的是使用 Yolo 收集感兴趣区域并在每次 3D 卷积时馈送收集的帧。但是如果有很多物体,速度会很慢。如何处理?

  • 是否有任何端到端的动作识别解决方案,其中包含动作识别网络的对象位置建议?

我已经看过论文和博客,人们的建议,找不到本地化问题的解决方案,所以动作识别模型得到了正确的框架。

因此,为了总结,我们的想法是获得一个可能以任何比例碰撞的对象,然后将例如20帧的物体馈送到3D convnet以做出判断。

你有什么建议吗?也许有人可以解释我的方法?

这是我的模型CNN+LSTM,所以目前正在尝试改进它。

video = Input(shape=(None, 224,224,3))
cnn_base = VGG16(input_shape=(224,224,3),
weights="imagenet",
include_top=False)
cnn_out = GlobalAveragePooling2D()(cnn_base.output)
cnn = Model(inputs=cnn_base.input, outputs=cnn_out)
cnn.trainable = False
encoded_frames = TimeDistributed(cnn)(video)
encoded_sequence = LSTM(32, dropout=0.5, W_regularizer=l2(0.01), recurrent_dropout=0.5)(encoded_frames)
hidden_layer = Dense(units=64, activation="relu")(encoded_sequence)
dropout = Dropout(0.2)(hidden_layer)
outputs = Dense(5, activation="softmax")(dropout)
model = Model([video], outputs)

最新更新