写点什么

基于深度学习的医学图像分割(一)

用户头像
cv君
关注
发布于: 刚刚
基于深度学习的医学图像分割(一)

医学图像分割是医学图像处理与分析领域的复杂而关键的步骤,其目的是将医学图像中具有某些特殊含义的部分分割出来,并提取相关特征,为临床诊疗和病理学研究提供可靠的依据,辅助医生作出更为准确的诊断。由于医学图像自身的复杂性,在分割过程中需要解决不均匀及个体差异等一系列问题,所以一般的图像分割方法难以直接应用于医学图像分割。当前,医学图像分割仍在从手动分割或半自动分割向全自动分割发展。


图像分割的定义:


令 R 代表整个图像区域,对 R 的分割可看做将 R 分成若干个满足以下条件的非空子集(子区域){R1,R2,R3…Rn}。该集合满足以下特性:


  目前国内外广泛应用的医学图像分割方法有很多种,许多学者试应用数学、物理、光学、计算机等领域知识拓展医学图像分割的理论方法。  
图像分割方法可以分为以下几类:
复制代码

(1)基于阈值的分割:通过阈值对不同的物体进行分割。


阈值分割是最常见的并行直接检测区域的分割方法。[2]如果只用选取一个阈值称为单阈值分割,它将图像分为目标和背景;如果需用多个阈值则称为多阈值方法,图像将被分割为多个目标区域和背景,为区分目标,还需要对各个区域进行标记。阈值分割方法基于对灰度图像的一种假设:目标或背景内的相邻像素间的灰度值是相似的,但不同目标或背景的像素在灰度上有差异,反映在图像直方图上就是不同目标和背景对应不同的峰。选取的阈值应位于两个峰之间的谷,从而将各个峰分开。


阈值分割的优点是实现相对简单,对于不类的物体灰度值或其他特征值相差很大时,能很有效的对图像进行分割。阈值分割通常作为医学图像的预处理,然后应用其他一系列分割方法进行后处理。


阈值分割的缺点是不适用于多通道图像和特征值相差不大的图像,对于图像中不存在明显的灰度差异或各物体的灰度值范围有较大重叠的图像分割问题难以得到准确的结果。另外,由于它仅仅考虑了图像的灰度信息而不考虑图像的空间信息,阈值分割对噪声和灰度不均匀很敏感。


阈值选取的几种方法为直方图阈值分割法、类间方差阈值分割法、二维最大熵值分割法和模糊阈值分割法。(2)基于边缘的分割:先确定边缘像素,并把它们连接在一起,以构成所需的边界


基于边缘的分割方法可以说是人们最早研究的方法,基于在区域边缘上的像素灰度值的变化往往比较剧烈,它试图通过检测不同区域间的边缘来解决图像分割问题。边缘检测技术可以按照处理的技术分为串行边缘检测以及并行边缘检测。所谓串行边缘检测是指:要想确定当前像素点是否属于欲检测边缘上的一点,取决于先前像素的验证结果;而在并行边缘检测技术中,一个像素点是否属于检测边缘上的一点取决于当前正在检测的像素点以及该像素点的一些相邻像素点,这样该模型可以同时用于图像中的所有像素点,因而称之为并行边缘检测技术。 根据灰度变化的特点,常见的边缘可分为跃阶型、房顶型和凸缘型。


边缘检测分为三类:点检测、线检测和边缘检测。点检测是检测图像中孤立的点,线检测主要是哈夫变换,利用图像全局特性而直接检测目标轮廓,即可将边缘像素连接起来组成区域封闭边界的常用方法。边缘检测依据两个具有不同灰度值的相邻区域之间总存在边缘,边缘检测算子很多,如梯度算子,方向算子,拉普拉斯算子,马尔算子,综合正交算子,坎尼算子等。1234 代码实现传统算子的图形分割:下图中分别是:原图——>sobel 算子水平检测器——>sobel 算子垂直检测器——>拉普拉斯算子——>Canny 算子(其余的边缘检测方式,下期介绍)


(3)基于区域的分割:把各像素划归到各个物体或区域中


图像分割-把图像分解为若干个有意义的子区域,而这种分解-基于物体有平滑均匀的表面,与图像中强度恒定或缓慢变化的区域相对应,即每个子区域都具有一定的均匀性质前面所讨论的边缘、阈值,没有明显使用分割定义中的均匀测度度量区域分割-直接根据事先确定的相似性准则,直接取出若干特征相近或相同象素组成区域。常用的区域分割-区域增长(区域生长)、区域分裂-合并方法等。


