具有不平衡数据的二元类的语义分割损失不收敛

Posted

技术标签:

【中文标题】具有不平衡数据的二元类的语义分割损失不收敛【英文标题】:The loss of semantic segmentation of binary classes with inbalanced data dose not converge 【发布时间】:2018-06-06 16:07:18 【问题描述】:

我想分割仅占整个数据集一小部分的对象(例如 ICDAR 2015 或 CamVid 中的人)。像素级正负样本的比例约为1:200。

我的网络,其主干是预训练的 VGG16 或 ResNet50,可以在具有 12 个类的 CamVid 数据集中运行良好。然而,当我微调这个网络以在 CamVid 中只分割人时,损失将保持在 0.31 左右,并且即使学习率非常小(如 1e-5)也永远不会减少。此外,在另一个数据集(ICDAR 2015)上训练新模型以获取图像中的文本区域时,我遇到了同样的问题。

我用pytorch搭建了我的模型,我使用的损失函数是加权交叉熵损失。

谁能告诉我问题出在哪里?是关于损失函数的吗?因为我认为模型架构没有问题。非常感谢您的任何建议。

【问题讨论】:

你可以在论文Focal Loss for Dense Object Detection, (2017)中找到对此现象的详细分析。 @Shai 我去看看,谢谢~ 【参考方案1】:

对于 CamVid 数据集,人的类别太难用我的网络进行分割。对于 ICDAR 2015,我认为我的处理中存在一些问题(如随机裁剪)。最后,数据集真的很重要,我们应该更加关注它。

【讨论】:

以上是关于具有不平衡数据的二元类的语义分割损失不收敛的主要内容,如果未能解决你的问题,请参考以下文章

Keras中语义分割的不平衡数据?

为不平衡二元分类对数据进行过采样的过程

不平衡二元分类问题的最佳阈值

具有高度不平衡的多标签分类中的损失曲线

具有不平衡类的sklearn逻辑回归

使用 SMOTE 后导致高误报的不平衡数据集