一、前言
此示例演示如何从 3D 医学图像中对脑肿瘤进行语义分割。
语义分割涉及用类标记 3-D 体积的图像或体素中的每个像素。此示例说明了如何使用 3-D U-Net 深度学习网络在磁共振成像 (MRI) 扫描中对脑肿瘤进行二进制语义分割。U-Net是一个快速,高效和简单的网络,在语义分割领域已经流行[1]。医学图像分割的一个挑战是存储和处理 3D 体积所需的内存量。由于 GPU 资源限制,训练网络并在整个输入卷上执行分段是不切实际的。此示例通过将图像划分为较小的块或块来解决此问题,以进行训练和分割。医学图像分割的第二个挑战是数据中的类不平衡,这在使用传统的交叉熵损失时阻碍了训练。此示例通过使用加权多类骰子损失函数 [4] 解决了该问题。对类进行加权有助于抵消较大区域对骰子分数的影响,使网络更容易学习如何分割较小的区域。此示例演示如何使用预训练的 3-D U-Net 架构执行脑肿瘤分割,以及如何使用一组测试图像评估网络性能。您可以选择在 BraTS 数据集 [3] 上训练 2-D U-Net。
二、使用预训练的 3-D U-Net 进行脑肿瘤分割
2.1下载预训练 3-D U-Net
将预训练的 3-D U-Net 下载到名为 的变量中。
2.2 下载 BraTS 示例数据
使用辅助函数 [3] 从 BraTS 数据集下载五个样本测试体积及其相应的标签。帮助程序函数作为支持文件附加到示例。示例数据使您能够对测试数据执行分段,而无需下载完整的数据集。加载其中一个体积样本及其像素标签基本事实。
2.3 执行语义分割
该示例使用重叠平铺策略来处理大型卷。重叠平铺策略选择重叠块,使用 semanticseg 函数预测每个块的标签,然后将块重新组合成一个完整的分段测试卷。该策略可在内存资源有限的 GPU 上实现高效处理。该策略还通过使用神经网络中卷积的有效部分来减少边界伪影 [5]。通过将体积数据存储为块图像对象并使用 apply 函数处理块来实现重叠平铺策略。为上一节中下载的示例卷创建一个对象。
将块大小指定为网络输出大小。要创建重叠块,请指定非零边框大小。此示例使用的边框大小使块加上边框与网络输入大小匹配。使用将部分块填充设置为 执行语义分割。默认填充方法 是合适的,因为卷数据包含多种形式。批大小指定为 1,以防止内存资源受限的 GPU 出现内存不足错误。但是,如果您的 GPU 有足够的内存,那么您可以通过增加块大小来提高进程速度。
显示蒙太奇,显示地面实况的中心切片和沿深度方向的预测标注。
下图显示了在其中一个卷中按顺序显示切片的结果。标注的地面实况位于左侧,网络预测位于右侧。
三、训练 3-D U-Net
示例的这一部分演示如何训练 3-D U-Net。如果不想下载训练数据集或训练网络,则可以跳到此示例的评估网络性能部分。
下载 BraTS 数据集、预处理训练和验证数据、创建用于训练和验证的随机修补程序提取数据存储、设置 3-D U-Net 图层、指定训练选项。
四、评估网络性能
选择包含真实数据量和测试标签的测试数据源。如果将以下代码中的变量保留为 ,则此示例使用五个样本卷进行测试。如果将变量设置为 ,则示例将使用从完整数据集中选择的 55 张测试图像。
该变量存储地面真实检验图像。该变量存储真实值标注。对于每个测试卷,使用 apply 函数处理每个块。该函数执行由帮助程序函数指定的操作,该函数在本示例末尾定义。该函数对每个块执行语义分割,并计算预测标签和真实标签之间的混淆矩阵。
五、程序
使用Matlab R2022b版本,点击打开。(版本过低,运行该程序可能会报错)
程序下载:基于matlab从3D医学图像中对脑肿瘤进行语义分割资源-CSDN文库