区域生长和分裂合并是两种典型的串行区域分割方法。其特点是将分割过程分解为顺序的多个步骤,其中后续步骤要根据前面步骤的结果进行判断而确定。区域生长的基本思想是将具有相似性质的像素集合起来构成区域,该方法需要先选取一个种子点,然后依次将种子像素周围的相似像素合并到种子像素所在的区域中。区域生长算法的研究重点一是特征度量和区域增长规则的设计,二是算法的高效性和准确性。区域增长方式的优点是计算简单。与阈值分割类似,区域增长也很少单独使用,往往是与其他分割方法一起使用,特别适用于分割小的结构如肿瘤和伤疤。区域生长的缺点是它需要人工交互以获得种子点,这样使用者必须在每个需要抽取出的区域中植入一个种子点。同时,区域增长方式也对噪声敏感,导致抽取出的区域有空洞或者在局部体效应的情况下将分开的区域连接起来。为解决这些问题,J.F. Mangin 等提出了一种同伦的区域生长方式,以保证初始区域和最终抽取出的区域的拓扑结构相同。Shu-Yen Wan 等提出的对称区域增长算法有效地弥补了原算法对种子点敏感和占用内存多的弱点,而且对 3D 连接对象标记和删除空洞的算法效率较高。另外,模糊连接度方法与区域增长相结合也是一个发展方向。


区域生长方法将图像以像素为基本单位来进行操作。主要方法可以基于区域灰度差,基于区域内灰度分布统计性质,或基于区域形状。


分裂合并方法利用图像数据的金字塔或四叉树结构的层次概念,将图像划分为一组任意不相交的初始区域,即可以从图像的这种金字塔或四叉树数据结构的任一中间层开始,根据给定的均匀性检测准则,进行分裂和合并这些区域,逐步改善区域划分的性能,知道最后将图片分成数量最少的均匀区域为止。


(4)基于运动的分割:通过视频物体运动进行分割


随着多媒体技术的发展,视频图像得到广泛应用,由一系列时间上连续的 2-D 图像组成。从空间分割的角度来看,视频图像分割主要是希望把其中独立运动的区域(目标)逐帧检测处理。从时间分割的角度来看,主要是把连续的序列分解为时间片断。123(5) 基于活动轮廓模型的方法活动轮廓模型,又称 Snake 模型,由 Kass 在 1987 年提出。由于 Snake 模型有着高效的数值方案以及严谨的数学基础,且应用广泛,提出后即成为图像分割领域所研究的热点。


原始的 Snake 模型其基本思想是通过能量最小化,将一条带有能量函数的初始曲线朝着待检测的目标轮廓方向逐步变形与运动,最终收敛到目标边界,得到一个光滑并且连续的轮廓。原始 Snake 模型首先在目标区域附近手动设置一条闭合曲线作为 Snake 模型的初始轮廓线,初始轮廓线随时间不断演化,越来越逼近目标边界,当演化停止时即获得最终结果。Snake 算法的 3 个主要步骤为:(1)读取数据;(2)数据的预处理,如图像的去噪、求梯度,求外力场等;(3)确定模型的参数与迭代次数,然后开始迭代。


原始的 Snake 模型存在难以捕捉目标凹陷边界及对初始轮廓线敏感等不足,因而后续有许多改进的方法。在此也不过多描述。1234567(6)模糊聚类算法


大多数的医学图像具有模糊性,图像质量低、噪声大。模糊聚类法将模糊集理论与聚类算法相结合,模糊集理论对图像的不确定性具备较好描述能力,将此特点结合到分类中,应用到医学图像分割领域。该方法不是以“一刀切”的方式将像素点硬性分到某一区域,而是引入模糊理论中“隶属度”的概念,将像素点分到隶属程度高的区域中去,提高分割的准确率。目前最常用的是模糊 C- 均值算法 (FCM),该算法通过两次迭代得到最优边界。


(7)基于小波变换的方法


小波变换是对 Fourier 分析的继承与发展,利用小波变换进行医学图像分割的基本方法是通过小波变换将图像直方图分解成不同级别的系数,用尺度控制并依照小波系数和给定的分割准则来选择阈值。小波变换在较大尺度上由噪音引起的细小突变较少,容易描述医学图像信号的整体行为,可检测出医学图像灰度值变化较大的轮廓,因此可以通过在不同尺度下逐步确定阈值来处理医学图像。



以上 7 类均为传统分割方法。每一种都有诸多变形与改进。还有基于图论、图谱引导、数学形态学等等研究。但主要任务是用深度算法研究医学图像中的分割任务。


下面介绍医学图像中常用的损失函数,包括 cross entropy, generalized dice coefiicients, focal loss 等。


