如何沿着侧面图像添加非图像特征作为CNN的输入


14

我正在训练一个卷积神经网络以对雾条件下的图像进行分类(3类)。但是,对于约150.000张图像中的每张图像,我还具有四个可用的气象变量,这些变量可能有助于预测图像的类别。我想知道如何将气象变量(例如温度,风速)添加到现有的CNN结构中,从而有助于分类。

我已经想到的一种方法是在CNN旁边创建另一个(小型)前馈神经网络,然后在密集层将CNN层的输出和非图像神经网络的隐藏层彼此连接。

我能想到的第二种方法就是将这些要素与致密层接触。但是,在这种情况下,非图像变量(我认为)只能进行线性预测。

还有其他(更好)的方法可以将非图像特征包括在模型中吗?考虑到我拥有的数据量,什么是明智的选择呢?

我还有一个问题是,在使用这些非图像特征进行训练时,是否应该解冻卷积层?Resnet-18的这些层(在ImageNet上初始化为预先训练的)已经使用图像进行了微调。我的猜测是,我应该使它们保持冻结状态,并且仅解冻稠密层,因为只有在这种情况下,非图像特征才与图像特征“接触”(在CNN的较早版本中才出现)。如果我错了,请这样说!


您可以通过GAN,VAE之类的生成模型来建模Additional_features和图像之间的联接分布。那么您可以获取潜在变量,并在受监督的条件下使用它
Fadi Bakoura,

我本人也有类似情况。在过去的15分钟内,我一直使用一堆天空图像来尝试预测未来15分钟内靠近相机的太阳能电池板的输出。我最近决定发挥多种天气功能(每个图像对应一个,就像您的情况一样)。您的第一个建议比第二个建议(将非图形特征直接附加到密集层)要好得多。确切地说,第二个建议导致规范化问题。我发现,由于某种原因,我无法解释的是,在Batchnorm层无法正常化图形FEA
维涅什Venugopal

@VigneshVenugopal请在评论中提及我,否则无法通知我。你有什么问题?:)
媒体

如何将速度,油门和转向角连接到我的网络?您能解释一下稠密添加多少稠密吗?什么取决于它?
Nasrinzaghari

Answers:


10

我的解决方案就像您的第一个建议,但有一些细微的变化。

  1. 构造卷积层并将它们堆叠到展平层。该网络应接收图像数据。
  2. 整理您的激活图
  3. 用所需数量的神经元和层构建一个完全连接的网络。
  4. 将卷积网络的平坦层和完全连接的网络的输出串联在一起。
  5. 添加一些密集层并将它们连接到代表您的课程的最后一层。

您可以为该体系结构使用常规成本函数。


在Keras中,您可以使用Concatenate()图层吗?
Leevo

是。您应该将它们串联在一起以使其并排放置。
媒体

我应该使用Concatenate()还是concatenate()分层?我不能说出区别
Leevo

这取决于您要创建网络的方式。顺便说一下,您可以看到每个参数列表。他们不同。您可能还想在这里看看。
媒体
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.