基于深度学习的医学图像分割(一)
医学图像分割是医学图像处理与分析领域的关键任务,其目的是将医学图像中具有特定含义的部分分割出来,为临床诊疗和病理学研究提供可靠依据。由于医学图像复杂性和个体差异性,分割过程中需要解决不均匀、空间不一致等问题,传统方法难以直接应用于医学图像分割。近年来,基于阈值、边缘、区域、运动和活动轮廓模型等方法逐渐发展成熟。此外,损失函数在分割任务中起关键作用,交叉熵损失函数适用于逐像素分类,但对类别不均衡问题敏感;Dice系数衡量预测与目标的重叠度,适用于样本极度不均的情况;Focal Loss通过调节因子增强了对困难样本的权重,提高了训练效果。这些方法和损失函数的结合为医学图像分割提供了有效的解决方案。
医学图像分割是医学图像处理与分析领域中复杂且关键的技术环节,其主要目标是将医学图像中具有特定意义的部分分离出来,并提取相关特征,为临床诊疗和病理学研究提供可靠依据,从而辅助医生实现更加精准的诊断。鉴于医学图像的复杂特性,在分割过程中需要解决不均匀性及个体差异性等系列问题,因此,常规的图像分割方法难以直接适用于医学图像分割。目前,医学图像分割技术正朝着从手动分割向全自动分割发展的方向推进。
图像分割的定义:
令R代表整个图像区域,对R的分割可看做将R分成若干个满足以下条件的非空子集(子区域){R1,R2,R3…Rn}。该集合满足以下特性:
目前国内外广泛应用的医学图像分割方法有很多种,许多学者试应用数学、物理、光学、计算机等领域知识拓展医学图像分割的理论方法。
图像分割方法可以分为以下几类:
(1)基于阈值的分割:通过阈值对不同的物体进行分割。
阈值分割是一种基于直接检测的区域分割方法,广泛应用于图像处理领域。[2]在单阈值分割中,图像被划分为目标区域和背景区域;而当需要处理多个目标时,则采用多阈值分割方法,此时图像将被划分为多个目标区域和背景区域。为了区分多个目标区域,通常会对每个区域进行标记处理。基于直方图的分析,阈值分割方法假设目标区域或背景区域内的像素灰度值具有相似性,而不同目标或背景之间的像素灰度值差异显著。这种差异在直方图上表现为多个分离的峰。因此,选取的阈值应位于两个直方图峰之间的谷地区域,从而实现对各峰的有效分离。
阈值分割的优点是实现相对简单,对于不类的物体灰度值或其他特征值相差很大时,能很有效的对图像进行分割。
阈值分割通常作为医学图像的预处理,然后应用其他一系列分割方法进行后处理。
阈值分割的缺点是不适用于多通道图像和特征值相差不大的图像,对于图像中不存在明显的灰度差异或各物体的灰
度值范围有较大重叠的图像分割问题难以得到准确的结果。另外,由于它仅仅考虑了图像的灰度信息而不考虑图像
的空间信息,阈值分割对噪声和灰度不均匀很敏感。
阈值选取的几种方法为直方图阈值分割法、类间方差阈值分割法、二维最大熵值分割法和模糊阈值分割法。
(2)基于边缘的分割:首先通过边缘检测技术识别出边缘像素点,然后将这些像素点连接起来,从而形成所需的边界。
以边缘为基础的分割方法是最早被研究的方法,其核心特征在于通过区域边缘上像素灰度值的显著变化来实现图像分割。该技术旨在通过检测区域间的边缘来实现图像分割。在图像处理领域,边缘检测技术主要可分为串行边缘检测和并行边缘检测两种主要类型。串行边缘检测方法的特点是,每个像素的归属判断依赖于前一个像素的检测结果,而并行边缘检测则通过同时考虑当前像素及其相邻像素的灰度信息来确定其归属,因此能够实现对图像所有像素的统一处理。根据灰度变化的特征,常见的边缘类型主要包括跃阶型、房顶型和凸缘型。
边缘检测分为三类:点检测、线检测和边缘检测。点检测是检测图像中孤立的点,线检测主要是哈夫变换,利用
图像全局特性而直接检测目标轮廓,即可将边缘像素连接起来组成区域封闭边界的常用方法。边缘检测依据两个
具有不同灰度值的相邻区域之间总存在边缘,边缘检测算子很多,如梯度算子,方向算子,拉普拉斯算子,马尔
算子,综合正交算子,坎尼算子等。
代码实现传统算子的图形分割:下图中分别是:原图—— >sobel算子水平检测器——>sobel 算子垂直检测器——>拉普拉斯算子——>Canny算子(其余的边缘检测方式,下期介绍)

