【深度学习】医学图像分割的集成与后处理
【深度学习】医学图像分割的集成与后处理
文章目录
1 如何通过组合多个神经网络提高模型性能
1.1 使用融合模型减少模型的方差
2 tensorflow keras 实现模型平均
2.1 训练多种模型
2.2 融合模型
3 神经网络训练之交叉验证
4 训练和后处理
5 介绍一些免费/开源的医学影像后处理工具
代码解读

1 如何通过组合多个神经网络提高模型性能
深度神经网络是非线性的模型;它们不仅增加了模型的灵活性,在理论上随着训练数据量的增长, 其性能表现也会逐步提升;然而, 一个显著缺点是这类方法依赖于随机初始化和优化过程;这也使得这些模型对训练数据极度敏感;并且, 每次重新初始化后的模型参数可能会有所不同, 进而导致预测结果出现差异;这表明在实际应用中使用这些方法可能会遇到一定的局限性
通过融合多个神经网络而非单一网络来降低方差是一种有效策略;这些方法通过集成各个子网络的预测结果进行综合评估,并被命名为融合型神经网络(Aggregation Model);此外,在降低预测方差的同时,这类集成方法能够生成超越单一子网络性能的结果。
1.1 使用融合模型减少模型的方差
训练深度神经网络可能会涉及巨大的计算资源投入。
对于包含数百万个样本的大规模数据集和极深的网络架构来说,这样的训练可能会占用大量的计算时间。
大量不同的候选神经网络被训练后,随后筛选出最优并淘汰其他.该方法存在两大缺陷.
无谓地投入到其他网络的训练中。
神经网络模型未必能在新的测试数据集上取得最佳表现。
神经网络模型可以被视为一种处理复杂非线性关系的技术手段。然而,在一定程度上存在显著的不确定性,在这种情况下可以将其类比为一种权衡欠拟合与过拟合的学习策略。
一种应对神经网络高方差的方法是通过集成多个模型的预测结果。在之前的集成学习文献中已有提及。若一个模型的表现优于随机猜测,则认为其具有优势。关键在于这些模型需采用多样化的策略保持性能稳定,并展现出独特的误差特征。这种现象恰能解释为何集成后的系统表现出更为优异的表现。
将不同神经网络的预测进行整合会产生一个偏差,并且这种偏差能够抵消单一训练后神经网络带来的变化。然而,在与基于相同训练数据集和配置方案下的单一神经网络相比,在集成模型中其对数据变化较为敏感度较低(即其对数据变化更为稳健)。不仅能够降低集成过程中的方差水平,在提升整体预测性能方面还能够超越任何单一最佳模型的表现
集成学习方法是一种将不同模型综合考虑并充分利用其各自优势的技术手段,在实践中它常被用于解决复杂问题时的表现最佳化方案设计中。在这一过程中, 我们通常会构建若干个子模型, 将它们分别应用于同一数据集进行深度学习训练, 并将各子模型经过训练后生成的结果进行综合分析与整合处理, 最终得到更为稳定可靠的决策依据与准确度较高的预测结果作为一种常用技术, 融合模型在机器学习领域中发挥着不可替代的作用, 它不仅能够显著提升算法性能, 更能有效降低过拟合风险, 是实现高质量数据处理的重要保障
如Alex Krizhevsky在其2012年的论文《基于Imagenet的数据驱动图像分类》中
如 Alex 在其 的论文 中
对比不同规模模型集(包括两个、五个直至七个)的整体预测表现
2 tensorflow keras 实现模型平均
使用Keras构建模型平均的一种简便方法是基于同一数据集训练多个不同的模型,并将每个模型的预测结果进行融合。
2.1 训练多种模型
运行多个模型可能会消耗大量资源,这取决于模型规模以及训练数据规模.
所需数量可能会因问题及模型的复杂性而有所变化。这种方法的优势在于能够持续生成新模型,并将它们整合进集合;通过保持测试集的预测评估其性能影响。
小型模型能够实现全部并行加载至内存中;然而超大型模型通常需要每次仅加载一个模型进行预测,并基于各单模型预测结果进行综合推断以获得最终结果。
from tensorflow.keras.models import load_model
...
n_members = 10
models = list()
for i in range(n_members):
# load model
filename = 'model_' + str(i + 1) + '.h5'
model = load_model(filename)
# store in memory
models.append(model)
...
代码解读
2.2 融合模型
对于回归问题,可以对预测计算平均值。
...
# make predictions
yhats = [model.predict(testX) for model in models]
yhats = array(yhats)
# calculate average
outcomes = mean(yhats)
代码解读
对于分类问题,有两种选择。
一种是计算预测的整数类别出现次数。
...
from scipy.stats import mode
# make predictions
yhats = [model.predict_classes(testX) for model in models]
yhats = array(yhats)
# calculate mode
outcomes, _ = scipy.stats.mode(yhats)
代码解读
这种方法的不足之处在于,在面对少量融合与分类数据以及类别繁多的数据集时,其预测结果可能会出现偏差。
对于二分类问题,在输出层设置S型激活函数能够与回归问题类似地求取预测概率的平均值。当处理多于两类的多类别分类时,在输出层配置softmax激活函数可以在应用argmax获取类别值前累加各预测类别的概率。
...
# make predictions
yhats = [model.predict(testX) for model in models]
yhats = array(yhats)
# sum across ensembles
summed = numpy.sum(yhats, axis=0)
# argmax across classes
outcomes = argmax(summed, axis=1)
代码解读
3 神经网络训练之交叉验证
10折交叉验证
其基本原理是将样本数据分割为十等分,在每次实验中将其中九成的数据用作训练集,并将剩余的一成作为测试集。经过十次重复实验所得结果取平均值作为评估标准。
在估计算法精度的过程中,在一般情况下为了提升准确性时,则需要采用多次10折交叉验证的方法作为基础技术手段;此外,在实际应用中常用的方法是进行K折交叉验证(10-fold cross validation),其中一种方法则是通过将数据集划分为若干个子集来进行评估
k-fold交叉验证属于其特例。k-fold交叉验证即为将样本划分为k个等分,在其中k-1个子集上构建模型并进行训练,在剩余的一个子集中测试模型性能。
验证,交叉验证重复K次,每个子样本验证一次。
4 训练和后处理
在训练阶段中,在平面内应用了增强空间信息的方法(如缩放和平移),其目的是减少由于重采样引入的插值伪影影响。
对每个UNet配置均采用五折交叉验证方法,并分别执行推断过程以确保病例能够合理地分层(因为每个病例包含两张图像)。借助交叉验证技术使nnUNet能够在整体数据集上实现验证与融合。最终将这五个独立的交叉验证结果整合起来。基于此评估机制计算所有病例的所有分割结果的平均dice分数作为标量指标来衡量模型性能的具体情况(附录F中已有详细说明)。根据这一评估标准得分为:2D_UNet为0.9165、3D_full_resolution为0.9181、融合推理得分为0.9228。因此,在后续测试阶段中将通过融合推理技术来预测测试集的表现效果。
在融合推理过程中应用细化算法以优化右心房和左心腔区域的分割精度具有重要意义。
确定最优的UNet配置方案
完成模型训练后可通过指定链接自动生成最佳UNet配置方案。
nnUNet_find_best_configuration -m 2d 3d_fullres 3d_lowres 3d_cascade_fullres -t XXX --strict
代码解读
注意:五折交叉验证必须经过完全训练才能确保准确性。同理,在此情境中XXX表示你的任务编号,并且–strict参数指示即使配置缺失也会继续执行操作。
5 介绍一些免费/开源的医学影像后处理工具
ITK Snap

