分割网络产生嘈杂的输出

数据挖掘 机器学习 卷积 图像分割
2022-02-22 22:33:47

我在 PyTorch 中实现了 SegNet 和 SegNet ReLU 变体。我现在将它用作概念验证,但真正困扰我的是网络产生的噪音。使用 ADAM,我的噪音似乎稍微少了一点,而使用 SGD 时,噪音会增加。我可以看到损失下降,交叉评估准确率上升到 98%-99%,但噪音仍然存在。

左边是实际图像,然后你可以看到掩码,最后是网络的实际输出。每个类有 1024 个样本,有两个类,因为文档非常结构化,所以非常一致。我在 224x224 上使用 vanilla SegNet(相同的内核、跨步和填充)。

什么可以解释这种噪音,我该如何解决这个问题?

输入屏蔽输出实际输出

1个回答

我将尝试回答我的问题,但不会接受它作为答案,仅仅是因为我确信发生这种情况的原因不止一个。我通过添加更多“特征”来增加区域解决了这个问题,例如,我确保有更多的文本、表格框和其他视觉特征供卷积“拾取”。在某种程度上,这似乎有很大帮助。也有帮助的是,使用了更现代的模型,我尝试过Unet使用resnet34编码器,也尝试过DeepLabV3优于其他所有模型的编码器。所以我怀疑“噪音” (因为没有更好的词)是网络不确定在哪里的副产品由于缺乏特征,分割的边界正是如此。我怀疑更现代的模型更适合处理这个问题。

编辑

到目前为止,似乎对我有用的是DeepLabV3编码Resnet器,但另一件事似乎真正有所作为的是分段区域的“大”程度。显然,在某些领域这是不可能调整的(例如,机器人技术、自动驾驶汽车等),但在文档或文本处理中很可能是这样。我注意到的是,在缩小到 224x224 之后,更小更薄的区域变得非常难以学习,如果不是不可能的话,而更大和更厚的区域更容易学习。我怀疑平均CELoss这里可能是罪魁祸首,并且可能存在一种损失机制,它强调仍然存在错误的较小区域/区域中的错误。假设是较小的区域将容忍由于平均操作导致的错误,而较大的区域不会容忍错误。