一种基于三维残差神经网络的CT影像肺结节检测方法与流程

文档序号:13453934阅读:1399来源:国知局

本发明涉及医学图像分析领域及机器学习领域,特别涉及一种应用于ct影像肺结节检测方法,属于基于深度学习的医学影像分析领域。



背景技术:

随着空气质量的恶化、二手烟危害的加深等原因,肺癌已成为世界范围内发病率及死亡率最高的恶性肿瘤,早期诊断和治疗对于病情的控制尤为重要。目前,计算机断层扫描成像(computedtomography,ct)是多种模态医学成像中最能够凸显肺部疾病征象的影像学手段,而肺癌最常见的早期形态为肺结节(lungnodules),此阶段是进行肺癌治疗的最佳时期。

对于肺部ct,一次能产生上百张影片,医生需要阅读这些影片确定病灶诊断病情,但是影片数量大,需要花费大量时间去巧细查看,不仅导致诊断医生的工作强度大幅攀升,而且由于影像中干扰噪声的存在,容易造成一定几率的误诊、漏诊。根据肺结节在ct影像上出现的位置和表现形式不同,又可以细分为孤立型肺结节、粘连血管型肺结节、枯连肺壁型肺结节、毛玻璃型肺结节和空洞型肺结节。传统计算机辅助诊断(computeraideddiagnosis,cad)方法多采用肺实质分割后,采集二维结节切片,再利用人工标注结节特征进行模型的训练,从而检测结节,但存在诸多问题:一是肺结节生长位置复杂,肺实质分割仅对孤立型肺结节有较好的效果,容易遗漏更复杂的胸膜粘附型和血管粘附型肺结节。二是结节在二维平面中样征信息不全,传统模型易将微结节与肺部血管等结构混淆,造成准确率下降。此外,人工标注特征不仅效率低、代价高,而且会遗漏许多影像信息,造成特征不全,进一步降低结节检测的准确率。



技术实现要素:

为了克服已有ct影像肺结节检测方式的准确率较低的不足,本发明提供了一种准确率较高的基于三维残差神经网络的ct影像肺结节检测方法,可以分析出影像中是否含有结节以及结节在影像中的具体位置。

本发明解决其技术问题所采用的技术方案是:

一种基于三维残差卷积神经网络的ct影像肺结节检测方法,所述检测方法包括训练过程和测试过程,

所述训练过程包括步骤一至步骤六,

步骤一,对原始ct影像预处理,包括将体素间距转换为(1,1,1),转换世界坐标为体素坐标;

步骤二,截取ct影像中完全包含肺结节的立方体样本,尺寸为32*32*32,作为正样本;再截取完全不包含结节的同样尺寸样本,作为负样本;

步骤三,根据样本的hu值统计分布,选取合适的hu值作为标准化范围,其中选取最小值为空气hu值-1000,将数据标准化为[0,1];

步骤四,构建三维卷积神经网络模型;

步骤五,设定模型超参数,所述模型超参数包括优化器、batch_size、epoch数量、每个epoch中batch的数量,以mini-batch的形式将数据导入模型训练;

步骤六,模型训练充分收敛后,保存并导出模型结构及权重参数;

所述检测过程包括步骤七:

步骤七,对测试ct影像进行检测,过程如下:

步骤7.1:对测试ct影像使用步骤一所述方法进行预处理;

步骤7.2:导入训练完成的三维卷积神经网络;

步骤7.3:制作滑动采样立方体,设置滑动步长,以滑动样本的形式逐个导入模型;

步骤7.4:根据模型计算得到的置信度,选取置信度高于设定阈值的样本为结节所在样本;

步骤7.5:对于滑动样本的重复样本,采用非极大值抑制算法,删除重读样本。

进一步,所述步骤三中,数据标准化的方式为x=(x-min)/(max-min)。

再进一步,所述步骤四中,构建三维卷积神经网络的过程为:

步骤4.1:样本经过卷积模块conv_block提取局部特征,其中卷积模块内顺序包括batchnormalization层、激活函数、三维卷积层及maxpooling层;

步骤4.2:样本经过averagepooling操作,提取全局特征;

