CN118097322B - 基于神经网络的阿尔兹海默症分类模型构建方法及*** - Google Patents

基于神经网络的阿尔兹海默症分类模型构建方法及*** Download PDF

Info

Publication number
CN118097322B
CN118097322B CN202410526897.5A CN202410526897A CN118097322B CN 118097322 B CN118097322 B CN 118097322B CN 202410526897 A CN202410526897 A CN 202410526897A CN 118097322 B CN118097322 B CN 118097322B
Authority
CN
China
Prior art keywords
self
convolution
tensor
residual
model
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202410526897.5A
Other languages
English (en)
Other versions
CN118097322A (zh
Inventor
宁春玉
武现阳
韦富彪
石乐民
赵春华
曹秒
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Changchun University of Science and Technology
Original Assignee
Changchun University of Science and Technology
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Changchun University of Science and Technology filed Critical Changchun University of Science and Technology
Priority to CN202410526897.5A priority Critical patent/CN118097322B/zh
Publication of CN118097322A publication Critical patent/CN118097322A/zh
Application granted granted Critical
Publication of CN118097322B publication Critical patent/CN118097322B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Image Processing (AREA)

Abstract

本发明涉及一种基于神经网络的阿尔兹海默症分类模型构建方法及***,属于医学影像处理技术领域,其中方法包括步骤:从阿尔兹海默症神经影像学计划数据集获取结构核磁共振图像,并利用Matlab软件对结构核磁共振图像进行预处理操作,得到全脑图像数据集;加载全脑图像数据集,并按照预设比例对全脑图像数据集进行划分,得到训练集、验证集和测试集;以3DResNet‑50模型为基础,增加并行多尺度卷积模块和细节增强模块,并引入多尺度胶囊网络模型,构建得到改进3DResNet网络模型;对改进3DResNet网络模型进行训练与验证,最终得到阿尔兹海默症分类模型。本发明能够充分提取和利用图像信息,提高了模型的分类性能。

Description

基于神经网络的阿尔兹海默症分类模型构建方法及***
技术领域
本发明涉及医学影像处理技术领域,特别是涉及一种基于神经网络的阿尔兹海默症分类模型构建方法及***。
背景技术
阿尔兹海默症(Alzheimer's Disease,AD)是一种不可逆转的进行性神经退行性疾病,约占目前所有痴呆病例的70%-80%。其表现为大脑记忆功能逐渐退化,认知功能逐步降低,语言表达能力出现障碍,甚至人格方面发生变化。晚期AD患者,往往个人生活不能自理,甚至不能识别出家人,最终记忆稳步恶化。轻度认知障碍(Mild CognitiveImpairment,MCI)是疾病发展并开始影响日常生活活动的阶段,患者会遇到言语困难、运动功能丧失、记忆问题以及读写困难。MCI患者更容易患阿尔茨海默氏病,研究发现,从MCI到AD的年转化率高达10%。AD是患者完全依赖看护人的最后阶段。尽管AD不是死亡的原因,但它会引发其他精神疾病,最终导致死亡。阿尔兹海默症目前尚无完全治愈的有效方法。
在过去,大多数AD的检测方法都依赖于临床观察,这主要靠临床医生的经验,而随着计算机辅助诊断(Computer Aided Diagnosis,CAD)的发展,神经影像学技术可以检测到AD患者大脑结构的细微变化。常用于检测AD的神经影像学方法有磁共振图像(MagneticResonance Imaging,MRI)、计算机断层扫描(Computed Tomography,CT)、正电子发射断层显像(Positron Emission computed Tomography,PET)等,但是这些技术仍然存在分类效果不佳等问题,尤其是在MCI分类方面表现欠佳。
发明内容
为了克服现有的阿尔兹海默症检测方法存在的分类效果不佳等问题,尤其是在MCI分类方面表现欠佳,本发明提供一种基于神经网络的阿尔兹海默症分类模型构建方法及***,该方法及***提供了完整的端到端的解决方案,从提取图像细节信息和空间结构信息的角度,利用3DResNet提取图像特征,充分提取和利用图像信息,提高模型的分类准确率。
为实现上述目的,本发明采取如下的技术方案:
一种基于神经网络的阿尔兹海默症分类模型构建方法,该方法包括以下步骤:
步骤1:从阿尔兹海默症神经影像学计划数据集获取结构核磁共振图像,并利用Matlab软件对结构核磁共振图像进行预处理操作,所述预处理操作包括AC-PC连合操作和颅骨剥离操作,经过预处理操作后得到构建模型所需的全脑图像数据集;
步骤2:加载全脑图像数据集,并按照预设比例对全脑图像数据集进行划分,得到训练集、验证集和测试集;
步骤3:以3DResNet-50模型为基础,增加并行多尺度卷积模块和细节增强模块,并引入多尺度胶囊网络模型,构建得到改进3DResNet网络模型,模型构建过程包括以下步骤:
步骤3.1、导入库:在PyTorch中导入需要使用的库,包括torch、torch.nn、torch.nn.functional;
步骤3.2、构建并行多尺度卷积模块:定义一个名为ParallelMultiScaleConv的类,定义__init__()函数,接受三个参数:输入通道数in_channels、输出通道数out_channels、卷积核大小kernel_size;调用super(ParallelMultiScaleConv, self).__init__()来调用父类nn.Module的构造函数;对卷积核大小kernel_size进行多个尺度的定义:kernel_size_1、kernel_size_2、kernel_size_3,分别是原始卷积核大小kernel_size的两倍、三倍和四倍;使用nn.Parameter创建四个可学习的参数weight1、weight2、weight3、weight4,这些参数用于对不同尺度下的特征进行加权处理;创建四个卷积层conv1、conv2、conv3、conv4,分别对应于不同尺度下的卷积操作;利用前向传播方法forward(self, x),接收一个输入张量x,然后分别对输入张量x进行四个不同尺度的卷积操作,并乘以对应的权重,将四个尺度下的卷积结果加权求和后输出;
步骤3.3、定义用于构建改进3DResNet网络模型主要组成部分的名为Bottleneck的残差块:定义一个类属性expansion,该属性表示残差块中的特征图的通道数扩展倍数,在Bottleneck结构中,第三个卷积层将输入特征图的通道数扩展为原始的4倍;定义__init__()函数,用于接受四个参数:输入通道数in_channels、输出通道数out_channels、步长stride、降采样函数downsample;调用super(Bottleneck, self).__init__()来调用父类nn.Module的构造函数,定义类属性stride,表示卷积操作的步长,创建三个卷积层conv1、conv2、conv3,分别进行1x1、3x3、1x1的卷积操作,用于提取特征;创建三个BatchNormalization层,分别为bn1、bn2、bn3,用于规范化卷积层的输出,加速模型训练;创建激活函数relu和降采样函数downsample,降采样函数downsample用于在残差连接时执行降采样,以匹配维度;利用前向传播方法forward(self, x),将输入张量x赋值给residual变量,通过第一个卷积层conv1进行卷积操作,然后经过批归一化bn1和激活函数relu,接着通过第二个卷积层conv2进行卷积操作,再经过批归一化bn2和激活函数relu,最后通过第三个卷积层conv3进行卷积操作,再经过批归一化bn3,如果存在降采样函数downsample,则对输入张量x进行降采样,使其与卷积后的输出维度相匹配,再将卷积输出与残差residual相加,然后通过激活函数relu,最终返回残差块的输出;
步骤3.4、定义用于实现胶囊网络中胶囊结构的胶囊层:定义__init__()函数,接受多个参数,包括胶囊的数量num_capsules、路由节点的数量num_route_nodes、输入通道数in_channels、输出通道数out_channels、卷积核大小kernel_size、步长stride和迭代次数num_iterations;调用super(CapsuleLayer, self).__init__()来调用父类nn.Module的构造函数,初始化胶囊层的参数,包括路由节点的数量num_route_nodes和迭代次数num_iterations,如果路由节点的数量num_route_nodes不为 -1,表示存在路由节点,此时初始化一个可学***方范数,并在指定的维度上进行求和,计算压缩比例scale,将其应用到原始张量上,最后返回经过压缩后的张量;利用前向传播方法forward(self, x),如果存在路由节点,则执行动态路由算法的迭代过程,在每次迭代中,通过路由权重和输入张量计算先验概率priors,然后根据先验概率priors和动态更新的logit值计算输出向量,如果不存在路由节点,则对输入张量分别通过多个卷积层,并将输出连接起来,然后对连接后的张量应用胶囊激活函数,最终返回胶囊层的输出张量;
步骤3.5、定义细节增强模块:定义__init__()函数,接受三个参数:输入通道数in_channels、输出通道数out_channels和中间通道数inter_channels;创建三个卷积层self.g、self.theta和self.phi,分别用于计算查询、键和值;创建两个用于生成注意力掩码的卷积层self.conv_mask和self.conv_out,以及一个用于调整输出形状的全连接层;利用前向传播方法forward(self, x),获取输入张量x的形状信息,包括批量大小、通道数以及三维空间维度,分别通过三个卷积层计算查询张量theta_x、键张量phi_x和值张量g_x,对张量进行形状变换,计算查询张量theta_x和键张量phi_x之间的相似度矩阵,并通过softmax函数归一化,使用归一化的相似度矩阵计算查询张量theta_x和值张量g_x之间的加权和,得到细节信息,通过卷积层self.conv_mask生成注意力掩码,并通过Sigmoid函数归一化,将输入张量x和注意力掩码相乘,最后通过卷积层self.conv_out进行输出特征的变换,并将其与输入张量x相加,最终得到细节增强模块的输出;
步骤3.6、定义一个改进3DResNet的类:定义__init__()函数,接受多个参数,包括残差块类型block、每个残差模块的残差块数量layers、输入通道数in_channels、图像尺寸image_size、输出通道数out_channels、残差连接类型shortcut_type、输出类别数量num_classes;初始化该网络的参数,创建第一个卷积层self.conv1为步骤3.2定义的并行多尺度卷积模块、批归一化和激活函数relu,添加用于下采样的最大池化层self.maxpool,创建多个胶囊层self.primary_capsules1、self.primary_capsules2、self.primary_capsules3和self.primary_capsules4,且每个胶囊层的通道数和卷积核大小都不同,这些胶囊层全部来自步骤3.4定义的胶囊层,用于提取空间结构信息;创建多个残差模块self.layer1、self.layer2、self.layer3和self.layer4,每个残差模块包含多个步骤3.3定义的Bottleneck,创建多个细节增强模块self.DE1、self.DE2和self.DE3,且各个细节增强模块的通道数不同,创建数字胶囊层digit_capsules和全局平均池化self.avgpool,创建用于分类的全连接层self.fc;定义_make_layer方法,用于构建残差模块,接受参数包括残差块类型block、输出通道数out_channels、残差模块中残差块的数量blocks、残差连接类型shortcut_type和步长stride,根据给定的参数构建残差模块;
步骤3.7、模型运行:定义用于改进3DResNet网络模型的forward函数,将输入张量x通过第一个卷积层self.conv1提取浅层特征,卷积输出通过批归一化层self.bn1进行归一化,归一化后的输出通过激活函数self.relu进行非线性变换,通过最大池化层self.maxpool进行池化操作,以降低特征维度;池化后的特征x输入到第一个胶囊层self.primary_capsules1中,以提取空间结构特征x1,池化后的特征x继续通过残差模块self.layer1进行残差块的处理,处理后的特征x输入到第一个细节增强模块self.DE1中进行进一步处理,残差模块self.layer1处理后的特征x输入到第二个胶囊层self.primary_capsules2中,以提取空间结构特征x2,第一个细节增强模块self.DE1处理后的特征x通过残差模块self.layer2进行残差块的处理,处理后的特征x输入到第二个细节增强模块self.DE2中进行进一步处理,残差模块self.layer2处理后的特征x输入到第三个胶囊层self.primary_capsules3中,以提取空间结构特征x3,第二个细节增强模块self.DE2处理后的特征x通过残差模块self.layer3进行残差块的处理,残差模块self.layer3处理后的特征x输入到第三个细节增强模块self.DE3中进行进一步处理,处理后的特征x输入到第四个胶囊层self.primary_capsules4中,以提取全局特征x4,第三个细节增强模块self.DE3处理后的特征x通过残差模块self.layer4进行残差块的处理;将提取的全局特征x1、x2、x3和x4拼接在一起得到特征张量x5,将特征张量x5输入到最后一个胶囊层self.digit_capsules中进行处理,获得胶囊输出特征x6,再对胶囊输出特征x6进行维度转换,将残差模块self.layer4输出的特征x通过平均池化层self.avgpool进行池化操作并展平为一维向量后,将展平后的特征x与维度转换后的x6进行拼接,最后将拼接后的特征输入到全连接层self.fc中进行分类,最终模型返回分类结果;
步骤4:对所述改进3DResNet网络模型进行训练与验证,最终得到阿尔兹海默症分类模型。
相应地,本发明还提供一种基于神经网络的阿尔兹海默症分类模型构建***,该***包括:
数据预处理单元,用于从阿尔兹海默症神经影像学计划数据集获取结构核磁共振图像,并利用Matlab软件对结构核磁共振图像进行预处理操作,所述预处理操作包括AC-PC连合操作和颅骨剥离操作,经过预处理操作后得到构建模型所需的全脑图像数据集;
数据集加载及划分单元,用于加载全脑图像数据集,并按照预设比例对全脑图像数据集进行划分,得到训练集、验证集和测试集;
模型构建单元,用于以3DResNet-50模型为基础,增加并行多尺度卷积模块和细节增强模块,并引入多尺度胶囊网络模型,构建得到改进3DResNet网络模型,所述模型构建单元包括:
导入子单元,用于在PyTorch中导入需要使用的库,包括torch、torch.nn、torch.nn.functional;
并行多尺度卷积子单元,用于构建并行多尺度卷积模块,所述并行多尺度卷积子单元定义一个名为ParallelMultiScaleConv的类,定义__init__()函数,接受三个参数:输入通道数in_channels、输出通道数out_channels、卷积核大小kernel_size;调用super(ParallelMultiScaleConv, self).__init__()来调用父类nn.Module的构造函数;对卷积核大小kernel_size进行多个尺度的定义:kernel_size_1、kernel_size_2、kernel_size_3,分别是原始卷积核大小kernel_size的两倍、三倍和四倍;使用nn.Parameter创建四个可学习的参数weight1、weight2、weight3、weight4,这些参数用于对不同尺度下的特征进行加权处理;创建四个卷积层conv1、conv2、conv3、conv4,分别对应于不同尺度下的卷积操作;利用前向传播方法forward(self, x),接收一个输入张量x,然后分别对输入张量x进行四个不同尺度的卷积操作,并乘以对应的权重,将四个尺度下的卷积结果加权求和后输出;
残差块子单元,用于定义构建改进3DResNet网络模型主要组成部分的名为Bottleneck的残差块,所述残差块子单元定义一个类属性expansion,该属性表示残差块中的特征图的通道数扩展倍数,在Bottleneck结构中,第三个卷积层将输入特征图的通道数扩展为原始的4倍;定义__init__()函数,用于接受四个参数:输入通道数in_channels、输出通道数out_channels、步长stride、降采样函数downsample;调用super(Bottleneck,self).__init__()来调用父类nn.Module的构造函数,定义类属性stride,表示卷积操作的步长,创建三个卷积层conv1、conv2、conv3,分别进行1x1、3x3、1x1的卷积操作,用于提取特征;创建三个Batch Normalization层,分别为bn1、bn2、bn3,用于规范化卷积层的输出,加速模型训练;创建激活函数relu,降采样函数downsample用于在残差连接时执行降采样,以匹配维度;利用前向传播方法forward(self, x),将输入张量x赋值给residual变量,通过第一个卷积层conv1进行卷积操作,然后经过批归一化bn1和激活函数relu,接着通过第二个卷积层conv2进行卷积操作,再经过批归一化bn2和激活函数relu,最后通过第三个卷积层conv3进行卷积操作,再经过批归一化bn3,如果存在降采样函数downsample,则对输入张量x进行降采样,使其与卷积后的输出维度相匹配,再将卷积输出与残差residual相加,然后通过激活函数relu,最终返回残差块的输出;
胶囊层子单元,用于定义实现胶囊网络中胶囊结构的胶囊层,所述胶囊层子单元定义__init__()函数,接受多个参数,包括胶囊的数量num_capsules、路由节点的数量num_route_nodes、输入通道数in_channels、输出通道数out_channels、卷积核大小kernel_size、步长stride和迭代次数num_iterations;调用super(CapsuleLayer,self).__init__()来调用父类nn.Module的构造函数,初始化胶囊层的参数,包括路由节点的数量num_route_nodes和迭代次数num_iterations,如果路由节点的数量num_route_nodes不为 -1,表示存在路由节点,此时初始化一个可学***方范数,并在指定的维度上进行求和,计算压缩比例scale,将其应用到原始张量上,最后返回经过压缩后的张量;利用前向传播方法forward(self, x),如果存在路由节点,则执行动态路由算法的迭代过程,在每次迭代中,通过路由权重和输入张量计算先验概率priors,然后根据先验概率priors和动态更新的logit值计算输出向量,如果不存在路由节点,则对输入张量分别通过多个卷积层,并将输出连接起来,然后对连接后的张量应用胶囊激活函数,最终返回胶囊层的输出张量;
细节增强子单元,用于定义细节增强模块,所述细节增强子单元定义__init__()函数,接受三个参数:输入通道数in_channels、输出通道数out_channels和中间通道数inter_channels;创建三个卷积层self.g、self.theta和self.phi,分别用于计算查询、键和值;创建两个用于生成注意力掩码的卷积层self.conv_mask和self.conv_out,以及一个用于调整输出形状的全连接层;利用前向传播方法forward(self, x),获取输入张量x的形状信息,包括批量大小、通道数以及三维空间维度,分别通过三个卷积层计算查询张量theta_x、键张量phi_x和值张量g_x,对张量进行形状变换,计算查询张量theta_x和键张量phi_x之间的相似度矩阵,并通过softmax函数归一化,使用归一化的相似度矩阵计算查询张量theta_x和值张量g_x之间的加权和,得到细节信息,通过卷积层self.conv_mask生成注意力掩码,并通过Sigmoid函数归一化,将输入张量x和注意力掩码相乘,最后通过卷积层self.conv_out进行输出特征的变换,并将其与输入张量x相加,最终得到细节增强模块的输出;
类定义子单元,用于定义一个改进3DResNet的类,所述类定义子单元定义__init__()函数,接受多个参数,包括残差块类型block、每个残差模块的残差块数量layers、输入通道数in_channels、图像尺寸image_size、输出通道数out_channels、残差连接类型shortcut_type、输出类别数量num_classes;初始化该网络的参数,创建第一个卷积层self.conv1为并行多尺度卷积子单元定义的并行多尺度卷积模块、批归一化和激活函数relu,添加用于下采样的最大池化层self.maxpool,创建多个胶囊层self.primary_capsules1、self.primary_capsules2、self.primary_capsules3和self.primary_capsules4,且每个胶囊层的通道数和卷积核大小都不同,这些胶囊层全部来自胶囊层子单元定义的胶囊层,用于提取空间结构信息;创建多个残差模块self.layer1、self.layer2、self.layer3和self.layer4,每个残差模块包含多个残差块子单元定义的Bottleneck,创建多个细节增强模块self.DE1、self.DE2和self.DE3,且各个细节增强模块的通道数不同,创建数字胶囊层digit_capsules和全局平均池化self.avgpool,创建用于分类的全连接层self.fc;定义_make_layer方法,用于构建残差模块,接受参数包括残差块类型block、输出通道数out_channels、残差模块中残差块的数量blocks、残差连接类型shortcut_type和步长stride,根据给定的参数构建残差模块;
模型运行子单元,用于定义改进3DResNet网络模型的forward函数,将输入张量x通过第一个卷积层self.conv1提取浅层特征,卷积输出通过批归一化层self.bn1进行归一化,归一化后的输出通过激活函数self.relu进行非线性变换,通过最大池化层self.maxpool进行池化操作,以降低特征维度;池化后的特征x输入到第一个胶囊层self.primary_capsules1中,以提取空间结构特征x1,池化后的特征x继续通过残差模块self.layer1进行残差块的处理,处理后的特征x输入到第一个细节增强模块self.DE1中进行进一步处理,残差模块self.layer1处理后的特征x输入到第二个胶囊层self.primary_capsules2中,以提取空间结构特征x2,第一个细节增强模块self.DE1处理后的特征x通过残差模块self.layer2进行残差块的处理,处理后的特征x输入到第二个细节增强模块self.DE2中进行进一步处理,残差模块self.layer2处理后的特征x输入到第三个胶囊层self.primary_capsules3中,以提取空间结构特征x3,第二个细节增强模块self.DE2处理后的特征x通过残差模块self.layer3进行残差块的处理,残差模块self.layer3处理后的特征x输入到第三个细节增强模块self.DE3中进行进一步处理,处理后的特征x输入到第四个胶囊层self.primary_capsules4中,以提取全局特征x4,第三个细节增强模块self.DE3处理后的特征x通过残差模块self.layer4进行残差块的处理;将提取的全局特征x1、x2、x3和x4拼接在一起得到特征张量x5,将特征张量x5输入到最后一个胶囊层self.digit_capsules中进行处理,获得胶囊输出特征x6,再对胶囊输出特征x6进行维度转换,将残差模块self.layer4输出的特征x通过平均池化层self.avgpool进行池化操作并展平为一维向量后,将展平后的特征x与维度转换后的x6进行拼接,最后将拼接后的特征输入到全连接层self.fc中进行分类,最终模型返回分类结果;
训练与验证单元,用于对所述改进3DResNet网络模型进行训练与验证,得到最终的阿尔兹海默症分类模型。
本发明还提出一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现如上所述方法的步骤。
与现有技术相比,本发明具有以下有益效果:
本发明所提出的基于神经网络的阿尔兹海默症分类模型构建方法及***,首先采用标准的预处理方法,对原图像进行处理,然后将得到的处理后的全脑图像用于构建的改进3DResNet网络模型的训练与验证,最终得到阿尔兹海默症分类模型,其中构建的改进3DResNet网络模型包括一个并行多尺度卷积模块、改进的3DResNet-50模型和胶囊网络,使用并行多尺度卷积模块获得图像的浅层特征,通过改进的3DResNet-50模型获取图像的细节信息,再使用胶囊网络提取图像的空间结构信息,最后将得到的细节信息和空间结构信息进行特征融合并分类,在充分利用图像信息的同时提高了模型的分类性能。
附图说明
图1为本发明实施例所述的基于神经网络的阿尔兹海默症分类模型构建方法的流程图;
图2为本发明中在执行预处理操作过程中的图像变化;
图3为本发明中构建的改进3DResNet网络模型的结构示意图。
具体实施方式
下面将结合附图及较佳实施例对本发明的技术方案进行详细描述。
本发明的目的在于提出一种基于神经网络的阿尔兹海默症分类模型构建方法及***,该方法及***能够提取图像特征和充分利用图像信息,提高分类模型的分类准确率。
如图1所示,本实施例提供的一种基于神经网络的阿尔兹海默症分类模型构建方法,该方法具体包括以下的步骤1~步骤4。
步骤1(S100):从阿尔兹海默症神经影像学计划数据集获取结构核磁共振图像(sMRI),并利用Matlab软件对结构核磁共振图像进行预处理操作,其中预处理操作包括AC-PC连合操作和颅骨剥离操作,经过预处理操作后得到构建模型所需的全脑图像数据集。
如图2所示,首先获取结构核磁共振图像(sMRI),选择开源的阿尔兹海默症数据集,即阿尔兹海默症神经影像学计划(Alzheimer's Disease Neuroimaging program,简称ADNI)数据集,在数据集官网下载图像,图像格式为NIfTI格式,将从数据集下载得到的图像按照正常人(NC)、MCI、AD分类保存在文件夹中。然后对获取的原图像进行统一的预处理操作,预处理操作的过程主要包括两个部分:第一部分使AC-PC连合操作,对图像进行头部运动校正,以消除在数据采集过程中受试者头部运动的影响;第二部分是颅骨剥离操作,将校正后的图像去除颅骨并分割出灰质、白质、脑脊液和全脑图像,得到的图像尺寸均为121*145*121。本发明只利用分割出的全脑图像进行建模。
对结构核磁共振图像进行预处理操作的具体过程包括以下步骤:
步骤1.1:下载工具箱,打开Matlab软件,在Matlab软件中安装图像预处理所要用的工具箱,分别是工具箱SPM12和工具箱CAT12;
步骤1.2:打开工具箱SPM12,将工具箱SPM12安装完毕后,重新打开Matlab软件,在命令行窗口输入spm并执行,出现工具箱SPM12的Menu窗口;
步骤1.3:打开原图像,点击Menu窗口中的Display按钮进行选择需要处理的图像,找到图像所在的文件地址,找到图像后选择其中一张图像,点击Done按钮即可显示出图像;
步骤1.4:进行AC-PC连合(前连合后缘中点与后连合前缘中点的连线),图像以三个角度显示,分别为矢状面、冠状面和水平面,首先对冠状面和水平面进行调整,调整至在矢状面可以找到AC(Anterior Commissure,前连合)点,然后再调整矢状面至PC(PosteriorCommissure,后连合)点与AC点处在同一水平线上,完成AC-PC连合,最后点击Reorient按钮用于保存修改后的图像位置信息;
步骤1.5:打开工具箱CAT12,AC-PC连合后,关掉图像页面,回到工具箱SPM12的Menu窗口,找到Toolbox,选择cat12,弹出cat12窗口;
步骤1.6:进行颅骨剥离,在cat12窗口找到并选择Segment Data,弹出BatchEditor窗口,在Batch Editor窗口中找到并选择Volumes,用于选择经过AC-PC连合的图像,再选择MNI152模板、配准和归一化等操作,最后点击执行操作,完成图像的颅骨剥离;
步骤1.7:执行颅骨剥离后,经过一段时间,颅骨剥离结束,得到label、mri、report三个文件夹,其中report文件夹可查看颅骨剥离效果,mri文件夹中有颅骨剥离得到的全脑图像(wm)、灰质图像(mwp1)和白质图像(mwp2),得到的所有图像的尺寸统一为121*145*121,由得到的全部的全脑图像组成构建模型所需的全脑图像数据集。
步骤2(S200):加载全脑图像数据集,并按照预设比例对全脑图像数据集进行划分,得到训练集、验证集和测试集。
步骤2中的数据加载以及数据集划分具体包括以下步骤:
步骤2.1:在PyTorch中导入需要使用的库,包括torch、torch.nn、os、nibabel;
步骤2.2:定义一个数据集类NiiDataset,用于加载我们要用到的结构核磁共振图像;
步骤2.3:定义__init__()函数,接受一个可选的参数transform,用于指定数据变换操作,初始化两个空列表self.data和self.targets,分别用于存储加载的数据和对应的标签;使用os.walk遍历指定目录中的所有文件,加载其中的NIfTI格式(.nii)的全脑图像数据,并将其添加到self.data中,为每个加载的全脑图像数据添加相应的目标标签,根据目录名称中是否包含特定字符(如“AD”或“CN”)进行标记,这里将“AD”标记为类别1(患者),“CN”标记为类别0(正常);
步骤2.4:定义__len__方法,根据给定的索引idx获取全脑图像数据集中对应位置的样本和标签,将获取的样本和标签作为元组返回,指定transform,应用数据变换操作,确保其具有正确的维度和顺序以匹配模型的要求;
步骤2.5:划分数据集,按照预设比例如8:1:1的比例将全脑图像数据集划分为训练集、验证集和测试集。
步骤3(S300):以3DResNet-50模型为基础,增加细节增强模块,得到改进的3DResNet-50模型,再在改进的3DResNet-50模型基础上增加并行多尺度卷积模块,并引入多尺度胶囊网络模型,最终构建得到改进3DResNet网络模型,改进3DResNet网络模型的网络结构如图3所示。
改进3DResNet网络模型的构建过程具体包括以下步骤:
步骤3.1、导入库:在PyTorch中导入需要使用的库,包括torch、torch.nn、torch.nn.functional。
步骤3.2、构建并行多尺度卷积模块:定义一个名为ParallelMultiScaleConv的类,定义__init__()函数,接受三个参数:输入通道数in_channels、输出通道数out_channels、卷积核大小kernel_size;调用super(ParallelMultiScaleConv, self).__init__()来调用父类nn.Module的构造函数;对卷积核大小kernel_size进行多个尺度的定义:kernel_size_1、kernel_size_2、kernel_size_3,分别是原始卷积核大小kernel_size的两倍、三倍和四倍。使用nn.Parameter创建四个可学习的参数weight1、weight2、weight3、weight4,这些参数weight1、weight2、weight3、weight4用于对不同尺度下的特征进行加权处理。创建四个卷积层conv1、conv2、conv3、conv4,分别对应于不同尺度下的卷积操作。利用前向传播方法forward(self, x),接收一个输入张量x,然后分别对输入张量x进行四个不同尺度的卷积操作,并乘以对应的权重,最后将四个尺度下的卷积结果加权求和,得到并行多尺度卷积模块最终的输出。
步骤3.3:定义一个名为Bottleneck的残差块,用于构建改进3DResNet网络模型的主要组成部分。定义一个类属性expansion,该属性表示残差块中的特征图的通道数扩展倍数。在Bottleneck结构中,第三个卷积层将输入特征图的通道数扩展为原始的4倍。定义__init__()函数,用于接受四个参数:输入通道数in_channels、输出通道数out_channels、步长stride(默认为1)、降采样函数downsample(默认为None);调用super(Bottleneck,self).__init__()来调用父类nn.Module的构造函数,定义了类属性stride,表示卷积操作的步长。创建三个卷积层conv1、conv2、conv3,分别进行1x1、3x3、1x1的卷积操作,用于提取特征。创建三个Batch Normalization层,分别为bn1、bn2、bn3,用于规范化卷积层的输出,加速模型训练。创建激活函数relu和降采样函数downsample,并行多尺度卷积模块用于在残差连接时执行降采样,以匹配维度,如果降采样函数downsample不为None,则表示需要进行降采样操作。利用前向传播方法forward(self, x),将输入张量x赋值给residual变量,通过第一个卷积层conv1进行卷积操作,然后经过批归一化bn1和激活函数relu,接着通过第二个卷积层conv2进行卷积操作,再经过批归一化bn2和激活函数relu,最后通过第三个卷积层conv3进行卷积操作,再经过批归一化bn3,如果存在降采样函数downsample,则对输入张量x进行降采样,使其与卷积后的输出维度相匹配,再将卷积输出与残差residual相加,然后通过激活函数relu,最终返回残差块的输出。
步骤3.4:定义一个胶囊层(Capsule Layer),用于实现胶囊网络(CapsuleNetwork)中的胶囊结构。定义__init__()函数,接受多个参数,包括胶囊的数量num_capsules、路由节点的数量num_route_nodes、输入通道数in_channels、输出通道数out_channels、卷积核大小kernel_size、步长stride和迭代次数num_iterations。调用super(CapsuleLayer, self).__init__()来调用父类nn.Module的构造函数,初始化胶囊层的一些参数,包括路由节点的数量num_route_nodes和迭代次数num_iterations。如果路由节点的数量num_route_nodes不为 -1,表示存在路由节点,即使用了动态路由算法。在这种情况下,初始化一个可学***方范数,并在指定的维度上进行求和,计算了压缩比例scale,将其应用到原始张量上,最后返回经过压缩后的张量。利用前向传播方法forward(self, x),如果存在路由节点,则执行动态路由算法的迭代过程,在每次迭代中,通过路由权重和输入张量计算先验概率priors,然后根据先验概率priors和动态更新的logit值计算输出向量。如果不存在路由节点,则对输入张量分别通过多个卷积层,并将输出连接起来,然后对连接后的张量应用胶囊激活函数,最终返回胶囊层的输出张量。
步骤3.5、定义细节增强模块(DE):定义__init__()函数,接受三个参数:输入通道数in_channels、输出通道数out_channels和中间通道数inter_channels,如果未提供中间通道数inter_channels,则将其设为输入通道数in_channels的一半。创建三个卷积层self.g、self.theta和self.phi,分别用于计算查询、键和值。创建两个用于生成注意力掩码的卷积层self.conv_mask和self.conv_out,以及一个用于调整输出形状的全连接层(FC)。利用前向传播方法forward(self, x),获取输入张量x的形状信息,包括批量大小、通道数以及三维空间维度,分别通过三个卷积层self.g、self.theta和self.phi计算查询张量theta_x、键张量phi_x和值张量g_x,对张量进行形状变换,计算查询张量theta_x和键张量phi_x之间的相似度矩阵,并通过softmax函数归一化,使用归一化的相似度矩阵计算查询张量theta_x和值张量g_x之间的加权和,得到细节信息,通过卷积层self.conv_mask生成注意力掩码,并通过Sigmoid函数归一化,将输入张量x和注意力掩码相乘,以增强输入中的重要信息,最后通过卷积层self.conv_out进行输出特征的变换,并将其与输入张量x相加,得到最终的细节增强模块的输出。
步骤3.6、定义一个改进3DResNet的类:定义__init__()函数,接受多个参数,包括残差块类型block、每个残差模块的残差块数量layers、输入通道数in_channels、图像尺寸image_size、输出通道数out_channels、残差连接类型shortcut_type(默认为 'B')、输出类别数量num_classes等,并初始化该网络的一些参数,包括输入通道数self.in_channels=64。创建第一个卷积层self.conv1为步骤3.2定义的并行多尺度卷积模块、批归一化和激活函数relu,添加了最大池化层self.maxpool,用于下采样。创建多个胶囊层self.primary_capsules1、self.primary_capsules2、self.primary_capsules3和self.primary_capsules4,并且每个胶囊层的通道数和卷积核大小都不相同,这些胶囊层全部来自步骤3.4定义的胶囊层Capsule Layer,用于提取空间结构信息。创建多个残差模块self.layer1、self.layer2、self.layer3和self.layer4,每个残差模块包含多个步骤3.3定义的Bottleneck。创建多个细节增强模块self.DE1、self.DE2和self.DE3,且这些细节增强模块分别为通道数不同的细节增强模块,这些残差块类型全部来自步骤3.5定义的细节增强模块(DE)。创建数字胶囊层digit_capsules和全局平均池化self.avgpool,以及创建全连接层self.fc,用于分类。定义_make_layer方法,用于构建残差模块,接受参数包括残差块类型block、输出通道数out_channels、残差模块中残差块的数量blocks、残差连接类型shortcut_type(默认为 'B')和步长stride(默认为1),根据给定的参数构建残差模块,每个残差模块包含多个残差块。在构建残差模块时,根据需要添加恰当的残差连接,以确保输入和输出的通道数一致。
步骤3.7、模型运行:定义用于改进3DResNet网络模型的forward函数,将输入张量x通过第一个卷积层self.conv1提取浅层特征,卷积输出通过批归一化层self.bn1进行归一化,归一化后的输出通过激活函数self.relu进行非线性变换,通过最大池化层self.maxpool进行池化操作,以降低特征维度;池化后的特征x输入到第一个胶囊层self.primary_capsules1中,以提取空间结构特征x1,池化后的特征x继续通过残差模块self.layer1进行残差块的处理,处理后的特征x输入到第一个细节增强模块self.DE1中进行进一步处理,残差模块self.layer1处理后的特征x输入到第二个胶囊层self.primary_capsules2中,以提取空间结构特征x2。第一个细节增强模块self.DE1处理后的特征x通过残差模块self.layer2进行残差块的处理,处理后的x输入到第二个细节增强模块self.DE2中进行进一步处理,残差模块self.layer2处理后的特征x输入到第三个胶囊层self.primary_capsules3中,以提取空间结构特征x3,第二个细节增强模块self.DE2处理后的特征x通过残差模块self.layer3进行残差块的处理,残差模块self.layer3处理后的特征x输入到第三个细节增强模块self.DE3中进行进一步处理,处理后的特征x输入到第四个胶囊层self.primary_capsules4中,以提取全局特征x4,第三个细节增强模块self.DE3处理后的特征x通过残差模块self.layer4进行残差块的处理;将提取的全局特征x1、x2、x3和x4拼接在一起得到特征张量x5,将特征张量x5输入到最后一个胶囊层self.digit_capsules中进行处理,获得胶囊输出特征x6,再对胶囊输出特征x6进行维度转换,将残差模块self.layer4输出的特征x通过平均池化层self.avgpool进行池化操作并展平为一维向量后,将展平后的特征x与维度转换后的x6进行拼接,最后将拼接后的特征输入到全连接层self.fc中进行分类,最终模型返回分类结果。
步骤4(S400):对改进3DResNet网络模型进行训练与验证,最终得到阿尔兹海默症分类模型。
本步骤对改进3DResNet网络模型进行训练与验证的过程具体包含以下步骤:
步骤4.1:定义训练模型函数,包括模型、目标、模型类型、损失函数和优化器等参数。定义一个改进3DResNet模型,指定了model.Bottleneck和残差块的数量[3, 4, 6, 3]、输入通道数in_channels=1、图像大小[121, 145, 121]。定义交叉熵损失函数nn.CrossEntropyLoss(),用于计算模型预测值和真实标签之间的损失。定义优化器torch.optim.Adam,用于更新模型参数。本实施例选择了Adam优化器,并将学习率设置为lr=0.0001,设置了训练循环的参数,包括设备选择(GPU)、迁移模型到选择的设备、以及训练的总轮数num_epochs=100,batch_size=2。
步骤4.2:创建数据集对象和数据加载器,先将数据集导入,dataset是导入的数据集模块,NiiDataset是数据集类。本步骤分别创建了用于训练、验证和测试的数据集对象,并通过transform参数传递了相应的数据转换操作。使用torch.utils.data.DataLoader类创建数据加载器,其中,train_loader用于加载训练数据集,val_loader用于加载验证数据集,test_loader用于加载测试数据集。参数batch_size指定了每个批次中的样本数,而参数shuffle指定是否在每个epoch开始时打乱数据。
步骤4.3:创建遍历训练的每个epoch的循环,模型设置为训练模式model.train(),对变量进行初始化错做:损失和准确率,遍历训练数据集,将输入数据和标签移动到设备(GPU)上,optimizer.zero_grad()用于清空之前批次的梯度信息,避免梯度累积,outputs = model(images.float())是将输入数据传递给模型,进行前向传播,得到模型的输出,采用loss = criterion(outputs, labels)计算损失,采用loss.backward()进行反向传播,采用optimizer.step()进行参数更新,最后计算准确率和损失,在每个训练周期结束后打印训练损失和准确率的信息。
步骤4.4:模型设置为验证模式model.val(),使用dataloader_val遍历验证集中的每个批次数据,将加载的图像数据和标签数据移至GPU设备(如果可用),以便在GPU设备上进行计算,使用optimizer.zero_grad()将模型参数的梯度清零,以准备接收新一批数据的梯度,模型前向传播得到模型的输出结果outputs,使用给定的损失函数loss =criterion(outputs, labels)计算模型输出和真实标签之间的损失值loss,通过比较模型预测结果predicted和真实标签labels,计算出当前批次的预测正确数,并累加到val_correct变量中,将当前批次的损失值loss累加到val_total_loss变量中,用于后续计算验证集的平均损失,将当前批次的真实标签和模型输出的预测概率记录下来,以便后续计算评估指标。
在对模型进行评估时,使用torch.nn.functional.softmax函数将模型输出的概率值进行softmax处理,并提取出正类的概率作为预测概率,将记录的真实标签和预测概率数据移回CPU,并转换为NumPy数组,并使用extend方法将其添加到预先定义好的列表中。计算混淆矩阵的各项指标,以评估模型在二分类任务中的表现,并在每个训练周期结束后打印验证损失和准确率等评价指标的信息。可选地,用于评估模型在二分类任务中的表现的评估指标采用包括准确率、特异度和AUC等在内的评估指标。
经过以上步骤对构建的改进3DResNet网络模型进行训练、验证和评估之后,即可得到阿尔兹海默症分类模型,利用阿尔兹海默症分类模型对待分类的全脑图像进行分类时,其过程是:先将待分类的全脑图像输入并行多尺度卷积模块得到包含浅层特征的特征图,然后将特征图输入改进的3DResNet-50模型和胶囊网络模型,得到图像的细节信息和空间结构信息,最后将两种信息进行特征融合操作并放入分类器中进行分类,最终得到待分类的全脑图像所对应的分类结果。
本发明的积极效果是:本发明基于3DResNet-50,引入多尺度胶囊网络用于提取图像的空间结构信息,引入细节增强模块用于增强图像的细节信息,实现对预处理后的图像数据进行空间结构信息和的细节信息提取,通过对空间结构信息和细节信息进行融合并分类,充分利用图像信息,进一步提高模型模型分类结果的准确性。
下面结合具体的实验数据,对本发明的技术方案及其技术效果做进一步的说明。在本次实验中,以三种网络模型为对象,分别为现有技术中的3DResNet模型、3DResNet+CapsNet模型和本发明提出的改进3DResNet网络模型(3DResNet+DE+CapsNet),将这三个网络模型分别应用在AD患者与正常人测试集(AD/NC)、MCI患者与AD患者测试集中(MCI/AD),并采用准确率(Accuracy)、特异度(Specificity)、AUC(ROC曲线下面积)三种评估指标来评估模型的分类性能,实验结果如表1所示。
表1 实验结果
数据类型 模型 ACC(%) SPE(%) AUC
AD/NC 3DResNet 85.30 87.39 86.58
AD/NC 3DResNet+ CapsNet 89.71 88.93 90.67
AD/NC 3DResNet+DE+CapsNet 94.12 95.42 94.83
MCI/AD 3DResNet 77.95 75.61 79.35
MCI/AD 3DResNet+ CapsNet 82.36 85.47 85.18
MCI/AD 3DResNet+DE+CapsNet 86.77 84.98 86.72
根据表1可知,本发明提出的改进3DResNet网络模型通过以细节信息和空间结构信息为角度,明显提高了模型分类结果的准确性。
本发明还提供了一种基于神经网络的阿尔兹海默症分类模型构建***,该***具体包括:
数据预处理单元,用于从阿尔兹海默症神经影像学计划数据集获取结构核磁共振图像,并利用Matlab软件对结构核磁共振图像进行预处理操作,其中预处理操作包括AC-PC连合操作和颅骨剥离操作,经过预处理操作后得到构建模型所需的全脑图像数据集;
数据集加载及划分单元,用于加载全脑图像数据集,并按照预设比例对全脑图像数据集进行划分,得到训练集、验证集和测试集;
模型构建单元,用于以3DResNet-50模型为基础,增加并行多尺度卷积模块和细节增强模块,并引入多尺度胶囊网络模型,构建得到改进3DResNet网络模型;
训练与验证单元,用于对改进3DResNet网络模型进行训练与验证,得到最终的阿尔兹海默症分类模型;
其中,模型构建单元具体包括:
导入子单元,用于在PyTorch中导入需要使用的库,包括torch、torch.nn、torch.nn.functional;
并行多尺度卷积子单元,用于构建并行多尺度卷积模块,并行多尺度卷积子单元定义一个名为ParallelMultiScaleConv的类,定义__init__()函数,接受三个参数:输入通道数in_channels、输出通道数out_channels、卷积核大小kernel_size;调用super(ParallelMultiScaleConv, self).__init__()来调用父类nn.Module的构造函数;对卷积核大小kernel_size进行多个尺度的定义:kernel_size_1、kernel_size_2、kernel_size_3,分别是原始卷积核大小kernel_size的两倍、三倍和四倍;使用nn.Parameter创建四个可学习的参数weight1、weight2、weight3、weight4,这些参数用于对不同尺度下的特征进行加权处理;创建四个卷积层conv1、conv2、conv3、conv4,分别对应于不同尺度下的卷积操作;利用前向传播方法forward(self, x),接收一个输入张量x,然后分别对输入张量x进行四个不同尺度的卷积操作,并乘以对应的权重,将四个尺度下的卷积结果加权求和后输出;
残差块子单元,用于定义构建改进3DResNet网络模型主要组成部分的名为Bottleneck的残差块,残差块子单元定义一个类属性expansion,该属性表示残差块中的特征图的通道数扩展倍数,在Bottleneck结构中,第三个卷积层将输入特征图的通道数扩展为原始的4倍;定义__init__()函数,用于接受四个参数:输入通道数in_channels、输出通道数out_channels、步长stride、降采样函数downsample;调用super(Bottleneck,self).__init__()来调用父类nn.Module的构造函数,定义类属性stride,表示卷积操作的步长,创建三个卷积层conv1、conv2、conv3,分别进行1x1、3x3、1x1的卷积操作,用于提取特征;创建三个Batch Normalization层,分别为bn1、bn2、bn3,用于规范化卷积层的输出,加速模型训练;创建激活函数relu,降采样函数downsample用于在残差连接时执行降采样,以匹配维度;利用前向传播方法forward(self, x),将输入张量x赋值给residual变量,通过第一个卷积层conv1进行卷积操作,然后经过批归一化bn1和激活函数relu,接着通过第二个卷积层conv2进行卷积操作,再经过批归一化bn2和激活函数relu,最后通过第三个卷积层conv3进行卷积操作,再经过批归一化bn3,如果存在降采样函数downsample,则对输入张量x进行降采样,使其与卷积后的输出维度相匹配,再将卷积输出与残差residual相加,然后通过激活函数relu,最终返回残差块的输出;
胶囊层子单元,用于定义实现胶囊网络中胶囊结构的胶囊层,胶囊层子单元定义__init__()函数,接受多个参数,包括胶囊的数量num_capsules、路由节点的数量num_route_nodes、输入通道数in_channels、输出通道数out_channels、卷积核大小kernel_size、步长stride和迭代次数num_iterations;调用super(CapsuleLayer, self).__init__()来调用父类nn.Module的构造函数,初始化胶囊层的参数,包括路由节点的数量num_route_nodes和迭代次数num_iterations,如果路由节点的数量num_route_nodes不为-1,表示存在路由节点,此时初始化一个可学***方范数,并在指定的维度上进行求和,计算压缩比例scale,将其应用到原始张量上,最后返回经过压缩后的张量;利用前向传播方法forward(self, x),如果存在路由节点,则执行动态路由算法的迭代过程,在每次迭代中,通过路由权重和输入张量计算先验概率priors,然后根据先验概率priors和动态更新的logit值计算输出向量,如果不存在路由节点,则对输入张量分别通过多个卷积层,并将输出连接起来,然后对连接后的张量应用胶囊激活函数,最终返回胶囊层的输出张量;
细节增强子单元,用于定义细节增强模块,细节增强子单元定义__init__()函数,接受三个参数:输入通道数in_channels、输出通道数out_channels和中间通道数inter_channels;创建三个卷积层self.g、self.theta和self.phi,分别用于计算查询、键和值;创建两个用于生成注意力掩码的卷积层self.conv_mask和self.conv_out,以及一个用于调整输出形状的全连接层;利用前向传播方法forward(self, x),获取输入张量x的形状信息,包括批量大小、通道数以及三维空间维度,分别通过三个卷积层计算查询张量theta_x、键张量phi_x和值张量g_x,对张量进行形状变换,计算查询张量theta_x和键张量phi_x之间的相似度矩阵,并通过softmax函数归一化,使用归一化的相似度矩阵计算查询张量theta_x和值张量g_x之间的加权和,得到细节信息,通过卷积层self.conv_mask生成注意力掩码,并通过Sigmoid函数归一化,将输入张量x和注意力掩码相乘,最后通过卷积层self.conv_out进行输出特征的变换,并将其与输入张量x相加,最终得到细节增强模块的输出;
类定义子单元,用于定义一个改进3DResNet的类,类定义子单元定义__init__()函数,接受多个参数,包括残差块类型block、每个残差模块的残差块数量layers、输入通道数in_channels、图像尺寸image_size、输出通道数out_channels、残差连接类型shortcut_type、输出类别数量num_classes;初始化该网络的参数,创建第一个卷积层self.conv1为并行多尺度卷积子单元定义的并行多尺度卷积模块、批归一化和激活函数relu,添加用于下采样的最大池化层self.maxpool,创建多个胶囊层self.primary_capsules1、self.primary_capsules2、self.primary_capsules3和self.primary_capsules4,且每个胶囊层的通道数和卷积核大小都不同,这些胶囊层全部来自胶囊层子单元定义的胶囊层,用于提取空间结构信息;创建多个残差模块self.layer1、self.layer2、self.layer3和self.layer4,每个残差模块包含多个残差块子单元定义的Bottleneck,创建多个细节增强模块self.DE1、self.DE2和self.DE3,且各个细节增强模块的通道数不同,创建数字胶囊层digit_capsules和全局平均池化self.avgpool,创建用于分类的全连接层self.fc;定义_make_layer方法,用于构建残差模块,接受参数包括残差块类型block、输出通道数out_channels、残差模块中残差块的数量blocks、残差连接类型shortcut_type和步长stride,根据给定的参数构建残差模块;
模型运行子单元,用于定义改进3DResNet网络模型的forward函数,将输入张量x通过第一个卷积层self.conv1提取浅层特征,卷积输出通过批归一化层self.bn1进行归一化,归一化后的输出通过激活函数self.relu进行非线性变换,通过最大池化层self.maxpool进行池化操作,以降低特征维度;池化后的特征x输入到第一个胶囊层self.primary_capsules1中,以提取空间结构特征x1,池化后的特征x继续通过残差模块self.layer1进行残差块的处理,处理后的特征x输入到第一个细节增强模块self.DE1中进行进一步处理,残差模块self.layer1处理后的特征x输入到第二个胶囊层self.primary_capsules2中,以提取空间结构特征x2,第一个细节增强模块self.DE1处理后的特征x通过残差模块self.layer2进行残差块的处理,处理后的特征x输入到第二个细节增强模块self.DE2中进行进一步处理,残差模块self.layer2处理后的特征x输入到第三个胶囊层self.primary_capsules3中,以提取空间结构特征x3,第二个细节增强模块self.DE2处理后的特征x通过残差模块self.layer3进行残差块的处理,残差模块self.layer3处理后的特征x输入到第三个细节增强模块self.DE3中进行进一步处理,处理后的特征x输入到第四个胶囊层self.primary_capsules4中,以提取全局特征x4,第三个细节增强模块self.DE3处理后的特征x通过残差模块self.layer4进行残差块的处理;将提取的全局特征x1、x2、x3和x4拼接在一起得到特征张量x5,将特征张量x5输入到最后一个胶囊层self.digit_capsules中进行处理,获得胶囊输出特征x6,再对胶囊输出特征x6进行维度转换,将残差模块self.layer4输出的特征x通过平均池化层self.avgpool进行池化操作并展平为一维向量后,将展平后的特征x与维度转换后的x6进行拼接,最后将拼接后的特征输入到全连接层self.fc中进行分类,最终模型返回分类结果。
本实施例所提供的基于神经网络的阿尔兹海默症分类模型构建***中各个单元其具体功能的实现方法,可以参照上述方法实施例中描述的实现方法,此处不再赘述。
此外,本发明还提供一种计算机可读存储介质,该计算机可读存储介质存储有计算机程序,并且该计算机程序被处理器执行时实现前述实施例所述的基于神经网络的阿尔兹海默症分类模型构建方法的各个步骤,此处不再赘述。
以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。

Claims (10)

1.一种基于神经网络的阿尔兹海默症分类模型构建方法,其特征在于,包括以下步骤:
步骤1:从阿尔兹海默症神经影像学计划数据集获取结构核磁共振图像,并利用Matlab软件对结构核磁共振图像进行预处理操作,所述预处理操作包括AC-PC连合操作和颅骨剥离操作,经过预处理操作后得到构建模型所需的全脑图像数据集;
步骤2:加载全脑图像数据集,并按照预设比例对全脑图像数据集进行划分,得到训练集、验证集和测试集;
步骤3:以3DResNet-50模型为基础,增加并行多尺度卷积模块和细节增强模块,并引入多尺度胶囊网络模型,构建得到改进3DResNet网络模型,模型构建过程包括以下步骤:
步骤3.1、导入库:在PyTorch中导入需要使用的库,包括torch、torch.nn、torch.nn.functional;
步骤3.2、构建并行多尺度卷积模块:定义一个名为ParallelMultiScaleConv的类,定义__init__()函数,接受三个参数:输入通道数in_channels、输出通道数out_channels、卷积核大小kernel_size;调用super(ParallelMultiScaleConv, self).__init__()来调用父类nn.Module的构造函数;对卷积核大小kernel_size进行多个尺度的定义:kernel_size_1、kernel_size_2、kernel_size_3,分别是原始卷积核大小kernel_size的两倍、三倍和四倍;使用nn.Parameter创建四个可学习的参数weight1、weight2、weight3、weight4,这些参数用于对不同尺度下的特征进行加权处理;创建四个卷积层conv1、conv2、conv3、conv4,分别对应于不同尺度下的卷积操作;利用前向传播方法forward(self, x),接收一个输入张量x,然后分别对输入张量x进行四个不同尺度的卷积操作,并乘以对应的权重,将四个尺度下的卷积结果加权求和后输出;
步骤3.3、定义用于构建改进3DResNet网络模型主要组成部分的名为Bottleneck的残差块:定义一个类属性expansion,该属性表示残差块中的特征图的通道数扩展倍数,在Bottleneck结构中,第三个卷积层将输入特征图的通道数扩展为原始的4倍;定义__init__()函数,用于接受四个参数:输入通道数in_channels、输出通道数out_channels、步长stride、降采样函数downsample;调用super(Bottleneck, self).__init__()来调用父类nn.Module的构造函数,定义类属性stride,表示卷积操作的步长,创建三个卷积层conv1、conv2、conv3,分别进行1x1、3x3、1x1的卷积操作,用于提取特征;创建三个BatchNormalization层,分别为bn1、bn2、bn3,用于规范化卷积层的输出,加速模型训练;创建激活函数relu和降采样函数downsample,降采样函数downsample用于在残差连接时执行降采样,以匹配维度;利用前向传播方法forward(self, x),将输入张量x赋值给residual变量,通过第一个卷积层conv1进行卷积操作,然后经过批归一化bn1和激活函数relu,接着通过第二个卷积层conv2进行卷积操作,再经过批归一化bn2和激活函数relu,最后通过第三个卷积层conv3进行卷积操作,再经过批归一化bn3,如果存在降采样函数downsample,则对输入张量x进行降采样,使其与卷积后的输出维度相匹配,再将卷积输出与残差residual相加,然后通过激活函数relu,最终返回残差块的输出;
步骤3.4、定义用于实现胶囊网络中胶囊结构的胶囊层:定义__init__()函数,接受多个参数,包括胶囊的数量num_capsules、路由节点的数量num_route_nodes、输入通道数in_channels、输出通道数out_channels、卷积核大小kernel_size、步长stride和迭代次数num_iterations;调用super(CapsuleLayer, self).__init__()来调用父类nn.Module的构造函数,初始化胶囊层的参数,包括路由节点的数量num_route_nodes和迭代次数num_iterations,如果路由节点的数量num_route_nodes不为 -1,表示存在路由节点,此时初始化一个可学***方范数,并在指定的维度上进行求和,计算压缩比例scale,将其应用到原始张量上,最后返回经过压缩后的张量;利用前向传播方法forward(self, x),如果存在路由节点,则执行动态路由算法的迭代过程,在每次迭代中,通过路由权重和输入张量计算先验概率priors,然后根据先验概率priors和动态更新的logit值计算输出向量,如果不存在路由节点,则对输入张量分别通过多个卷积层,并将输出连接起来,然后对连接后的张量应用胶囊激活函数,最终返回胶囊层的输出张量;
步骤3.5、定义细节增强模块:定义__init__()函数,接受三个参数:输入通道数in_channels、输出通道数out_channels和中间通道数inter_channels;创建三个卷积层self.g、self.theta和self.phi,分别用于计算查询、键和值;创建两个用于生成注意力掩码的卷积层self.conv_mask和self.conv_out,以及一个用于调整输出形状的全连接层;利用前向传播方法forward(self, x),获取输入张量x的形状信息,包括批量大小、通道数以及三维空间维度,分别通过三个卷积层计算查询张量theta_x、键张量phi_x和值张量g_x,对张量进行形状变换,计算查询张量theta_x和键张量phi_x之间的相似度矩阵,并通过softmax函数归一化,使用归一化的相似度矩阵计算查询张量theta_x和值张量g_x之间的加权和,得到细节信息,通过卷积层self.conv_mask生成注意力掩码,并通过Sigmoid函数归一化,将输入张量x和注意力掩码相乘,最后通过卷积层self.conv_out进行输出特征的变换,并将其与输入张量x相加,最终得到细节增强模块的输出;
步骤3.6、定义一个改进3DResNet的类:定义__init__()函数,接受多个参数,包括残差块类型block、每个残差模块的残差块数量layers、输入通道数in_channels、图像尺寸image_size、输出通道数out_channels、残差连接类型shortcut_type、输出类别数量num_classes;初始化该网络的参数,创建第一个卷积层self.conv1为步骤3.2定义的并行多尺度卷积模块、批归一化和激活函数relu,添加用于下采样的最大池化层self.maxpool,创建多个胶囊层self.primary_capsules1、self.primary_capsules2、self.primary_capsules3和self.primary_capsules4,且每个胶囊层的通道数和卷积核大小都不同,这些胶囊层全部来自步骤3.4定义的胶囊层,用于提取空间结构信息;创建多个残差模块self.layer1、self.layer2、self.layer3和self.layer4,每个残差模块包含多个步骤3.3定义的Bottleneck,创建多个细节增强模块self.DE1、self.DE2和self.DE3,且各个细节增强模块的通道数不同,创建数字胶囊层digit_capsules和全局平均池化self.avgpool,创建用于分类的全连接层self.fc;定义_make_layer方法,用于构建残差模块,接受参数包括残差块类型block、输出通道数out_channels、残差模块中残差块的数量blocks、残差连接类型shortcut_type和步长stride,根据给定的参数构建残差模块;
步骤3.7、模型运行:定义用于改进3DResNet网络模型的forward函数,将输入张量x通过第一个卷积层self.conv1提取浅层特征,卷积输出通过批归一化层self.bn1进行归一化,归一化后的输出通过激活函数self.relu进行非线性变换,通过最大池化层self.maxpool进行池化操作,以降低特征维度;池化后的特征x输入到第一个胶囊层self.primary_capsules1中,以提取空间结构特征x1,池化后的特征x继续通过残差模块self.layer1进行残差块的处理,处理后的特征x输入到第一个细节增强模块self.DE1中进行进一步处理,残差模块self.layer1处理后的特征x输入到第二个胶囊层self.primary_capsules2中,以提取空间结构特征x2,第一个细节增强模块self.DE1处理后的特征x通过残差模块self.layer2进行残差块的处理,处理后的特征x输入到第二个细节增强模块self.DE2中进行进一步处理,残差模块self.layer2处理后的特征x输入到第三个胶囊层self.primary_capsules3中,以提取空间结构特征x3,第二个细节增强模块self.DE2处理后的特征x通过残差模块self.layer3进行残差块的处理,残差模块self.layer3处理后的特征x输入到第三个细节增强模块self.DE3中进行进一步处理,处理后的特征x输入到第四个胶囊层self.primary_capsules4中,以提取全局特征x4,第三个细节增强模块self.DE3处理后的特征x通过残差模块self.layer4进行残差块的处理;将提取的全局特征x1、x2、x3和x4拼接在一起得到特征张量x5,将特征张量x5输入到最后一个胶囊层self.digit_capsules中进行处理,获得胶囊输出特征x6,再对胶囊输出特征x6进行维度转换,将残差模块self.layer4输出的特征x通过平均池化层self.avgpool进行池化操作并展平为一维向量后,将展平后的特征x与维度转换后的x6进行拼接,最后将拼接后的特征输入到全连接层self.fc中进行分类,最终模型返回分类结果;
步骤4:对所述改进3DResNet网络模型进行训练与验证,最终得到阿尔兹海默症分类模型。
2.根据权利要求1所述的一种基于神经网络的阿尔兹海默症分类模型构建方法,其特征在于,利用Matlab软件对结构核磁共振图像进行预处理操作的过程包括以下步骤:
步骤1.1:在Matlab软件中安装图像预处理所要用的工具箱,分别是工具箱SPM12和工具箱CAT12;
步骤1.2:打开工具箱SPM12,将工具箱SPM12安装完毕后,重新打开Matlab软件,在命令行窗口输入spm并执行,出现工具箱SPM12的Menu窗口;
步骤1.3:打开原图像,点击Menu窗口中的Display按钮选择需要处理的图像,找到图像所在的文件地址,然后选择其中一张图像,点击Done按钮显示出图像;
步骤1.4:图像以三个角度显示,分别为矢状面、冠状面和水平面,首先对冠状面和水平面进行调整,调整至在矢状面可以找到AC点,然后再调整矢状面至PC点与AC点处在同一水平线上,完成AC-PC连合,最后点击Reorient按钮用于保存修改后的图像位置信息;
步骤1.5:打开工具箱CAT12,AC-PC连合后,关掉图像页面,回到工具箱SPM12的Menu窗口,找到Toolbox,选择cat12,弹出cat12窗口;
步骤1.6:在cat12窗口找到并选择Segment Data,弹出Batch Editor窗口,在BatchEditor窗口中找到并选择Volumes,用于选择经过AC-PC连合的图像,再选择MNI152模板、配准和归一化操作,最后点击执行操作,完成图像的颅骨剥离;
步骤1.7:颅骨剥离结束后,得到label、mri、report三个文件夹,其中report文件夹可查看颅骨剥离效果,mri文件夹中有颅骨剥离得到的全脑图像、灰质图像和白质图像,得到的所有图像的尺寸统一为121*145*121,由全部的全脑图像组成全脑图像数据集。
3.根据权利要求1所述的一种基于神经网络的阿尔兹海默症分类模型构建方法,其特征在于,步骤2包括以下步骤:
步骤2.1:在PyTorch中导入需要使用的库,包括torch、torch.nn、os、nibabel;
步骤2.2:定义一个数据集类NiiDataset,用于加载全脑图像;
步骤2.3:定义__init__()函数,接受参数transform,用于指定数据变换操作;初始化两个空列表self.data和self.targets,分别用于存储加载的数据和对应的标签;使用os.walk遍历指定目录中的所有文件,加载其中的NIfTI格式的全脑图像数据,并将其添加到self.data中,同时为每个加载的全脑图像数据添加相应的目标标签,根据目录名称中是否包含特定字符进行标记;
步骤2.4:定义__len__方法,根据给定的索引idx获取全脑图像数据集中对应位置的样本和标签,将获取的样本和标签作为元组返回,指定transform,应用数据变换操作,确保其具有正确的维度和顺序以匹配模型的要求;
步骤2.5:将全脑图像数据集按照预设比例划分为训练集、验证集和测试集。
4.根据权利要求3所述的一种基于神经网络的阿尔兹海默症分类模型构建方法,其特征在于,所述预设比例为训练集、验证集和测试集之比为8:1:1。
5.根据权利要求1所述的一种基于神经网络的阿尔兹海默症分类模型构建方法,其特征在于,步骤4包括以下步骤:
步骤4.1:定义一个改进3DResNet模型,指定了model.Bottleneck和残差块的数量[3,4, 6, 3]、输入通道数in_channels=1、图像大小[121, 145, 121];定义交叉熵损失函数nn.CrossEntropyLoss(),用于计算模型预测值和真实标签之间的损失;定义优化器torch.optim.Adam,用于更新模型参数,并将学习率设置为lr=0.0001;设置训练循环的参数,包括设备选择、迁移模型到选择的设备、以及训练的总轮数num_epochs=100,batch_size=2;
步骤4.2:分别创建用于训练、验证和测试的数据集对象,并通过transform参数传递相应的数据转换操作;使用torch.utils.data.DataLoader类创建数据加载器,其中,train_loader用于加载训练数据集,val_loader用于加载验证数据集,test_loader用于加载测试数据集;参数batch_size指定了每个批次中的样本数,而参数shuffle指定是否在每个epoch开始时打乱数据;
步骤4.3:创建遍历训练的每个epoch的循环,模型设置为训练模式model.train(),对变量进行初始化错做:损失和准确率,遍历训练数据集,将输入数据和标签移动到设备上,optimizer.zero_grad()用于清空之前批次的梯度信息,outputs = model(images.float())是将输入数据传递给模型,进行前向传播,得到模型的输出,采用loss = criterion(outputs, labels)计算损失,采用loss.backward()进行反向传播,采用optimizer.step()进行参数更新,最后计算准确率和损失,在每个训练周期结束后打印训练损失和准确率的信息;
步骤4.4:模型设置为验证模式model.val(),使用dataloader_val遍历验证集中的每个批次数据,将加载的图像数据和标签数据移至设备,以便在设备上进行计算,使用optimizer.zero_grad()将模型参数的梯度清零,以准备接收新一批数据的梯度,模型前向传播得到模型的输出结果outputs,使用给定的损失函数loss = criterion(outputs,labels)计算模型输出和真实标签之间的损失值loss,通过比较模型预测结果predicted和真实标签labels,计算出当前批次的预测正确数,并累加到val_correct变量中,将当前批次的损失值loss累加到val_total_loss变量中,用于后续计算验证集的平均损失,将当前批次的真实标签和模型输出的预测概率记录下来,以便后续计算评估指标。
6.根据权利要求5所述的一种基于神经网络的阿尔兹海默症分类模型构建方法,其特征在于,利用torch.nn.functional.softmax函数将模型输出的概率值进行softmax处理,并提取出正类的概率作为预测概率,将记录的真实标签和预测概率数据移回CPU,并转换为NumPy数组,使用extend方法将NumPy数组添加到预先定义好的列表中,然后计算混淆矩阵的各项指标,用于评估模型在二分类任务中的表现,并在每个训练周期结束后打印包括验证损失和准确率在内的评价指标的信息。
7.根据权利要求5或6所述的一种基于神经网络的阿尔兹海默症分类模型构建方法,其特征在于,用于评估模型在二分类任务中的表现的评估指标包括准确率、特异度和AUC。
8.根据权利要求1所述的一种基于神经网络的阿尔兹海默症分类模型构建方法,其特征在于,选择的设备为GPU。
9.一种基于神经网络的阿尔兹海默症分类模型构建***,其特征在于,包括:
数据预处理单元,用于从阿尔兹海默症神经影像学计划数据集获取结构核磁共振图像,并利用Matlab软件对结构核磁共振图像进行预处理操作,所述预处理操作包括AC-PC连合操作和颅骨剥离操作,经过预处理操作后得到构建模型所需的全脑图像数据集;
数据集加载及划分单元,用于加载全脑图像数据集,并按照预设比例对全脑图像数据集进行划分,得到训练集、验证集和测试集;
模型构建单元,用于以3DResNet-50模型为基础,增加并行多尺度卷积模块和细节增强模块,并引入多尺度胶囊网络模型,构建得到改进3DResNet网络模型,所述模型构建单元包括:
导入子单元,用于在PyTorch中导入需要使用的库,包括torch、torch.nn、torch.nn.functional;
并行多尺度卷积子单元,用于构建并行多尺度卷积模块,所述并行多尺度卷积子单元定义一个名为ParallelMultiScaleConv的类,定义__init__()函数,接受三个参数:输入通道数in_channels、输出通道数out_channels、卷积核大小kernel_size;调用super(ParallelMultiScaleConv, self).__init__()来调用父类nn.Module的构造函数;对卷积核大小kernel_size进行多个尺度的定义:kernel_size_1、kernel_size_2、kernel_size_3,分别是原始卷积核大小kernel_size的两倍、三倍和四倍;使用nn.Parameter创建四个可学习的参数weight1、weight2、weight3、weight4,这些参数用于对不同尺度下的特征进行加权处理;创建四个卷积层conv1、conv2、conv3、conv4,分别对应于不同尺度下的卷积操作;利用前向传播方法forward(self, x),接收一个输入张量x,然后分别对输入张量x进行四个不同尺度的卷积操作,并乘以对应的权重,将四个尺度下的卷积结果加权求和后输出;
残差块子单元,用于定义构建改进3DResNet网络模型主要组成部分的名为Bottleneck的残差块,所述残差块子单元定义一个类属性expansion,该属性表示残差块中的特征图的通道数扩展倍数,在Bottleneck结构中,第三个卷积层将输入特征图的通道数扩展为原始的4倍;定义__init__()函数,用于接受四个参数:输入通道数in_channels、输出通道数out_channels、步长stride、降采样函数downsample;调用super(Bottleneck, self).__init__()来调用父类nn.Module的构造函数,定义类属性stride,表示卷积操作的步长,创建三个卷积层conv1、conv2、conv3,分别进行1x1、3x3、1x1的卷积操作,用于提取特征;创建三个Batch Normalization层,分别为bn1、bn2、bn3,用于规范化卷积层的输出,加速模型训练;创建激活函数relu,降采样函数downsample用于在残差连接时执行降采样,以匹配维度;利用前向传播方法forward(self, x),将输入张量x赋值给residual变量,通过第一个卷积层conv1进行卷积操作,然后经过批归一化bn1和激活函数relu,接着通过第二个卷积层conv2进行卷积操作,再经过批归一化bn2和激活函数relu,最后通过第三个卷积层conv3进行卷积操作,再经过批归一化bn3,如果存在降采样函数downsample,则对输入张量x进行降采样,使其与卷积后的输出维度相匹配,再将卷积输出与残差residual相加,然后通过激活函数relu,最终返回残差块的输出;
胶囊层子单元,用于定义实现胶囊网络中胶囊结构的胶囊层,所述胶囊层子单元定义__init__()函数,接受多个参数,包括胶囊的数量num_capsules、路由节点的数量num_route_nodes、输入通道数in_channels、输出通道数out_channels、卷积核大小kernel_size、步长stride和迭代次数num_iterations;调用super(CapsuleLayer, self).__init__()来调用父类nn.Module的构造函数,初始化胶囊层的参数,包括路由节点的数量num_route_nodes和迭代次数num_iterations,如果路由节点的数量num_route_nodes不为-1,表示存在路由节点,此时初始化一个可学***方范数,并在指定的维度上进行求和,计算压缩比例scale,将其应用到原始张量上,最后返回经过压缩后的张量;利用前向传播方法forward(self, x),如果存在路由节点,则执行动态路由算法的迭代过程,在每次迭代中,通过路由权重和输入张量计算先验概率priors,然后根据先验概率priors和动态更新的logit值计算输出向量,如果不存在路由节点,则对输入张量分别通过多个卷积层,并将输出连接起来,然后对连接后的张量应用胶囊激活函数,最终返回胶囊层的输出张量;
细节增强子单元,用于定义细节增强模块,所述细节增强子单元定义__init__()函数,接受三个参数:输入通道数in_channels、输出通道数out_channels和中间通道数inter_channels;创建三个卷积层self.g、self.theta和self.phi,分别用于计算查询、键和值;创建两个用于生成注意力掩码的卷积层self.conv_mask和self.conv_out,以及一个用于调整输出形状的全连接层;利用前向传播方法forward(self, x),获取输入张量x的形状信息,包括批量大小、通道数以及三维空间维度,分别通过三个卷积层计算查询张量theta_x、键张量phi_x和值张量g_x,对张量进行形状变换,计算查询张量theta_x和键张量phi_x之间的相似度矩阵,并通过softmax函数归一化,使用归一化的相似度矩阵计算查询张量theta_x和值张量g_x之间的加权和,得到细节信息,通过卷积层self.conv_mask生成注意力掩码,并通过Sigmoid函数归一化,将输入张量x和注意力掩码相乘,最后通过卷积层self.conv_out进行输出特征的变换,并将其与输入张量x相加,最终得到细节增强模块的输出;
类定义子单元,用于定义一个改进3DResNet的类,所述类定义子单元定义__init__()函数,接受多个参数,包括残差块类型block、每个残差模块的残差块数量layers、输入通道数in_channels、图像尺寸image_size、输出通道数out_channels、残差连接类型shortcut_type、输出类别数量num_classes;初始化该网络的参数,创建第一个卷积层self.conv1为并行多尺度卷积子单元定义的并行多尺度卷积模块、批归一化和激活函数relu,添加用于下采样的最大池化层self.maxpool,创建多个胶囊层self.primary_capsules1、self.primary_capsules2、self.primary_capsules3和self.primary_capsules4,且每个胶囊层的通道数和卷积核大小都不同,这些胶囊层全部来自胶囊层子单元定义的胶囊层,用于提取空间结构信息;创建多个残差模块self.layer1、self.layer2、self.layer3和self.layer4,每个残差模块包含多个残差块子单元定义的Bottleneck,创建多个细节增强模块self.DE1、self.DE2和self.DE3,且各个细节增强模块的通道数不同,创建数字胶囊层digit_capsules和全局平均池化self.avgpool,创建用于分类的全连接层self.fc;定义_make_layer方法,用于构建残差模块,接受参数包括残差块类型block、输出通道数out_channels、残差模块中残差块的数量blocks、残差连接类型shortcut_type和步长stride,根据给定的参数构建残差模块;
模型运行子单元,用于定义改进3DResNet网络模型的forward函数,将输入张量x通过第一个卷积层self.conv1提取浅层特征,卷积输出通过批归一化层self.bn1进行归一化,归一化后的输出通过激活函数self.relu进行非线性变换,通过最大池化层self.maxpool进行池化操作,以降低特征维度;池化后的特征x输入到第一个胶囊层self.primary_capsules1中,以提取空间结构特征x1,池化后的特征x继续通过残差模块self.layer1进行残差块的处理,处理后的特征x输入到第一个细节增强模块self.DE1中进行进一步处理,残差模块self.layer1处理后的特征x输入到第二个胶囊层self.primary_capsules2中,以提取空间结构特征x2,第一个细节增强模块self.DE1处理后的特征x通过残差模块self.layer2进行残差块的处理,处理后的特征x输入到第二个细节增强模块self.DE2中进行进一步处理,残差模块self.layer2处理后的特征x输入到第三个胶囊层self.primary_capsules3中,以提取空间结构特征x3,第二个细节增强模块self.DE2处理后的特征x通过残差模块self.layer3进行残差块的处理,残差模块self.layer3处理后的特征x输入到第三个细节增强模块self.DE3中进行进一步处理,处理后的特征x输入到第四个胶囊层self.primary_capsules4中,以提取全局特征x4,第三个细节增强模块self.DE3处理后的特征x通过残差模块self.layer4进行残差块的处理;将提取的全局特征x1、x2、x3和x4拼接在一起得到特征张量x5,将特征张量x5输入到最后一个胶囊层self.digit_capsules中进行处理,获得胶囊输出特征x6,再对胶囊输出特征x6进行维度转换,将残差模块self.layer4输出的特征x通过平均池化层self.avgpool进行池化操作并展平为一维向量后,将展平后的特征x与维度转换后的x6进行拼接,最后将拼接后的特征输入到全连接层self.fc中进行分类,最终模型返回分类结果;
训练与验证单元,用于对所述改进3DResNet网络模型进行训练与验证,得到最终的阿尔兹海默症分类模型。
10.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至8任一项所述方法的步骤。
CN202410526897.5A 2024-04-29 2024-04-29 基于神经网络的阿尔兹海默症分类模型构建方法及*** Active CN118097322B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202410526897.5A CN118097322B (zh) 2024-04-29 2024-04-29 基于神经网络的阿尔兹海默症分类模型构建方法及***

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202410526897.5A CN118097322B (zh) 2024-04-29 2024-04-29 基于神经网络的阿尔兹海默症分类模型构建方法及***

Publications (2)

Publication Number Publication Date
CN118097322A CN118097322A (zh) 2024-05-28
CN118097322B true CN118097322B (zh) 2024-07-02

Family

ID=91156681

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202410526897.5A Active CN118097322B (zh) 2024-04-29 2024-04-29 基于神经网络的阿尔兹海默症分类模型构建方法及***

Country Status (1)

Country Link
CN (1) CN118097322B (zh)

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111738363A (zh) * 2020-07-24 2020-10-02 温州大学 基于改进的3d cnn网络的阿尔茨海默病分类方法
CN115761358A (zh) * 2022-11-24 2023-03-07 深圳先进技术研究院 一种基于残差胶囊网络对心肌纤维化进行分类的方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115410264A (zh) * 2022-10-18 2022-11-29 上海海事大学 用于提高视频中面部表情识别准确率的网络模型及方法

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111738363A (zh) * 2020-07-24 2020-10-02 温州大学 基于改进的3d cnn网络的阿尔茨海默病分类方法
CN115761358A (zh) * 2022-11-24 2023-03-07 深圳先进技术研究院 一种基于残差胶囊网络对心肌纤维化进行分类的方法

Also Published As

Publication number Publication date
CN118097322A (zh) 2024-05-28

Similar Documents

Publication Publication Date Title
Cardoso et al. Monai: An open-source framework for deep learning in healthcare
US10496884B1 (en) Transformation of textbook information
US10853449B1 (en) Report formatting for automated or assisted analysis of medical imaging data and medical diagnosis
US10692602B1 (en) Structuring free text medical reports with forced taxonomies
US12008757B2 (en) Method and system for automatic multiple lesion annotation of medical images
Chen et al. Deep learning assessment of myocardial infarction from MR image sequences
WO2018010101A1 (en) Method, apparatus and system for 3d face tracking
KR102160390B1 (ko) 인공지능 기반의 사용자 의료정보 분석 방법 및 시스템
Wiestler et al. Deep learning for medical image analysis: a brief introduction
Gao et al. Joint disc and cup segmentation based on recurrent fully convolutional network
Gopinath et al. SegRecon: Learning joint brain surface reconstruction and segmentation from images
Bouslama et al. Diagnosis and precise localization of cardiomegaly disease using U-NET
Zografos et al. Hierarchical multi-organ segmentation without registration in 3D abdominal CT images
Ogiela et al. Natural user interfaces in medical image analysis
CN117036894B (zh) 基于深度学习的多模态数据分类方法、装置及计算机设备
Li et al. Pancreas segmentation via spatial context based u-net and bidirectional lstm
Castillo et al. Brain tumor segmentation and parsing on MRIs using multiresolution neural networks
CN114787816A (zh) 针对机器学习方法的数据增强
CN116030308B (zh) 基于图卷积神经网络的多模态医学图像分类方法及***
CN118097322B (zh) 基于神经网络的阿尔兹海默症分类模型构建方法及***
Mesin Balanced multi-image demons for non-rigid registration of magnetic resonance images
CN115760775A (zh) 番茄病害检测方法、装置、设备及存储介质
WO2023274599A1 (en) Methods and systems for automated follow-up reading of medical image data
Sharma et al. Brain tumor classification using modified VGG model-based transfer learning approach
Charachon et al. Visual explanation by unifying adversarial generation and feature importance attributions

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant