医学图像惯用的loss函数

医学上的图像分割问题
医学影像的数据特点:
语义比较简单,结构单一
图像边界模糊、梯度复杂,需要较多的高分辨率信息,高分辨率用于精准分割。
人体内部结构相对固定,分割目标在人体图像中的分布很具有规律,语义简单明确,低分辨率信息能够提供这一信息,用于目标物体的识别。
数据比较少(网络的结构模型过于复杂、和参数过多(过大)的话,就会导致训练的模型过拟合,而造成偏差。)
多模态。(要求有更好的网络对数据的特征进行提取。)
可解释性重要。(需要的不仅仅是一张3D的CT模型图,还需要知道病灶的体积、和具体在哪一层。)

之前很多的方法都是只能处理2D图像,在临床的实践中很多都是包含3D体积。因此提出基于体积、基于FCN的三维图像分割方法。

Une类型的网络适用于医学图像分割、自然图像生成。

V-Net: Fully Convolutional Neural Networks for Volumetric Medical Image Segmentation

早期的方法是通过对图像进行分段分类来获得图像或卷中的解剖轮廓。这种分割是通过仅考虑局部环境而获得的,因此很容易失败,特别是在有大量错误分类的像素体中。与Unet不同,在Vnet中使用三维卷积核,并提出基于Dice系数最大化的目标函数来优化模型。
在这里插入图片描述
其中总和在N个体素上运行,预测的分割体积pi∈P和真实体积gi∈G。可以区分这种Dice的形式,产生相对于预测的第j个体素计算的梯度。 使用这个公式我们不需要为不同类别的样本分配权重以在前景体素和背景体素之间建立正确的平衡。
医学图像惯用的loss函数_第1张图片

改进:
1、首先网络使用的ResNet中的残差网络(Redisual Network)
2、下采样层将MaxPooling全部替换成了卷积核为222,stide为2的conv层
目的是为了减少占用内存(因为进行maxpool的时候,会记住传递到下一层的单元格索引,以便反向传播)
3、使用了PReLu非线性激活函数
4、每层卷积层的都使用555的卷积核,并且使用合适的padding使输入输出的图像大小一致
5、使用Dice overlap coefficient

特点:
1、在描述MRI体积上进行端到端的训练,并且学会了一次预测整个体积的分割。
2、同样在V_NET中引入一种新的目标函数,训练期间根据Dice系数进行优化,以达到可以处理前景体素和背景体素之间存在强烈不平衡的状态。
3、应对有限数量的注释体积(数据),使用随机非线性变换和直方图匹配增强数据。

损失函数:
本文提出一个基于dice coefficient的损失函数。两个二进制的矩阵的dice相似系数为:
医学图像惯用的loss函数_第2张图片
使用这个函数来避免类别不平衡。

采用交叉熵损失函数,而非 dice-coefficient 和类似 IoU 度量的损失函数,原因是其梯度形式更优(the gradients are nicer.)
采用 dice-coefficient 或者 IoU 作为损失函数的原因,是因为分割的真实目标就是最大化 dice-coefficient 和 IoU 度量. 而交叉熵仅是一种代理形式,利用其在 BP 中易于最大化优化的特点.

Dice loss 初期不稳定

Focal Loss for Dense Object Detection
目前的目标检测算法分为两类:
一类是two-stage,two-stage检测算法将检测问题划分为两个阶段,首先产生候选区域(region proposals),然后对候选区域分类(一般还需要对位置精修)识别错误率低,漏识别率也较低,但速度较慢,不能满足实时检测场景。

另一类方式称为one-stage检测算法,其不需要region proposal阶段,直接产生物体的类别概率和位置坐标值,经过单次检测即可直接得到最终的检测结果,因此有着更快的检测速度。

文章希望综合两者之间的优点,也就是one-stage model在保证速度的同时也能达到two-stage的accuracy。文章指出,one-stage网络是在训练阶段,极度不平衡的类别数量导致准确率下降,一张图片里box为目标类别的样本就那么点,而是背景没有目标的样本却远远高于目标样本,这导致分类为背景的样本数目占据样本数目极大部分,因此,这种不平衡导致了模型会把更多的重心放在背景样本的学习上去。two-stage网络一般会经历类似rpn网络,第一个网络已经滤去了大多数背景样本,在第二个网络里负样本的数量大量减少,因此对分类的影响也会减少。但two-stage网络仍然有大量负样本,只是不均衡程度减轻了,所以,识别准确率不高的根本原因在于样本类别是否均衡。

文章基于标准的交叉熵损失函数提出Focal Loss 解决这些问题

Focal loss

医学图像惯用的loss函数_第3张图片