步骤4.3:步骤4.1与步骤4.2的特征经过merge操作,组成完整特征;

步骤4.4:经过四次步骤4.1、步骤4.2和步骤4.3流程,再经过第五个conv_block及全局池化globalmaxpooling;

步骤4.5:将上述特征通过全连接分类器dense_block,其内部顺序包括全连接层fc1、batchnormalization、leakyrelu激活函数和全连接层fc2,最后得到输出结果。

更进一步,所述步骤7.5中,非极大值抑制算法在单个病例的操作步骤为:

步骤7.5.1:样本在计算中以三维数组的形式表达,三维数组索引的数量作为样本的体积volume。在滑动采样的过程中,保留样本在原始ct数组中的索引;

步骤7.5.2:设置信度阈值为tpredict,选择高于tpredict的样本作为检测的结节样本,其中置信度最高的作为标准样本,其余样本与标准样本依次计算重叠度iou;

步骤7.5.3:当前样本与标准样本中,重复的数组索引的数量记为重叠区域的体积intersect_volume;

步骤7.5.4:计算当前样本与标准样本的体积和,减去重叠体积intersect_volume,记为合并体积union_volume;

步骤7.5.5:重叠度iou计算为:iou=intersect_volume/union_volume,设定iou阈值toverlap,将所有与标准样本的重叠度大于toverlap的样本忽略。

本发明的技术构思为:深度神经网络在计算机视觉领域成为研究热点,其优良的图像特征提取能力和精准的检测效果也吸引了医学影像分析领域的关注。但目前大部分的医学影像分析基于二维深度卷积神经网络。由于结节的结构呈现不规则体,二维卷积网络一般以结节的多视图影像作为输入,不仅增加了影像预处理的复杂程度,更主要的是截取二维视图会遗漏许多影像信息,降低了模型的准确率。三维卷积神经网络最大程度的保留了影像的原始信息,并且节约了预处理的成本。

本发明给出一种三维残差神经网络,以及该网络在肺部ct影像肺结节检测中的应用。针对三维影像的输入,每一层子网络为残差结构,采取两种路径提取特征,不仅通过三维卷积核提取局部特征,还通过整体均值池化保留一定的全局特征,二者结果的连接作为输出。经过五层上述子网络结构提取特征后,再经过全连接及softmax函数组成的分类器,得到检测结果。其中,激活函数前加入batchnorm层,可以归一化数据分布,避免梯度消失,加快模型训练速度。

跟传统的基于cad的肺部ct影像肺结节检测方法和基于二维深度神经网络的ct影像肺结节检测方法相比,本发明的有益效果主要表现在:1、由于肺结节是三维结构,三维样本计算可以最大程度的保留原始信息,减少特征遗漏;2、本方法基于残差结构的网络与传统序贯模型相比,避免了网络层数加深时,准确率降低的问题。因此,本方法的模型泛化性更强,对于各种复杂分布的肺结节,都能有较高的检测准确率。本方法对于肺结节的检测、识别和分类是一种的有效尝试。

附图说明

图1是基于三维残差神经网络的ct影像肺结节检测方法的流程图。

图2是三维残差神经网络结构示意图。

图3是神经网络中卷积模块的结构示意图。

图4是模型训练过程折线图。

具体实施方式

下面结合附图对本发明作进一步描述。

参照图1~图4,一种基于三维残差卷积神经网络的ct影像肺结节检测方法,所述检测方法包括训练过程和测试过程,

所述训练过程包括步骤一至步骤六,

步骤一,对原始ct影像预处理,包括将体素间距转换为(1,1,1),转换世界坐标为体素坐标;

步骤二,截取ct影像中完全包含肺结节的立方体样本,尺寸为32*32*32,作为正样本;再截取完全不包含结节的同样尺寸样本,作为负样本;

步骤三,根据样本的hu值统计分布,选取合适的hu值作为标准化范围,其中选取最小值为空气hu值-1000,将数据标准化为[0,1];

步骤四,构建三维卷积神经网络模型;

步骤五,设定模型超参数,所述模型超参数包括优化器、batch_size、epoch数量、每个epoch中batch的数量,以mini-batch的形式将数据导入模型训练;