(3)基于区域的分割:把各像素划归到各个物体或区域中
图像分割-将图像划分为若干有意义的子区域。这种分解-基于物体具有平滑均匀的表面,与图像中强度恒定或缓慢变化的区域相对应,即每个子区域都具有一定的均匀性质。这些边缘和阈值并未明显依赖分割定义中的均匀性度量。区域分割-直接依据预先确定的相似性准则,直接选取若干特征相似或相同的像素组成区域。常用的区域分割方法包括区域增长法和区域分裂法等。
区域生长和分裂合并是两种典型的串行区域分割方法。其特点在于将分割过程按照顺序完成多个步骤,后续步骤的判断均依赖于前一步骤的结果。区域生长的基本思想是将具有相似特性的像素集合起来形成区域,该方法需要先选定一个种子点,然后依次将种子像素周围的相似像素纳入种子像素所属的区域。区域生长算法的研究重点包括特征度量、区域增长规则的设计,以及算法的高效性和准确性。区域生长方式的优点在于计算过程较为简单。与阈值分割方法类似,区域生长通常与其他分割技术结合使用,特别适用于分割小规模的结构,如肿瘤和烧伤。然而,该方法的一个显著缺点是需要人工干预以确定种子点,这意味着用户必须为需要提取的每一个区域预先设定一个种子点。此外,区域生长方式对噪声较为敏感,可能导致提取出的区域出现空洞,或在局部体效应下将原本分开的区域连接在一起。为了解决这些问题,J.F. Mangin 等人提出了一种基于同伦的区域生长方法,确保了初始区域与最终提取区域的拓扑结构保持一致。Shu-Yen Wan 等人提出的对称区域生长算法有效克服了传统算法对种子点敏感和内存占用多的不足,同时其基于3D连接对象的标记与删除空洞算法具有较高的效率。此外,将模糊连接度方法与区域生长技术相结合也是一种值得探索的方向。
区域生长方法将图像划分为以像素为最小单位的区域进行处理。主要方法可基于区域灰度差、基于区域灰度分布的统计特性和基于区域形状进行区分。
分裂合并方法基于图像数据的金字塔或四叉树结构层次概念,采用金字塔或四叉树数据结构的任一中间层,通过均匀性检测准则对图像进行区域划分操作,逐步优化区域划分的性能,最终实现图像被划分为最少数量的均匀区域。
(4)基于运动的分割:通过视频物体运动进行分割
随着多媒体技术的发展,视频图像得到广泛应用,由一系列时间上连续的2-D图像组成。
从空间分割的角度来看,视频图像分割主要是希望把其中独立运动的区域(目标)逐帧检测处理。
从时间分割的角度来看,主要是把连续的序列分解为时间片断。
(5) 基于活动轮廓模型的方法
原始的Snake模型其基本思想是通过能量最小化,将一条带有能量函数的初始曲线朝着待检测的目标轮廓方向逐步
变形与运动,最终收敛到目标边界,得到一个光滑并且连续的轮廓。原始Snake模型首先在目标区域附近手动设置
一条闭合曲线作为Snake模型的初始轮廓线,初始轮廓线随时间不断演化,越来越逼近目标边界,当演化停止时即
获得最终结果。Snake算法的3个主要步骤为:(1)读取数据;(2)数据的预处理,如图像的去噪、求梯度,求外力场
等;(3)确定模型的参数与迭代次数,然后开始迭代。
原始的Snake模型存在难以捕捉目标凹陷边界及对初始轮廓线敏感等不足,因而后续有许多改进的方法。在此也不过多描述。
(6)模糊聚类算法
大多数医学图像都具有模糊性,其特点表现为图像质量较低且存在较大的噪声干扰。模糊聚类法通过将模糊集理论与聚类算法相结合进行应用,模糊集理论能够有效描述图像中存在的不确定性,因此在分类过程中将其特点引入医学图像分割领域。该方法并非采用“一刀切”的方式将像素点强行划分为单一区域,而是通过模糊理论中的“隶属度”概念,将像素点分配到隶属程度较高的区域,从而显著提高了分割的准确率。目前,模糊C-均值算法(FCM)是应用最为广泛的算法,该算法通过两次迭代计算最终确定最优分割边界。
(7)基于小波变换的方法
小波变换是对Fourier分析的继承和延伸,其在医学图像分割中的基本方法是通过小波变换将图像的直方图分解为不同层次的系数。通过尺度控制和基于小波系数结合分割准则来确定阈值。在较大尺度下,小波变换对由噪声引起的微小变化的敏感度较低,因此能够有效地描述医学图像信号的整体特性,并且能够识别出灰度值变化显著的轮廓。因此,可以通过逐步在不同尺度下确定阈值来处理医学图像。
传统分割方法主要包含7种基本类型。每种方法都经过了多种变形和改进。此外,基于图论、图谱引导以及数学形态学等领域的研究也取得了进展。然而,其主要研究目标是利用深度学习算法进行医学图像分割。
这些损失函数在医学图像处理中被广泛应用于分类任务中,其中涉及的常见损失函数包括交叉熵损失、广义Dice系数以及Focal损失等,其中Focal损失特别适用于处理类别不平衡问题。
一、cross entropy 交叉熵
图像分割中主要采用的损失函数是逐像素级的交叉熵损失。该损失函数通过逐个像素进行分析,将深度方向的像素向量与热编码的目标向量进行对比,以优化分类结果。
cross entropy