该软件为跨平台、免费且开源的工具。该软件适用于iOS、Windows以及Linux系统。界面设计风格硬核到技术派的 extreme。如需更多信息,请访问下图所示链接

手动分割工具一应俱全,并且实现了大量基于ITK的半自动方法。此外,在添加新的ITK方法方面也极为便利。这一功能特别适合那些正在开发分割算法的工程师们进行参数调试或探索新型算法。针对医学相关专业的同学而言,在这一领域上我更推荐使用下面介绍的那个软件。
Seg3D
Seg3D(http://www.sci.utah.edu/download/seg3d/)是一款在交互设计方面独具特色的开源影像处理工具。考虑到其开发背景与犹他大学及PhotoShop之间的深厚联系,在使用"蒙版"和"图层"这一方面也并非出乎意料。每一次分割操作都会创建一个新的"掩膜";这些"掩膜"之间的逻辑运算也非常便捷。然而,在半自动分割方法这一块的应用仍然较为有限, 主要包括区域生长、阈值等基本手段. 相对于开放平台,该软件在功能扩展方面的限制较为明显. 下图展示了一个CT增强颅内血管分割的具体案例

采用人工辅助手段结合传统手动方法,在投入足够的时间与精力的情况下,则可实现大多数医学影像分割的需求。另外,分割完成后所得的模型可通过三维成像技术完成制作。