步骤六,模型训练充分收敛后,保存并导出模型结构及权重参数;

所述检测过程包括步骤七:

步骤七,对测试ct影像进行检测,过程如下:

步骤7.1:对测试ct影像使用步骤一所述方法进行预处理;

步骤7.2:导入训练完成的三维卷积神经网络;

步骤7.3:制作滑动采样立方体,设置滑动步长,以滑动样本的形式逐个导入模型;

步骤7.4:根据模型计算得到的置信度,选取置信度高于设定阈值的样本为结节所在样本;

步骤7.5:对于滑动样本的重复样本,采用非极大值抑制算法,删除重读样本。

进一步,所述步骤三中,数据标准化的方式为x=(x-min)/(max-min)。

再进一步,所述步骤四中,构建三维卷积神经网络的过程为:

步骤4.1:样本经过卷积模块conv_block提取局部特征,其中卷积模块内顺序包括batchnormalization层、激活函数、三维卷积层及maxpooling层;

步骤4.2:样本经过averagepooling操作,提取全局特征;

步骤4.3:步骤4.1与步骤4.2的特征经过merge操作,组成完整特征;

步骤4.4:经过四次步骤4.1、步骤4.2和步骤4.3流程,再经过第五个conv_block及全局池化globalmaxpooling;

步骤4.5:将上述特征通过全连接分类器dense_block,其内部顺序包括全连接层fc1、batchnormalization、leakyrelu激活函数和全连接层fc2,最后得到输出结果。

更进一步,所述步骤7.5中,非极大值抑制算法在单个病例的操作步骤为:

步骤7.5.1:样本在计算中以三维数组的形式表达,三维数组索引的数量作为样本的体积volume。在滑动采样的过程中,保留样本在原始ct数组中的索引;

步骤7.5.2:设置信度阈值为tpredict,选择高于tpredict的样本作为检测的结节样本,其中置信度最高的作为标准样本,其余样本与标准样本依次计算重叠度iou;

步骤7.5.3:当前样本与标准样本中,重复的数组索引的数量记为重叠区域的体积intersect_volume;

步骤7.5.4:计算当前样本与标准样本的体积和,减去重叠体积intersect_volume,记为合并体积union_volume;

步骤7.5.5:重叠度iou计算为:iou=intersect_volume/union_volume。设定iou阈值toverlap,将所有与标准样本的重叠度大于toverlap的样本忽略。

本实施例中,构建三维卷积神经网络的过程如下:

步骤1.1:网络架构主要由5个卷积模块(convblock),4个averagepooling层,4个融合层(mergelayer)及1个全连接模块(densebranch)组成。

步骤1.2:每个卷积模块内顺序为1个batchnormalization层,1个激活层,1个三维卷积层和一个maxpooling层组成(第5个卷积模块无maxpooling层)。

步骤1.2.1:batchnormalization层以batch为单位,归一化输入数据分布为标准正态分布,此操作减少参数初始化的影响,加快模型训练的速度;

步骤1.2.2:激活层的激活函数为leakyrelu函数或leakycrelu函数。leakycrelu函数为自定义函数,将原输入进行relu函数激活后,再对其负数进行relu函数激活,然后将两个激活结果连接起来。其中第5个卷积模块使用leakyrelu函数,其余卷积模块使用leakycrelu函数;

步骤1.2.3:maxpooling层通过最大值池化操作将输入数据的体素减半。

步骤1.3:averagepooling层与卷积模块并列,接收同样的输入,以均值池化的方式减半输入体素。

步骤1.4:融合层(mergelayer)将并列的卷积模块(convblock)的输出与averagepooling的输出连接。

步骤1.5:经过上述操作后,将得到的featuremaps做全局maxpooling操作,进一步提取特征,然后进行batchnormalization,归一化特征分布。

步骤1.6:全连接模块(densebranch)包括两个全连接层(fully-connectedlayer,fc),两个全连接层间连接有一个batchnormalization层和一个leakeyrelu函数的激活层。最后一个全连接层的输出尺寸为1,经过softmax函数后得到概率值。