能够动态的缩放交叉熵loss,当正确类的置信率增加,它对应的尺度因子会逐渐衰减到0,如图1。直观上,尺度因子会自动地在训练时减少简单例子对loss的贡献,然后迅速地着眼于难例。

对于二分类问题,标准的cross entropy loss 是:
在这里插入图片描述
如果定义pt为:
医学图像惯用的loss函数_第4张图片
那么(1)可以改写为:在这里插入图片描述

在ce loss前面乘以一个参数α,这样可以方便控制正负样本loss所占的比例。但是权重因子α只能解决positive/negative examples问题,不能区分easy/hard examples问题。而解决easy/hard examples问题关键所在是如何抑制容易分类的样本的梯度的作用。越容易分类的样本,其pt 越大越接近1,因此如将(1−pt)作为样本的损失权重就能区分easy/hard的问题并起到抑制作用。而采用指数形式(1−pt)^γ就能调整该抑制作用的大小,文章因此提出一个调整因子。
重写交叉熵损失函数为:
在这里插入图片描述
pt是不同类别的分类概率,γ是个大于0的值,αt是个[0,1]间的小数,γ和αt都是固定值,不参与训练。从表达式可以看出:
  1、无论是前景类还是背景类,pt越大,权重(1-pt)^γ就越小。也就是说easy example可以通过权重进行抑制;
  2、αt用于调节positive和negative的比例,背景类别使用αt时,对应的前景类别使用1-αt;

Focal loss在one stage detecor上,解决了class imbalance的问题。(同时解决了正负样本不平衡以及区分简单与复杂样本的问题)。

Retinane网络
retinanet的网络结构是在FPN的每个特征层后面接两个子网络,分别是classification subnet 和 bbox regression subnet。

前者是先用四次C个33的卷积核卷积+relu激活,然后用KA个33的卷积核卷积,用sigmoid来激活最后一层,对每个特征层进行类别预测。KA是K种类别A个anchor的预测结果,实验中设置C = 256。

后者是接一个FCN(不含全连接的全卷积),最后预测4*A个量。
医学图像惯用的loss函数_第5张图片

总结:
相比交叉熵损失,focal loss的改进在于,对于那些预测得分不好的样本,保留交叉熵损失中的大部分损失,对于那些得分很好地样本,大幅减小其交叉熵损失,虽然看起来Focal loss损失相比交叉熵都变小了,但是得分不太好的样本相对得分比较好的样本损失是增加了的。这里的得分好坏不是指大小,而是与真实标签的接近程度,越接近得分越好。同时,上面提到的alpha用来权衡样本不平衡问题,对于样本较少的,使得其alpha相对样本较多的1-alpha更大,这样,模型会更加专注于优化样本少的那些损失。

3D Segmentation with Exponential Logarithmic Loss for Highly Unbalanced Object Sizes
现有的医学图像分割领域的网络只能处理数量较少的类别(<10),并且在3D影像分割中,很难处理小目标,解决数据极度不均衡的问题。

因为小目标一旦有部分像素预测错误,那么就会导致DICE大幅度的下降,所以直接使用DICE loss,对小目标十分不利。因此文章将泛化的Dice loss作为loss function。 不是计算每个标签的Dice损失,而是针对广义Dice损失计算目标在the ground-truth and predicted probabilities之和之间的加权和上的加权和,其中权重与标签频率成反比。
在这里插入图片描述
其中rln为类别l在第n个像素的标准值(GT),而pln为相应的预测概率值。wl为每个类别的权重,其中
在这里插入图片描述
使用GDLv加权时,每个标签的贡献通过其体积的倒数进行校正,从而减少区域大小与Dice评分之间众所周知的相关性。
为了解决三维分割中高度不平衡的物体尺寸和计算效率的问题,文中进一步提出指数对数损失函数(the exponential logarithmic loss function.)结合了skip connections and deep supervision的优点,提出了一种快速收敛和计算有效的网络架构,(只有V-Net的1/14的参数量,但速度是V-Net的两倍。)
医学图像惯用的loss函数_第6张图片
简化了3D VNet,削减了通道数,同时改进了卷积块增加了一个类似残差的结构(但不完全是),增加了解码器端的辅助监督。

Exponential Logarithmic loss
Exponential Logarithmic loss结合了focal loss以及Dice loss。
医学图像惯用的loss函数_第7张图片
LDice为指数log Dice损失(the exponential logarithmic Dice loss),LCross为指数交叉熵损失。

x为体素的位置,i为label,l为在位置x的ground-truth。pi(x)为softmax之后的概率值。其中
在这里插入图片描述
代码实现等测试了再上传

你可能感兴趣的:(医学图像惯用的loss函数)