如何沿着侧面图像添加非图像特征作为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.