一、cross entropy 交叉熵图像分割中最常用的损失函数是逐像素交叉熵损失。该损失函数分别检查每个像素,将类预测(深度方向的像素向量)与我们的热编码目标向量进行比较。


cross entropy


由此可见,交叉熵的损失函数单独评估每个像素矢量的类预测,然后对所有像素求平均值,所以我们可以认为图像中的像素被平等的学习了。但是,医学图像中常出现类别不均衡(class imbalance)的问题,由此导致训练会被像素较多的类主导,对于较小的物体很难学习到其特征,从而降低网络的有效性。


有较多的文章对其进行了研究,包括 Long et al. 的 FCN 在每个通道加权该损失,从而抵消数据集中存在的类别不均的问题。同时,Ronneberger et al.提出的 U-Net 提出了新的逐像素损失的加权方案,使其在分割对象的边界处具有更高的权重。该损失加权方案以不连续的方式帮助他们的 U-Net 模型细分生物医学图像中的细胞,使得可以在二元分割图中容易地识别单个细胞。


二、dice coefficientdice coefficient 源于二分类,本质上是衡量两个样本的重叠部分。该指标范围从 0 到 1,其中“1”表示完整的重叠。 其计算公式为:


intersection


因为我们的目标是二进制的,因而可以有效地将预测中未在 target mask 中“激活”的所有像素清零。对于剩余的像素,主要是在惩罚低置信度预测; 该表达式的较高值(在分子中)会导致更好的 Dice 系数。


其中,在式子中 Dice 系数的分子中有 2,因为分母“重复计算” 了两组之间的共同元素。为了形成可以最小化的损失函数,我们将简单地使用 1-Dice。这种损失函数被称为 soft dice loss,因为我们直接使用预测概率而不是使用阈值或将它们转换为二进制 mask。


关于神经网络输出,分子涉及到我们的预测和 target mask 之间的共同激活,而分母将每个 mask 中的激活量分开考虑。实际上起到了利用 target mask 的大小来归一化损失的效果,使得 soft dice 损失不会难以从图像中具有较小空间表示的类中学习。


soft dice loss 将每个类别分开考虑,然后平均得到最后结果。12345dice loss 比较适用于样本极度不均的情况,一般的情况下,使用 dice loss 会对反向传播造成不利的影响,容易使训练变得不稳定。


三、focal loss


因此,对于大量的 easy negative examples,这些 loss 会主导梯度下降的方向,淹没少量的正样本的影响。


该损失函数在何凯明 1-stage 目标检测框架中被提出。专为解决 class imbalance 问题。首先定性感受一下 target problem(基于目标检测背景):12 在目标检测领域,常用的损失函数为 CE(cross entropy)。但会带来一些问题:


(1)首先,在目标检测中,一般图像的目标所占的比例会远远小于背景,在传统的样本分类中,被分为 positive 和 negative 两类。由于 negative 样本过多,会造成它的 loss 太大,容易把 positive 的 loss 遮盖从而不利于整个目标函数的收敛,针对这个问题,用平衡的 CE (balanced cross entropy)改进传统 CE


(2)实际上,大多 negative 样本位于背景区,而极少的 negative 位于前景和背景的过渡区。位于背景区的样本分类相对容易,成为 easy negative, 训练时对应的 score 很大,loss 相对很小,在计算反向梯度时,造成 easy negative example 对参数收敛作用有限。从而导致 hard negative 样本很难得到更新,效果不佳。


究其原因,是由于常用的损失函数,传统 CE(cross entropy)包括平衡化的 CE 均只有 positive/ negative 的区分,未考虑到 easy/ hard 的样本区分。根据分类,有以下几类样本:hard positive(IOU>0.5), easy positive, hard negative(IOU<0.4) 以及 easy negative。


所以提出了 focal loss 加大 hard negative 的 loss 值,使之更好的训练。


主要就是增加了 调节因子。调节因子有两方面作用:1)当网络错分类的时候,p_{t} 很小,公式基本不变,但当 p_{t} 很大,大大降低了 easy example 的损失权重。2) focusing parameter, gamma 增强了调节因子的作用。


整体上看,调节因子降低了 easy example 损失的贡献,调节了简单样本权重降低的速率,并拓宽了样本接收低损失的范围。对于困难样本的学习更有利。值得注意的是, \alpha 和调节因子需要配合使用,具体实现时,可以参考论文中的实验进一步探究。


本文引用博主「Biyoner」的文章,下一章我把常用的以学影像图像分割算法全部罗列一遍,并且附上源码,感兴趣的朋友可以关注一下,一起学习深度学习,加油!


用户头像

cv君

关注

还未添加个人签名 2021.03.22 加入

还未添加个人简介

评论

发布
暂无评论
基于深度学习的医学图像分割(一)