本实施例中,数据预处理及模型训练的过程如下:

步骤2.1:根据结节样本类型制作标签,正样本包含肺结节,标签为1;负样本为0。

步骤2.2:因不同病人的初始体素间距不同,应首先将所有体素间距转化为(1,1,1)。再将所有数据连接为一个(sample_number,1,32,32,32)的5维数组,其中第二维是通道数。

步骤2.3:ct影像的hu值与密度正相关,-1000代表空气。设置最小值min=-1000,将数据集中小于-1000的值设为-1000。根据数据分布,选取合适的最大值max。采用方式,标准化数据至[0,1]区间。截取测试集和验证集。

步骤2.4:利用python生成器,从训练集和验证集中随机选取batch_num个数据,对后三维度进行随机转置后,返回给模型进行训练和验证。

步骤2.5:模型采用batch训练的方式,训练集生成器返回train_num/batch_num次数据为一个轮次(epoch),一个轮次训练完成后,生成器会返回val_num/batch_num次并计算验证损失val_loss,损失函数为对数损失(logloss或binarycross-entropy)。利用梯度下降优化器优化模型参数。当训练与验证损失均收敛后,模型停止训练,保存模型结构与参数为最优结果。

测试模型分类效果:将预处理完成的测试数据输入模型,得到样本中包含肺结节的概率值,与样本标签对比得到准确率。

实例:本案例中使用的肺结节ct影像共2类,即包含肺结节与健康。肺结节共1200例样本,健康样本与肺结节样本同样数量,健康样本具有胸腔中各组织样本,保证负样本多样性。从正负样本中分别选取100个样本作为验证集,100个样本作为测试集,其余1000个样本作为训练集。操作步骤包括模型构建,模型训练与模型测试。

步骤一,构建三维深度卷积神经网络,具体结构如图2所示。

步骤1.1:此卷积神经网络包含5个卷积模块,4个averagepooling层,4个融合层及1个densebranch模块组成。

步骤1.2:卷积层中,卷积核大小为3*3*3,滑动步长为3,padding模式为“same”,即卷积操作后,输出与输入的体素大小相同,权重初始化为随机正交矩阵初始化(orthogonal),权重正则项为l2正则,偏置值初始化为0矩阵且无正则项。卷积核数量随网络深入而增大,依次为8,24,36,36,64个。

步骤1.3:全连接层中,权重初始化为随机正态分布,权重正则项为l2正则,偏置值初始化为0矩阵,无正则项;

模型逐层输出如表1所示,参数量共199661,其中可训练参数量为199251。

表1

步骤二,数据预处理及模型训练。

步骤2.1:为样本附加通道数,hu值类似灰度值,通道数为1。再将所有样本连接为一个numpy数组,第一个维度是样本数量,由此得到一个(2000,1,32,32,32)的五维数组作为训练集;验证集采取同样的方式处理为(200,1,32,32,32)。测试集不进行连接,但每个样本扩充为(1,1,32,32,32)。

步骤2.2:ct影像的hu值与密度正相关,-1000代表空气。设置最小值min=-1000,将数据集中小于-1000的值设为-1000。根据样本数据的分布,设置合适的最大值max=600,然后将数据标准化至[0,1]范围内。

步骤2.3:模型采用batch训练的方式,训练集生成器和验证集生成器每个batch的样本数batch_num均为64,设定训练集生成器返回50次数据为一个轮次(epoch),一个轮次训练完成后,生成器会返回5次并计算验证集损失val_loss,损失函数为对数损失(logloss或binarycross-entropy)。模型优化器为nesterovadamoptimizer,学习率保持0.00001。模型最大训练轮次为300,验证与训练损失收敛后停止训练,并保存模型为.h5文件,作为最终训练结果。

模型训练过程折线图如图4所示,其中实线为验证损失,虚线为训练损失。

步骤三,模型测试

步骤3.1:载入模型,将预处理完毕的测试集样本逐个输入模型计算,并与其标签对比得到模型的分类准确率。

经过上述步骤的操作,即可实现用于肺结节ct影像分类的卷积神经网络的构建。

以上所述的具体描述,对发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例,用于解释本发明,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1