语义分割的损失使不连续的小块受到​​更多的惩罚

时间:2018-11-07 16:44:51

标签: loss semantic-segmentation

我正在研究细分问题。我正在考虑这个问题的损失。无论是2D图像还是1D信号分割,我都认为它们是相似的。通常,我们选择最小化以进行分割的损失是交叉熵,其目的是增加像素/逐点分类的累积量和骰子系数,这总体上使预测区域尽可能匹配地面真实情况。

想象一下,现在我有一张图像,背景约为一半像素(mask = 0),另一半人脸(mask = 1)。当然背景和面部区域是连续的。而且我有一个训练有素的细分模型,并且在该模型上效果很好,像素级Accuray = 95%。很好,为95%的像素指定了正确的标签,背景为0,前景为1。但是令我不高兴的是,其他5%像素在预测的蒙版中形成了微小的孤立孔。在较大的1s中,有几个0。同样,在0的大范围内,有几个1。 (后处理可以肯定地解决它,但我希望模型能够做到)。

我不认为交叉熵或骰子损失会有效解决这一问题。我想向损失中介绍另一个项目,它对那些孤立的孔施加更多的罚款,以便该模型能够抑制具有不连续小区域的输出蒙版。

def myLoss(y_true, y_pred):
    lamda = 0.8
    item1 = binaryCrossEntropy(y_true, y_pred)    
    item2 = discontinuousPenalty(y_pred)
    return lamda * item1 + (1-lamda) * item2

那么item2应该是什么样?我可以使用任何现有的损失或数学运算吗?我们需要使其在数学上合理(可微)。谢谢。

0 个答案:

没有答案