【问题标题】:Masking pixels or doing convolutional LSTM classification with Keras使用 Keras 屏蔽像素或进行卷积 LSTM 分类
【发布时间】:2019-07-05 14:34:10
【问题描述】:

我有一个多波段图像序列,假设每个样本是一个大小为 (50, 6, 30, 30) 的张量,其中 50 是序列中的图像帧数,6 是每个像素的波段数,并且30x30 是图像的空间维度。地面实况图的大小为 30x30,但它是 one-hot 编码(使用交叉熵损失)o 7 个类别,因此它是大小为 (1, 7, 30, 30) 的张量。我想使用以下组合我的分类任务使用卷积和 LSTM(或使用集成的 ConvLSTM2D 层),但存在以下问题:

1- 并非每个点在输出图上都有一个有效标签(即一些 one-hot 向量全为零),

2- 并非每个像素在每个时间戳中都有一个有效值。因此,在每个给定的时间戳上,一些像素的所有波段值都可能为零(意味着无效)。

我阅读了很多关于如何处理这个问题的问答,我认为我应该使用 sample_weights 选项来掩盖无效的点和类,但我真的不确定如何去做。 Sample_weights 应该独立地应用于每个像素和每个时间戳。如果我没有卷积部分(2D 方法),我想我可以管理它。但是不明白当卷积到位时它是如何工作的,因为卷积窗口中的一些像素值是有效的,有些是无效的。如果我在特定时间屏蔽那些无效像素(那我仍然不知道该怎么做),前向和后向传播和损失计算的链条会发生什么变化?我觉得会毁了! 寻找 cmets 和帮助。

【问题讨论】:

    标签: keras conv-neural-network recurrent-neural-network masking


    【解决方案1】:

    可能的解决方案:

    问题 1- 对于根本没有类别的像素,您可以引入一个带有标签的新类别,例如噪声, 这意味着不在你的一个热编码中你也有价值,并且将为噪声类的那些像素生成相应的权重 这是实现与样品重量相同的间接方法 因为在 sample_weight 技术中,您告诉 keras 或 sklearn 参数的权重或权重的样本比率是多少。

    问题 2- 要回答第 2 部分,请考虑可能的用例,例如这些无效值的类值可以存在于热编码向量中还是全为零? 或者您也可以预处理并将它们添加到噪声类中,然后点 2 将由点 1 自动处理。

    【讨论】:

    • 感谢您的回复。我的基本问题是如何将权重与卷积混合。如果是 2D 时谱数据,则通过加权类或样本进行掩蔽将不成问题。但是对于卷积,一切都是混合的,请注意,无效数据/标签可能发生在地图和时间戳中的任何地方(任何像素都可以在一个时间戳具有一些无效数据(在所有波段),但在另一个时间戳具有有效数据。因此,所提到的像素不是噪声。)实际上它是一个 Landsat 数据,并且像素有时是混浊的,因此应该屏蔽读数。
    最近更新 更多