pixel-wise cross entropy loss:
是最常用于语义分割的loss函数。This loss examines each pixel individually, comparing the class predictions (depth-wise pixel vector) to our one-hot encoded target vector。左边的是预测的值,右边的是标签值(采用one-hot编码),并且是depth-wise pixel vector.
由于交叉熵损失评估每一个像素点的类别预测,然后平均所有的像素点。这个本质上就是对图片上的每个像素进行平等的学习。这就造成了一个问题,如果在图像上的多种类别有不平衡的表征,那么训练会由最主流的类别主导。
由于上述缺陷,有人提出在不同的输出通道上加权(也就是类别上加权),以抵消数据集中的类别不平衡表现。
同时又有人提出在像素层面上加权,比如在分割物体的边缘上添加一个很大的权重。这个在U-Net: Convolutional Networks for Biomedical Image Segmentation就是这样做的,像素加权。
另外一种流行的损失函数是基于Dice coefficient(Sørensen–Dice coefficient)实际上是两个样本之间重叠的度量。度量范围从0到1,如果是1则说明完全重叠,所以越高越好。Dice coefficient最初是为二进制数据开发的,计算公式为:
其中
代表的是A和共同的元素部分,|A|代表set(A)中的元素,对B同理。下面是计算
的一个例子,在预测值和标签值逐像素相乘,然后加起来:
因为我们的标签是二值的,那么就可以有效的去除预测中处于没有激活的任何像素。对于剩下的像素,本质上是 essentially penalizing low-confidence predictions。
其中|A|和|B|的计算有研究者提出两种方式:第一种就是简单的全部元素相加,第二种就是平方和。这两种方式我们可以选择之后再进行实验对比效果。下面的例子是第二种方式:
采用第二种方式的代码实现链接,里面采用了拉普拉斯平滑也就是分子分母都加1:
为了建立一个最小化损失,我们采用的损失函数是:
该函数被称为the soft Dice loss,because we directly use the predicted probabilities instead of thresholding and converting them into a binary mask.对于神经网络的输出,分子部分连接了激活的标签和预测值,分母部分连接着每一个mask的激活数量。这对于损失是一个很好的正则化作用,因此the soft Dice loss并不难学习那些在图片中空间表征较少的类别(类别不平衡)。
the soft Dice loss实现如下: