用于分析帧序列的卷积神经网络结构

数据挖掘 张量流 喀拉斯
2022-03-16 11:08:07

我想将 CNN 应用于一系列图像序列,以将帧/图像序列分为两组/类别。我们处于二分类问题中。我的数据集由许多“批次”帧组成。例如,每批帧可以由 20 个 64x64 像素的帧组成。一件重要的事情是这 20 帧的顺序很重要。如果你打乱那 20 帧的顺序,输出可能会改变。

对于这一切,我想创建一个 CNN 来解决这个二元分类问题。我使用 Keras 和 TensorFlow。

我的问题是什么?好吧,我不确定是否必须使用TimeDistributed 层神经网络的输入形状如下:(20, 64, 64, 1),其含义是:20帧,大小为64x64(1通道-灰度)。我应该使用 TimeDistributed 层吗?

1个回答

我不确定是否必须使用 TimeDistributed 图层

您绝对不必使用TimeDistributed。您还有其他选择,可能同样有效,具体取决于您的数据:

  • 将您的示例数据扁平化为每个示例的 81920 个特征,并使用简单的密集层。

  • 使用 Conv3D 层。

  • 使用某种形式的 RNN,例如 LSTM。

根据您的数据描述,我希望基于 TimeDistributed 或 3D CNN 的方法是一个不错的首选直觉表明,如果帧之间有微小的变化,CNN 会更好地工作(因为它有能力直接找到细微的帧差异),TimeDistributed 方法会更好地处理更大的变化(因为它会忽略帧差异,直到全连接层)。

我应该使用 TimeDistributed 层吗?

只有您可以通过尝试并测量分类器的性能来回答这个问题。但是,它应该可以正常运行,并且直觉表明,如果您的帧是按顺序排列但视觉上不相交的,这将是一个不错的选择。