可以看出,交叉熵损失函数分别对待每个像素矢量的类预测,并对所有像素取平均,因此可以认为网络对图像中的每个像素进行了平等的学习。然而,在医学图像中,类别不平衡(class imbalance)问题较为常见,这会导致训练过程由像素数量较多的类别主导,使得对较小物体及其特性的学习变得困难,从而影响网络的有效性。
已有大量研究致力于对其展开研究,其中,FCN在每个通道对损失进行加权处理,从而有效缓解数据类别分布不均衡的问题。与此同时,Ronneberger et al.提出的U-Net则采用了新的逐像素损失加权方案,特别在分割对象边界处赋予了更高的权重。该加权方案通过不连续的权重分配机制,使得U-Net模型在生物医学图像中实现了对细胞的精细分割,从而在二元分割图中能够更加便捷地识别出单个细胞。
二、dice coefficient
dice 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 将每个类别分开考虑,然后平均得到最后结果。
在样本极度不均衡的情况下,dice loss表现出较好的适用性。通常情况下,采用dice loss可能会对反向传播产生不利影响,容易导致训练过程不稳定。
三、focal loss

因此,大量的一般性反例下,这些损失主导了梯度下降的方向,从而相对削弱了对这些正样本的影响。
该损失函数在何凯明 1-stage 目标检测框架中被提出。专为解决 class imbalance 问题。首先定性感受一下 target
problem(基于目标检测背景):
在目标检测领域,常用的损失函数为CE(cross entropy)。但会带来一些问题:
在目标检测任务中,通常情况下,图像中目标物体所占的比例远低于背景区域。在传统的样本分类方法中,样本被划分为positive和negative两类。由于negative样本数量过多,导致其损失值过高,容易使positive样本的损失值掩盖,从而不利于整个目标函数的收敛。针对这一问题,采用平衡的CE(balanced cross entropy)方法改进传统CE。
(2)实际上,大部分negative样本集中在背景区,而较少的negative样本位于前景与背景的过渡区域。在背景区的样本通常容易被正确分类,被划分为easy negative。在训练过程中,这类样本对应的score值较高,loss相对较小,因此在反向传播过程中对参数的更新作用有限。这导致hard negative样本难以获得有效的更新,进而影响模型的性能。
归因于常用的损失函数的设计,传统CE(cross entropy)仅限于 positive/ negative 的二元区分,未区分 hard/ easy 样本。在分类任务中,样本可划分为以下几类:具有较高置信度的正样本(hard positive,IOU>0.5)、置信度较低的正样本(easy positive)、具有较低背景干扰的负样本(hard negative,IOU<0.4)以及背景干扰较大的负样本(easy negative)。
所以提出了focal loss 加大 hard negative的 loss值,使之更好的训练。
主要增加了调节因子。调节因子具有双重作用:首先,当网络出现误判时,p_{t}值较小,此时公式基本保持不变;但当p_{t}值较大时,显著降低了容易误判样本的损失权重。其次,通过调节参数γ的作用,进一步提升了调节因子的效果。
就整体而言,调节因子降低了 easy example 损失的贡献,并调节了简单样本权重降低的变化速度,同时扩大了接受低损失样本的范围。对困难样本的训练更有助于提升模型性能。值得注意的是,α与调节因子需要协同配合,具体实施时,可以参考论文中的实验进一步探究。
本文参考了博主「Biyoner」的文章,下一章我将介绍常用的医学影像图像分割算法,并附上了完整的源码。欢迎对医学影像分割算法感兴趣的朋友关注,共同探索深度学习技术,继续前行!
想向大家介绍一下我的一个微信群,这个微信群主要包含深度学习相关的学习内容,与群里的深度学习工程师们一起进行学习交流。

上海第二工业大学智能科学与技术大二 周小夏(CV调包侠)
