本文提出一种在图像精细预处理条件下,通过二维卷积神经网络对低剂量计算机断层扫描(CT)图像进行肺结节检测的方法。通过图像剪切、归一化操作等算法对 CT 图像预处理,对正样本进行扩充以平衡正负样本数量,训练二维卷积神经网络并在过程中不断优化网络参数,最终得到性能最优的模型。本文采用美国 2016 年肺结节分析(LUNA16)挑战赛开源数据集进行五折交叉验证,取每组模型实验结果的平均值,最终准确率为 92.3%、敏感性为 92.1%、特异性为 92.6%,相较于已有的其他肺结节自动检测分类方法在各项指标上均有所提高。随后本文在此基础上进行模型微扰实验,实验结果表明,模型稳定且具有一定的抗干扰能力,可以有效地识别肺结节,期望可为肺癌早期筛查提供辅助诊断意见。
引用本文: 刘一鸣, 侯智超, 李晓琴, 王学栋. 基于卷积神经网络的肺结节检测方法. 生物医学工程学杂志, 2019, 36(6): 969-977. doi: 10.7507/1001-5515.201902001 复制
引言
肺癌是对人类生命和健康威胁最大的肿瘤[1],早期发现对于患者的生存和康复至关重要。临床上,肺结节检测是肺癌筛查的第一步。如何检测作为肺癌早期特征之一的肺结节,近几年引发了广泛讨论和关注[2]。
传统的肺结节检测方法是医生通过肉眼直接观察肺部计算机断层扫描图像(computed tomography,CT),来评估患者肺部是否存在肺结节。但一位患者的 CT 图像往往有上百张切片,对这些图像采用人工方式进行观察、判断,工作量巨大,且一些 CT 图像上较小的肺结节由于不易观察可能会造成遗漏[3]。因此,迫切需要开发新的计算机辅助检测肺结节的方法提升肺结节的检测效率。
近几年人工智能技术,尤其是深度学习方法,发展十分迅速,应用在识别图像方面有很好的效果,因此相关应用也扩展至医学领域[4]。深度学习是以图像特征的识别和分类来训练模型,并利用模型的准确率、特异性等多重评价标准来反向指导特征的提取[5],从而实现端到端的映射学习。Liu 等[6]以肺实质区域提取、获取候选结节集、模型的特征提取训练以及肺结节分类 4 个步骤为基本流程确立了肺结节计算机辅助设计(computer aided design,CAD)分类系统。Shen 等[7]提出以多尺度 CT 图像作为输入的肺结节分类模型,该研究截取三种不同尺度的肺结节图像作为卷积神经网络(convolutional neural network,CNN)模型的输入,从而在训练过程中让模型可以更好地学习到肺结节特征,增加分类器的准确率。Kumar 等[8]提出一种肺结节良恶性 CAD 分类系统,该研究首先利用一个 5 层栈式自动编码器提取出肺结节的特征,之后利用二值决策树对结节分类,该研究在肺图像数据库联盟(Lung Image Database Consortium,LIDC)数据集表现良好,且准确率优于其他的精度度量方法。Hua 等[9]将深度信念网络(deep belief network,DBN)与 CNN 网络分别应用于肺结节分类检测中,DBN 网络的敏感性达到 73.40%,CNN 网络的敏感性达到 73.30%。上述研究使用了包括深度学习在内的各种方法,设计完成了肺结节 CAD 分类系统,并取得了良好的效果。
随着技术的不断发展,肺结节的识别与检测不断取得新进展,但依然存在一些问题。首先,在原始数据的预处理方面,大多数的研究对医学图像的处理方法比较粗略,一定程度上会损失一些包含关键特征的细节信息,从而无法提高最后分类的准确率;其次,在训练网络模型时所使用的数据量不够大,且数据中的正负样本数量不均衡,使得训练后的模型泛化能力较弱;最后,在运用深度学习网络模型学习特征并分类时,网络过于繁杂,使得训练成本过高但准确率提升不大。针对以上问题,本文设计了一种基于 CNN 的肺结节自动检测方法,建立了一套针对肺部 CT 图像的预处理流程,并针对正负样本数据量不均衡问题对正样本数据进行扩增,有效提升了模型的泛化能力,并在 CNN 中加入丢弃(dropout)层[10],用于防止模型在训练中出现过拟合的现象,最终建立了一个稳定可靠的肺结节检测系统,可以有效地识别检测肺结节,或可为肺癌早期筛查提供辅助诊断意见。
1 实验数据
本文采用的研究数据来源于美国国家癌症研究所(National Cancer Insitute,NCI)发起收集的肺部图像数据库联盟和图像数据库资源倡议(Lung Image Database Consortium and Image Database Resource Initiative,LIDC-IDRI)开源数据集(网址为:https://wiki.cancerimagingarchive.net/display/Public/LIDC-IDRI)和基于 LIDC-IDRI 开源数据集的美国 2016 年肺结节分析挑战赛(Lung Nodule Analysis 2016,LUNA16)[11]开源数据集(网址为:https://luna16.grand-challenge.org/),该数据集提供了患者的肺部 CT 图像及医生的标注信息,旨在为研究肺结节的检测分类和肺癌的辅助诊断提供帮助。
LUNA16 数据集将 LIDC-IDRI 数据集中切片厚度大于 2.5 mm 的 CT 图像以及切片像素不一致或不完整的 CT 图像去除,最终形成了包含 888 个样本的 CT 数据集,且图像信息均以.mhd 为扩展名的头信息文件和以.raw 为扩展名的像素信息文件存储。
LIDC-IDRI 数据集中每幅 CT 图像均由 4 名专业的影像科医生分两阶段标注。第一阶段,每位医生分别独立诊断肺部 CT 图像,对其进行标注并分为三类:非结节、直径大于 3 mm 的结节、直径小于 3 mm 的结节。第二阶段,每位医生分别复审其他三位医生的标注,最终给出自己的诊断结果。在 LUNA16 数据集中,最终选取 LIDC-IDRI 数据集中三位及三位以上医生标注的且直径大于 3 mm 的结节作为肺结节的标准标注,共有 1 186 个肺结节。
2 实验方法
本文提出了一种基于 CNN 的肺结节检测方法,方法流程图如图 1 所示,由以下 4 个步骤组成:
(1)图像预处理:读取 LUNA16 数据集的 CT 图像数据,使用图像预处理算法对其进行处理,提取出肺部感兴趣区域(region of interest,ROI),形成图像数据集,用于后续模型的训练、测试等工作。
(2)搭建并优化 CNN:搭建初始 CNN,利用步骤(1)形成的数据集对网络进行训练及测试,根据测试结果不断调整训练参数及网络结构。
(3)模型评估:结合测试结果设定评估指标,并通过多个验证实验多角度对模型进行评估。
(4)模型应用:利用模型对外部 CT 图像数据进行检测。
2.1 数据集预处理
数据集预处理的目标是提取出图像中的 ROI。在本文中 ROI 即为肺部 CT 图像中待检测的结节区域,这个区域是研究中重点关注的对象。若能将这个区域精细地从图像中分割出来,则在后续模型训练中,模型会更容易学习到结节的特征信息,提高模型的准确率。
研究中发现,仅使用单一图像处理方法得到的图像精度不足,在模型中的表现并不理想,因此本文尝试将多种方法结合,从而获得具有统一格式、图像信息量大、正负样本数量均衡且易于模型训练的数据集。本文对图像预处理的流程如图 2 所示。
2.1.1 归一化处理
LUNA16 数据集中的图像数据来源于不同仪器的扫描结果,受成像效果的影响会产生灰度差异,这种差异对于需要利用灰度信息来对肺结节分类的过程影响很大[12]。因此,在提取 CT 图像中的灰度值信息时,需要尽可能地去除因成像差异对图像灰度造成的干扰,保证在模型中图像灰度信息作为一个不变的特征,以便于对来自不同设备输出的医学图像进行肺结节的识别和分类,即进行图像的归一化处理。
归一化处理在医学图像处理中应用非常广泛,其原因是它可以减小医学图像由于光线不均匀所造成的干扰。本文主要使用线性函数变换法[13]对图像进行归一化处理。首先,将切片中采样点的亨氏值(hounsfield unit,HU)归一化为 0~1 之间的值,表达式如式(1)所示:
'/> |
其中,为归一化处理前的值、为归一化处理后的值,在输出为灰度图像时需乘以 255,HUmax、HUmin 分别为最大 HU 值和最小 HU 值,本文中分别取 400 和−1 000。
2.1.2 数据降维
在 LUNA16 数据集中,888 例患者肺部 CT 图像(均为 512 × 512 个采样点)中共有 551 065 处注释。由于在数据集预处理和网络训练阶段,庞大的图像数据量会耗费大量的时间,而且对计算机等设备配置的要求较高,因此需要在不丢失图像信息的基础上对原始图像数据进行降维。图像数据降维主要从尺寸和数量两个方面进行:
(1)图像尺寸降维
本文选用的是剪切图像的方式,由于数据集中提供了候选结节集的位置信息,因此以其为中心对图像剪切。在剪切尺寸方面,本文选择截取以标注位置信息为中心的大小为 50 × 50 图像块作为 ROI。统计数据表示,在 LUNA16 数据集中,医生所标注的结节直径范围均在 3~30 mm,因此 50 × 50 图像块可以截取到每个结节的全部信息,后续的实验也证明:50 × 50 图像块在网络训练中十分适用且高效,在图像检测分类中也表现良好。
在医学图像分割过程中,坐标系的转换一直是处理时的重点与难点[14]。在 LUNA16 数据集中,文件所标注的各个结节的位置,是距离每张图像中心扫描点的距离信息,并不是坐标信息,但是仅获得结节的距离信息是无法对图像进行剪切的。因此需要将原始的坐标转换为其在每张图像中的体素坐标。
如图 3 所示,扫描点 C(x,y)是指从坐标文件中读取的结节中心的位置信息,中心点 O(a,b)是指在解剖学坐标系中第一个体素的位置,空间距离 S(m,n)是两个体素横向和纵向之间的距离信息。利用上述三个点的信息,计算扫描点 C 经坐标转换为 C’(x’,y’)点的表达式如式(2)所示:
'/> |
(2)图像数量降维
数据集中正负样本比例约为 1∶500,其中负样本数据量大约有 550 000 个,大量的负样本并不会有效提升分类模型的准确率,反而增加系统负担,因此在不影响模型性能的情况下,适量选取负样本。在经过实验后,本文最终以正负样本 1∶5 的比例随机抽取负样本。
2.1.3 正样本扩充
在对负样本进行降维后,正样本数据量依然不足,如果仅使用少量正样本数据集对模型训练会削弱模型的泛化能力、影响模型的识别准确率,因此需要对正样本进行合理的扩充[15]。
经过大量实验后,本文采用平移和旋转两种方法对正样本数据进行扩充。由于在处理图像时均是以结节作为中心进行剪切,使得结节出现位置过于单一。因此,在剪切时将图像中心坐标于横向或纵向上随机平移 0~10 个单位,得到一系列既含有结节且结节不在中心处的新图像。同时,为获取不同成像条件下的结节图像,本课题组又对图像进行了旋转操作,进一步扩充正样本。
对于坐标为(x,y)的点,平移操作后的坐标为(x′,y′),其表达式如式(3)所示;旋转操作后的坐标为(x″,y″),表达式如式(4)所示:
'/> |
'/> |
式(3)中 k1、k2 分别为图像在横向或纵向上平移的单位数量,这里 k1、k2 取-10~10 之间的整数,Δx、Δy 是横向、纵向像素点的单位间距。式(4)中的 θ 为图像逆时针旋转的角度。本文中选取 θ 值为 90° 和 180°,使用该方法对图像正样本扩增后的结果如图 4 所示。后续,本课题组将通过实验以证明通过上述方法对正样本数量进行扩充后有利于提升模型的泛化能力。
2.1.4 数据集分类
经过处理得到的 ROI 区域最终要应用于深度学习模型中,在有监督的机器学习中[16],数据集通常被分 1~2 个训练集和 1 个测试集。
由于本文在最后评估模型时所使用的是五折交叉验证方法,因此将数据均分为 5 个子集 X_1~X_5,每次从 5 个子集中选取 3 个子集合并作为训练数据集,剩余两个子集则作为验证集与测试集。训练数据集用于训练模型,建立分类器;验证数据集用于确定网络结构和控制模型复杂程度的参数,也可以调整分类器的参数;测试集则用来检验训练后得到的最优模型的性能。5 种组合如图 5 所示,对应训练模型 1~5,各数据集的样本量如表 1 所示。
2.2 二维卷积神经网络
用于检测肺结节的 CNN 主要由不同数量的输入层、卷积层、池化层、全连接层、dropout 层及输出层共 9 层构成,具体结构如图 6 所示。输入层是通过预处理得到的 50 × 50 的图像,之后通过一个有 32 个 5 × 5 卷积核的卷积层和步长为 2 的 2 × 2 池化层,接着顺次通过有 64 个 5 × 5 卷积核的卷积层、64 个 3 × 3 卷积核的卷积层以及步长为 2 的 2 × 2 池化层,之后通过全连接层以及防止过拟合的 dropout 层,分类后由输出层输出[17]。
2.2.1 卷积层
卷积层是 CNN 中的核心层。卷积是一种线性运算,通过局部加权来输入信号,其本质是提取目标图像数据集中不同频段的特征信息,假设 是第 l 层卷积层接收到的第 i 个特征图,那么卷积的计算过程如式(5)所示:
其中, 表示第 l 层中第 j 个特征图的对应偏置,f(·)为激活函数,*表示卷积运算[18]。Mj 表示第 j 个输出特征图卷积过程中的输入图合集, 表示第 l 层用于提取特征图 x 的第 i 个输入的卷积核,最后输出第 j 个特征图,其表达式如式(6)所示:
卷积计算中使用的激活函数有很多种,本文采用修正线性单元(rectified linear units,ReLU)激活函数,ReLU 激活函数如式(7)所示:
ReLU 函数是分段线性函数,将所有负值转化为 0,但正值不变,这种操作被称为单侧抑制,正是由于单侧抑制,神经网络中的神经元具有了稀疏激活性[18]。
2.2.2 池化层
池化层穿插在不同的卷积层中,与卷积层相连,以缩小数据和参数的量,减轻过度拟合现象。池化层的输入为经由卷积层计算而得到的特征图,且输出的特征图数量与输入的特征图数量相同,经过池化后输出的特征图的维度大幅度减少,计算公式如式(8)所示:
式(7)中 表示池化层 l 的前一层中的第 j 个特征图, 表示第l层输出的第 j 个池化结果, 表示第 l 层第 j 个特征图对应的加权值, 表示对应的偏置项,f(·)为激活函数,down(·)为池化函数[19]。本文选择最大池化操作,即池化结果中采样点的值为卷积计算后窗口中最大的值,如式(9)所示:
式中 pj 表示池化结果,Rj 表示池化窗口,si 表示池化窗口中的数值。最大池化具体操作示意图如图 7 所示。
2.2.3 dropout 层
在训练网络模型时,随着迭代数量的增加,网络对训练数据集和验证数据集上的图像数据拟合程度呈现两极分化的态势,前者效果很好而后者则较差,即过拟合现象。
针对这种现象,本文引入 dropout 层,将这层神经元随机采样,将采样后的子网络作为新的目标网络。根据参数 p 得出向量 r(l),利用上一步得到的 r(l)向量对 h(l)进行采样,产生一个约减的输出,如式(10)~(11)所示,从而完成对原网络的采样并生成新的子网络[19]。
其中,向量 r(l)的元素符合伯努利随机分布,常参数 p 为人为设置的丢弃神经元个数的比例,在 dropout 层以其作为参数按比例随机激活神经元,h(l)是上一层的输出,· 表示按向量元素点乘。若在一个具有 n 个结点的网络中插入一个 dropout 层,可用的子网络共有 2n 个,且当 n 足够大时,每次采样更新后得到的新子网络均不重复[20],进而降低过拟合程度。
3 实验结果
3.1 模型评估指标
利用本文模型,对给定标签的样本数据集进行预测,并将预测结果与标签结果比对。
分类模型的性能通过准确率(accuracy)(以符号 Acc 表示)、敏感性(sensitivity)(以符号 Se 表示)和特异性(specificity)(以符号 Sp 表示)来衡量,其中准确率是正确分类的样本占比。每个指标具体计算方法如式(12)~(14)所示:
其中,真阳性(true positive,TP)(符号记为:TP)表示正样本被正确分类的个数;假阳性(false positive,FP)(符号记为:FP)表示负样本被错误地分类为正样本的个数;真阴性(true negative,TN)(符号记为:TN)表示负样本被正确分类的个数;假阴性(false negative,FN)(符号记为:FN)表示正样本错误地分类为负样本的个数。
3.2 实验结果与分析
以 LUNA16 数据集为原始数据,采用本文的图像预处理方法得到适配模型的数据集,并对本文设计的模型进行测试,测试结果的方法采用了建模应用中常见的五折交叉验证方法,将实验数据集划分为训练集、验证集和测试集三个子集,依据 2.1 节描述的方法对数据集进行处理,采用五折交叉验证的方法,使用不同数据的排列组合方法训练 5 个模型,对训练出的 5 个模型分别进行评估,将得到的准确率、敏感性、特异性三项评估指标分别取均值,作为本模型最终的评估结果。
五折交叉验证法可以有效地评估模型的性能,在数据集有限的情况下,采用同一数据的不同部分来训练测试模型,相当于扩充了训练集的数据,若 5 个模型的测试结果都很好,说明模型具有良好的泛化能力。
利用本文训练出的 5 个模型,分别对相应测试集样本进行测试,测试结果及其对应的评估指标如表 2 所示。可以看出,5 个模型的肺结节检测准确率、敏感性和特异性指标均在 92.0% 以上,各项指标数据平稳。综合 5 个模型的评估指标,肺结节检测的准确率均值为 92.3%、敏感性均值为 92.1%、特异性均值为 92.6%。
将上述结果与一些同样需要依赖于图像精细处理的肺结节分类算法进行比较,不同模型的肺结节检测结果如表 3 所示。
从表 3 中可以看出:虽然部分方法采用的数据集有所不同,但是仍可以粗略地比较出不同算法之间的优劣性。在使用了最终用途负荷和保护评估计划(End-Use Load and Conservation Assessment Program,ELCAP)数据集的三维 CNN(3D-CNN)中,由于数据集图像数量较少,从而导致准确率和特异性偏低;在同样使用了 LUNA16 数据集的二维 CNN(2D-CNN)和人工神经网络(artificial neural network,ANN)中,ANN 模型在敏感性上具有相对优势;本文经改良的 2D-CNN 肺结节检测模型的准确率、特异性均高于其它模型;敏感性与 ANN 模型持平,但是相较于另两个网络模型仍具有优势,模型整体更加稳定,性能优于上述模型。
3.3 验证实验结果与分析
在对模型评估的同时,本文也进行了一些验证实验,以验证方法的正确性及模型性能。首先,分别用平移、旋转、平移和旋转共 3 种不同的扩充方法进行正样本扩充,并进一步建模以验证其准确率,结果发现,平移法对应模型的验证准确率为 89.6%,旋转法对应模型的验证准确率为 88.3%,平移和旋转相结合对应模型的验证准确率为 92.3%。仅平移或仅旋转进行数据扩增训练出的模型准确率相当,但将两种方法结合后,准确率得到了显著的提升。因此在正样本扩增过程中使用平移和旋转方法相结合是有效的。
本文增加了模型微扰实验,具体方法为:按照正负样本 1∶1 比例,从 LUNA16 数据集中随机抽取 100 张 CT 图像,提取 100 张图像的 ROI 作为测试集 1;之后,将测试集 1 中每幅图像的中心点在横向或纵向随机平移 0~10 个单位,分别提取 100 张图像的 ROI 作为测试集 2;同理,随机平移 10~20 个单位,形成测试集 3。将 3 个测试集输入 2.1 节的模型 1 中检测,得到的结果如表 4 所示。
通过表中数据可以看出:测试集 1 和测试集 2 三项指标均相差不大,但是在测试集 3 中出现了明显的下滑,主要原因是一些半径大的大结节在平移过程中移出图外,仅有部分留在图像内的特征被模型学习到,导致模型对此结节的特征学习不够完整。模型微扰实验结果说明,本文给出的肺结节检测模型对于肺结节偏离中心 0~20 个单位的图像也具有较高的识别能力。
3.4 肺结节检测实验结果与分析
在实际肺结节检测中,结节的位置未知,无法构建以结节为中心的图像集,因此要对整张切片进行分割。首先在 LUNA16 数据集中随机选取一位患者 CT 图像中的某张切片,该切片中仅有一处医生确诊为肺结节的标注。对切片进行归一化处理等医学图像预处理操作,可视化切片及结节标注如图 8 所示,图中箭头所指为结节。
然后,对该图像进行切割,以 10 个像素单位为间隔截取图像,共获得 2 209 张大小为 50 × 50 的图像样本集。利用本文模型对这 2 209 张图像进行检测,将检验为正样本的所有图像的中心点绘制在原切片中得到散点图,结果如图 9 左图所示。根据 3.3 节验证实验的结果可知,模型对结节处于中心及结节中心偏移 0~20 个单位的图像检测结果一致,即对实际结节,结节点附近会出现 3 × 3 及以上的散点阵列,如图 9 中绿色散点所示。对散点进行处理,保留 3 × 3 及以上的散点阵列,该阵列所在位置即为结节分布区域,如图 9 右图所示。可以看出:符合要求的区域只有一个且与医生给定的结节标注位置相符。
在实际肺结节检测应用中,使用本节的图像分割方法得到样本集并用模型进行检测。同上述方法,对医学数字成像和通信(digital imaging and communications in medicine,DICOM)格式的外源 CT 图像数据进行肺结节检测的结果如图 10 所示。
上述基于 CNN 的肺结节检测方法已获得北京市知识产权局颁发的软件著作权,软件名称为“肺结节检测模型建立及应用系统”,可实现肺结节的自动检测,授权号为 2019SR0075702。
4 结论
肺癌筛查结果分析的第一步是肺结节检测。为辅助肺癌的早期筛查,本文建立了基于 CNN 模型的肺结节检测方法。提出了一套肺部 CT 图像预处理方案,构建了模型训练所需的数据集;通过对比实验调整了 CNN 网络架构,采用 ReLU 激活函数加快收敛速度,引入 dropout 层防止过拟合;采用五折交叉验证训练肺结节检测模型进行有效评估,并将模型用于患者任意 CT 图像切片的肺结节筛查。结果显示,图像中心坐标随机平移的正样本扩增方式可有效提高模型的泛化及抗干扰能力;本文所提肺结节检测模型可对肺结节进行有效检测;将该模型应用于患者肺结节检测,可准确定位肺结节,为肺癌早期筛查提供有效帮助。
基于正样本数量的增加可以有效获取肺结节差异性特征,且增加正样本数量可以提高模型的泛化性能,后续本课题组可以尝试重建肺结节并提取肺结节多维度信息,增加肺结节样本的数量,进一步提高肺结节检测模型的泛化能力。此外,由于 2D-CNN 有其自身局限性,忽略了肺结节丰富的空间结构特征,今后可以考虑用 3D-CNN 取代 2D-CNN,建立基于 3D-CNN 的肺结节检测模型。
利益冲突声明:本文全体作者均声明不存在利益冲突。
引言
肺癌是对人类生命和健康威胁最大的肿瘤[1],早期发现对于患者的生存和康复至关重要。临床上,肺结节检测是肺癌筛查的第一步。如何检测作为肺癌早期特征之一的肺结节,近几年引发了广泛讨论和关注[2]。
传统的肺结节检测方法是医生通过肉眼直接观察肺部计算机断层扫描图像(computed tomography,CT),来评估患者肺部是否存在肺结节。但一位患者的 CT 图像往往有上百张切片,对这些图像采用人工方式进行观察、判断,工作量巨大,且一些 CT 图像上较小的肺结节由于不易观察可能会造成遗漏[3]。因此,迫切需要开发新的计算机辅助检测肺结节的方法提升肺结节的检测效率。
近几年人工智能技术,尤其是深度学习方法,发展十分迅速,应用在识别图像方面有很好的效果,因此相关应用也扩展至医学领域[4]。深度学习是以图像特征的识别和分类来训练模型,并利用模型的准确率、特异性等多重评价标准来反向指导特征的提取[5],从而实现端到端的映射学习。Liu 等[6]以肺实质区域提取、获取候选结节集、模型的特征提取训练以及肺结节分类 4 个步骤为基本流程确立了肺结节计算机辅助设计(computer aided design,CAD)分类系统。Shen 等[7]提出以多尺度 CT 图像作为输入的肺结节分类模型,该研究截取三种不同尺度的肺结节图像作为卷积神经网络(convolutional neural network,CNN)模型的输入,从而在训练过程中让模型可以更好地学习到肺结节特征,增加分类器的准确率。Kumar 等[8]提出一种肺结节良恶性 CAD 分类系统,该研究首先利用一个 5 层栈式自动编码器提取出肺结节的特征,之后利用二值决策树对结节分类,该研究在肺图像数据库联盟(Lung Image Database Consortium,LIDC)数据集表现良好,且准确率优于其他的精度度量方法。Hua 等[9]将深度信念网络(deep belief network,DBN)与 CNN 网络分别应用于肺结节分类检测中,DBN 网络的敏感性达到 73.40%,CNN 网络的敏感性达到 73.30%。上述研究使用了包括深度学习在内的各种方法,设计完成了肺结节 CAD 分类系统,并取得了良好的效果。
随着技术的不断发展,肺结节的识别与检测不断取得新进展,但依然存在一些问题。首先,在原始数据的预处理方面,大多数的研究对医学图像的处理方法比较粗略,一定程度上会损失一些包含关键特征的细节信息,从而无法提高最后分类的准确率;其次,在训练网络模型时所使用的数据量不够大,且数据中的正负样本数量不均衡,使得训练后的模型泛化能力较弱;最后,在运用深度学习网络模型学习特征并分类时,网络过于繁杂,使得训练成本过高但准确率提升不大。针对以上问题,本文设计了一种基于 CNN 的肺结节自动检测方法,建立了一套针对肺部 CT 图像的预处理流程,并针对正负样本数据量不均衡问题对正样本数据进行扩增,有效提升了模型的泛化能力,并在 CNN 中加入丢弃(dropout)层[10],用于防止模型在训练中出现过拟合的现象,最终建立了一个稳定可靠的肺结节检测系统,可以有效地识别检测肺结节,或可为肺癌早期筛查提供辅助诊断意见。
1 实验数据
本文采用的研究数据来源于美国国家癌症研究所(National Cancer Insitute,NCI)发起收集的肺部图像数据库联盟和图像数据库资源倡议(Lung Image Database Consortium and Image Database Resource Initiative,LIDC-IDRI)开源数据集(网址为:https://wiki.cancerimagingarchive.net/display/Public/LIDC-IDRI)和基于 LIDC-IDRI 开源数据集的美国 2016 年肺结节分析挑战赛(Lung Nodule Analysis 2016,LUNA16)[11]开源数据集(网址为:https://luna16.grand-challenge.org/),该数据集提供了患者的肺部 CT 图像及医生的标注信息,旨在为研究肺结节的检测分类和肺癌的辅助诊断提供帮助。
LUNA16 数据集将 LIDC-IDRI 数据集中切片厚度大于 2.5 mm 的 CT 图像以及切片像素不一致或不完整的 CT 图像去除,最终形成了包含 888 个样本的 CT 数据集,且图像信息均以.mhd 为扩展名的头信息文件和以.raw 为扩展名的像素信息文件存储。
LIDC-IDRI 数据集中每幅 CT 图像均由 4 名专业的影像科医生分两阶段标注。第一阶段,每位医生分别独立诊断肺部 CT 图像,对其进行标注并分为三类:非结节、直径大于 3 mm 的结节、直径小于 3 mm 的结节。第二阶段,每位医生分别复审其他三位医生的标注,最终给出自己的诊断结果。在 LUNA16 数据集中,最终选取 LIDC-IDRI 数据集中三位及三位以上医生标注的且直径大于 3 mm 的结节作为肺结节的标准标注,共有 1 186 个肺结节。
2 实验方法
本文提出了一种基于 CNN 的肺结节检测方法,方法流程图如图 1 所示,由以下 4 个步骤组成:
(1)图像预处理:读取 LUNA16 数据集的 CT 图像数据,使用图像预处理算法对其进行处理,提取出肺部感兴趣区域(region of interest,ROI),形成图像数据集,用于后续模型的训练、测试等工作。
(2)搭建并优化 CNN:搭建初始 CNN,利用步骤(1)形成的数据集对网络进行训练及测试,根据测试结果不断调整训练参数及网络结构。
(3)模型评估:结合测试结果设定评估指标,并通过多个验证实验多角度对模型进行评估。
(4)模型应用:利用模型对外部 CT 图像数据进行检测。
2.1 数据集预处理
数据集预处理的目标是提取出图像中的 ROI。在本文中 ROI 即为肺部 CT 图像中待检测的结节区域,这个区域是研究中重点关注的对象。若能将这个区域精细地从图像中分割出来,则在后续模型训练中,模型会更容易学习到结节的特征信息,提高模型的准确率。
研究中发现,仅使用单一图像处理方法得到的图像精度不足,在模型中的表现并不理想,因此本文尝试将多种方法结合,从而获得具有统一格式、图像信息量大、正负样本数量均衡且易于模型训练的数据集。本文对图像预处理的流程如图 2 所示。
2.1.1 归一化处理
LUNA16 数据集中的图像数据来源于不同仪器的扫描结果,受成像效果的影响会产生灰度差异,这种差异对于需要利用灰度信息来对肺结节分类的过程影响很大[12]。因此,在提取 CT 图像中的灰度值信息时,需要尽可能地去除因成像差异对图像灰度造成的干扰,保证在模型中图像灰度信息作为一个不变的特征,以便于对来自不同设备输出的医学图像进行肺结节的识别和分类,即进行图像的归一化处理。
归一化处理在医学图像处理中应用非常广泛,其原因是它可以减小医学图像由于光线不均匀所造成的干扰。本文主要使用线性函数变换法[13]对图像进行归一化处理。首先,将切片中采样点的亨氏值(hounsfield unit,HU)归一化为 0~1 之间的值,表达式如式(1)所示:
'/> |
其中,为归一化处理前的值、为归一化处理后的值,在输出为灰度图像时需乘以 255,HUmax、HUmin 分别为最大 HU 值和最小 HU 值,本文中分别取 400 和−1 000。
2.1.2 数据降维
在 LUNA16 数据集中,888 例患者肺部 CT 图像(均为 512 × 512 个采样点)中共有 551 065 处注释。由于在数据集预处理和网络训练阶段,庞大的图像数据量会耗费大量的时间,而且对计算机等设备配置的要求较高,因此需要在不丢失图像信息的基础上对原始图像数据进行降维。图像数据降维主要从尺寸和数量两个方面进行:
(1)图像尺寸降维
本文选用的是剪切图像的方式,由于数据集中提供了候选结节集的位置信息,因此以其为中心对图像剪切。在剪切尺寸方面,本文选择截取以标注位置信息为中心的大小为 50 × 50 图像块作为 ROI。统计数据表示,在 LUNA16 数据集中,医生所标注的结节直径范围均在 3~30 mm,因此 50 × 50 图像块可以截取到每个结节的全部信息,后续的实验也证明:50 × 50 图像块在网络训练中十分适用且高效,在图像检测分类中也表现良好。
在医学图像分割过程中,坐标系的转换一直是处理时的重点与难点[14]。在 LUNA16 数据集中,文件所标注的各个结节的位置,是距离每张图像中心扫描点的距离信息,并不是坐标信息,但是仅获得结节的距离信息是无法对图像进行剪切的。因此需要将原始的坐标转换为其在每张图像中的体素坐标。
如图 3 所示,扫描点 C(x,y)是指从坐标文件中读取的结节中心的位置信息,中心点 O(a,b)是指在解剖学坐标系中第一个体素的位置,空间距离 S(m,n)是两个体素横向和纵向之间的距离信息。利用上述三个点的信息,计算扫描点 C 经坐标转换为 C’(x’,y’)点的表达式如式(2)所示:
'/> |
(2)图像数量降维
数据集中正负样本比例约为 1∶500,其中负样本数据量大约有 550 000 个,大量的负样本并不会有效提升分类模型的准确率,反而增加系统负担,因此在不影响模型性能的情况下,适量选取负样本。在经过实验后,本文最终以正负样本 1∶5 的比例随机抽取负样本。
2.1.3 正样本扩充
在对负样本进行降维后,正样本数据量依然不足,如果仅使用少量正样本数据集对模型训练会削弱模型的泛化能力、影响模型的识别准确率,因此需要对正样本进行合理的扩充[15]。
经过大量实验后,本文采用平移和旋转两种方法对正样本数据进行扩充。由于在处理图像时均是以结节作为中心进行剪切,使得结节出现位置过于单一。因此,在剪切时将图像中心坐标于横向或纵向上随机平移 0~10 个单位,得到一系列既含有结节且结节不在中心处的新图像。同时,为获取不同成像条件下的结节图像,本课题组又对图像进行了旋转操作,进一步扩充正样本。
对于坐标为(x,y)的点,平移操作后的坐标为(x′,y′),其表达式如式(3)所示;旋转操作后的坐标为(x″,y″),表达式如式(4)所示:
'/> |
'/> |
式(3)中 k1、k2 分别为图像在横向或纵向上平移的单位数量,这里 k1、k2 取-10~10 之间的整数,Δx、Δy 是横向、纵向像素点的单位间距。式(4)中的 θ 为图像逆时针旋转的角度。本文中选取 θ 值为 90° 和 180°,使用该方法对图像正样本扩增后的结果如图 4 所示。后续,本课题组将通过实验以证明通过上述方法对正样本数量进行扩充后有利于提升模型的泛化能力。
2.1.4 数据集分类
经过处理得到的 ROI 区域最终要应用于深度学习模型中,在有监督的机器学习中[16],数据集通常被分 1~2 个训练集和 1 个测试集。
由于本文在最后评估模型时所使用的是五折交叉验证方法,因此将数据均分为 5 个子集 X_1~X_5,每次从 5 个子集中选取 3 个子集合并作为训练数据集,剩余两个子集则作为验证集与测试集。训练数据集用于训练模型,建立分类器;验证数据集用于确定网络结构和控制模型复杂程度的参数,也可以调整分类器的参数;测试集则用来检验训练后得到的最优模型的性能。5 种组合如图 5 所示,对应训练模型 1~5,各数据集的样本量如表 1 所示。
2.2 二维卷积神经网络
用于检测肺结节的 CNN 主要由不同数量的输入层、卷积层、池化层、全连接层、dropout 层及输出层共 9 层构成,具体结构如图 6 所示。输入层是通过预处理得到的 50 × 50 的图像,之后通过一个有 32 个 5 × 5 卷积核的卷积层和步长为 2 的 2 × 2 池化层,接着顺次通过有 64 个 5 × 5 卷积核的卷积层、64 个 3 × 3 卷积核的卷积层以及步长为 2 的 2 × 2 池化层,之后通过全连接层以及防止过拟合的 dropout 层,分类后由输出层输出[17]。
2.2.1 卷积层
卷积层是 CNN 中的核心层。卷积是一种线性运算,通过局部加权来输入信号,其本质是提取目标图像数据集中不同频段的特征信息,假设 是第 l 层卷积层接收到的第 i 个特征图,那么卷积的计算过程如式(5)所示:
其中, 表示第 l 层中第 j 个特征图的对应偏置,f(·)为激活函数,*表示卷积运算[18]。Mj 表示第 j 个输出特征图卷积过程中的输入图合集, 表示第 l 层用于提取特征图 x 的第 i 个输入的卷积核,最后输出第 j 个特征图,其表达式如式(6)所示:
卷积计算中使用的激活函数有很多种,本文采用修正线性单元(rectified linear units,ReLU)激活函数,ReLU 激活函数如式(7)所示:
ReLU 函数是分段线性函数,将所有负值转化为 0,但正值不变,这种操作被称为单侧抑制,正是由于单侧抑制,神经网络中的神经元具有了稀疏激活性[18]。
2.2.2 池化层
池化层穿插在不同的卷积层中,与卷积层相连,以缩小数据和参数的量,减轻过度拟合现象。池化层的输入为经由卷积层计算而得到的特征图,且输出的特征图数量与输入的特征图数量相同,经过池化后输出的特征图的维度大幅度减少,计算公式如式(8)所示:
式(7)中 表示池化层 l 的前一层中的第 j 个特征图, 表示第l层输出的第 j 个池化结果, 表示第 l 层第 j 个特征图对应的加权值, 表示对应的偏置项,f(·)为激活函数,down(·)为池化函数[19]。本文选择最大池化操作,即池化结果中采样点的值为卷积计算后窗口中最大的值,如式(9)所示:
式中 pj 表示池化结果,Rj 表示池化窗口,si 表示池化窗口中的数值。最大池化具体操作示意图如图 7 所示。
2.2.3 dropout 层
在训练网络模型时,随着迭代数量的增加,网络对训练数据集和验证数据集上的图像数据拟合程度呈现两极分化的态势,前者效果很好而后者则较差,即过拟合现象。
针对这种现象,本文引入 dropout 层,将这层神经元随机采样,将采样后的子网络作为新的目标网络。根据参数 p 得出向量 r(l),利用上一步得到的 r(l)向量对 h(l)进行采样,产生一个约减的输出,如式(10)~(11)所示,从而完成对原网络的采样并生成新的子网络[19]。
其中,向量 r(l)的元素符合伯努利随机分布,常参数 p 为人为设置的丢弃神经元个数的比例,在 dropout 层以其作为参数按比例随机激活神经元,h(l)是上一层的输出,· 表示按向量元素点乘。若在一个具有 n 个结点的网络中插入一个 dropout 层,可用的子网络共有 2n 个,且当 n 足够大时,每次采样更新后得到的新子网络均不重复[20],进而降低过拟合程度。
3 实验结果
3.1 模型评估指标
利用本文模型,对给定标签的样本数据集进行预测,并将预测结果与标签结果比对。
分类模型的性能通过准确率(accuracy)(以符号 Acc 表示)、敏感性(sensitivity)(以符号 Se 表示)和特异性(specificity)(以符号 Sp 表示)来衡量,其中准确率是正确分类的样本占比。每个指标具体计算方法如式(12)~(14)所示:
其中,真阳性(true positive,TP)(符号记为:TP)表示正样本被正确分类的个数;假阳性(false positive,FP)(符号记为:FP)表示负样本被错误地分类为正样本的个数;真阴性(true negative,TN)(符号记为:TN)表示负样本被正确分类的个数;假阴性(false negative,FN)(符号记为:FN)表示正样本错误地分类为负样本的个数。
3.2 实验结果与分析
以 LUNA16 数据集为原始数据,采用本文的图像预处理方法得到适配模型的数据集,并对本文设计的模型进行测试,测试结果的方法采用了建模应用中常见的五折交叉验证方法,将实验数据集划分为训练集、验证集和测试集三个子集,依据 2.1 节描述的方法对数据集进行处理,采用五折交叉验证的方法,使用不同数据的排列组合方法训练 5 个模型,对训练出的 5 个模型分别进行评估,将得到的准确率、敏感性、特异性三项评估指标分别取均值,作为本模型最终的评估结果。
五折交叉验证法可以有效地评估模型的性能,在数据集有限的情况下,采用同一数据的不同部分来训练测试模型,相当于扩充了训练集的数据,若 5 个模型的测试结果都很好,说明模型具有良好的泛化能力。
利用本文训练出的 5 个模型,分别对相应测试集样本进行测试,测试结果及其对应的评估指标如表 2 所示。可以看出,5 个模型的肺结节检测准确率、敏感性和特异性指标均在 92.0% 以上,各项指标数据平稳。综合 5 个模型的评估指标,肺结节检测的准确率均值为 92.3%、敏感性均值为 92.1%、特异性均值为 92.6%。
将上述结果与一些同样需要依赖于图像精细处理的肺结节分类算法进行比较,不同模型的肺结节检测结果如表 3 所示。
从表 3 中可以看出:虽然部分方法采用的数据集有所不同,但是仍可以粗略地比较出不同算法之间的优劣性。在使用了最终用途负荷和保护评估计划(End-Use Load and Conservation Assessment Program,ELCAP)数据集的三维 CNN(3D-CNN)中,由于数据集图像数量较少,从而导致准确率和特异性偏低;在同样使用了 LUNA16 数据集的二维 CNN(2D-CNN)和人工神经网络(artificial neural network,ANN)中,ANN 模型在敏感性上具有相对优势;本文经改良的 2D-CNN 肺结节检测模型的准确率、特异性均高于其它模型;敏感性与 ANN 模型持平,但是相较于另两个网络模型仍具有优势,模型整体更加稳定,性能优于上述模型。
3.3 验证实验结果与分析
在对模型评估的同时,本文也进行了一些验证实验,以验证方法的正确性及模型性能。首先,分别用平移、旋转、平移和旋转共 3 种不同的扩充方法进行正样本扩充,并进一步建模以验证其准确率,结果发现,平移法对应模型的验证准确率为 89.6%,旋转法对应模型的验证准确率为 88.3%,平移和旋转相结合对应模型的验证准确率为 92.3%。仅平移或仅旋转进行数据扩增训练出的模型准确率相当,但将两种方法结合后,准确率得到了显著的提升。因此在正样本扩增过程中使用平移和旋转方法相结合是有效的。
本文增加了模型微扰实验,具体方法为:按照正负样本 1∶1 比例,从 LUNA16 数据集中随机抽取 100 张 CT 图像,提取 100 张图像的 ROI 作为测试集 1;之后,将测试集 1 中每幅图像的中心点在横向或纵向随机平移 0~10 个单位,分别提取 100 张图像的 ROI 作为测试集 2;同理,随机平移 10~20 个单位,形成测试集 3。将 3 个测试集输入 2.1 节的模型 1 中检测,得到的结果如表 4 所示。
通过表中数据可以看出:测试集 1 和测试集 2 三项指标均相差不大,但是在测试集 3 中出现了明显的下滑,主要原因是一些半径大的大结节在平移过程中移出图外,仅有部分留在图像内的特征被模型学习到,导致模型对此结节的特征学习不够完整。模型微扰实验结果说明,本文给出的肺结节检测模型对于肺结节偏离中心 0~20 个单位的图像也具有较高的识别能力。
3.4 肺结节检测实验结果与分析
在实际肺结节检测中,结节的位置未知,无法构建以结节为中心的图像集,因此要对整张切片进行分割。首先在 LUNA16 数据集中随机选取一位患者 CT 图像中的某张切片,该切片中仅有一处医生确诊为肺结节的标注。对切片进行归一化处理等医学图像预处理操作,可视化切片及结节标注如图 8 所示,图中箭头所指为结节。
然后,对该图像进行切割,以 10 个像素单位为间隔截取图像,共获得 2 209 张大小为 50 × 50 的图像样本集。利用本文模型对这 2 209 张图像进行检测,将检验为正样本的所有图像的中心点绘制在原切片中得到散点图,结果如图 9 左图所示。根据 3.3 节验证实验的结果可知,模型对结节处于中心及结节中心偏移 0~20 个单位的图像检测结果一致,即对实际结节,结节点附近会出现 3 × 3 及以上的散点阵列,如图 9 中绿色散点所示。对散点进行处理,保留 3 × 3 及以上的散点阵列,该阵列所在位置即为结节分布区域,如图 9 右图所示。可以看出:符合要求的区域只有一个且与医生给定的结节标注位置相符。
在实际肺结节检测应用中,使用本节的图像分割方法得到样本集并用模型进行检测。同上述方法,对医学数字成像和通信(digital imaging and communications in medicine,DICOM)格式的外源 CT 图像数据进行肺结节检测的结果如图 10 所示。
上述基于 CNN 的肺结节检测方法已获得北京市知识产权局颁发的软件著作权,软件名称为“肺结节检测模型建立及应用系统”,可实现肺结节的自动检测,授权号为 2019SR0075702。
4 结论
肺癌筛查结果分析的第一步是肺结节检测。为辅助肺癌的早期筛查,本文建立了基于 CNN 模型的肺结节检测方法。提出了一套肺部 CT 图像预处理方案,构建了模型训练所需的数据集;通过对比实验调整了 CNN 网络架构,采用 ReLU 激活函数加快收敛速度,引入 dropout 层防止过拟合;采用五折交叉验证训练肺结节检测模型进行有效评估,并将模型用于患者任意 CT 图像切片的肺结节筛查。结果显示,图像中心坐标随机平移的正样本扩增方式可有效提高模型的泛化及抗干扰能力;本文所提肺结节检测模型可对肺结节进行有效检测;将该模型应用于患者肺结节检测,可准确定位肺结节,为肺癌早期筛查提供有效帮助。
基于正样本数量的增加可以有效获取肺结节差异性特征,且增加正样本数量可以提高模型的泛化性能,后续本课题组可以尝试重建肺结节并提取肺结节多维度信息,增加肺结节样本的数量,进一步提高肺结节检测模型的泛化能力。此外,由于 2D-CNN 有其自身局限性,忽略了肺结节丰富的空间结构特征,今后可以考虑用 3D-CNN 取代 2D-CNN,建立基于 3D-CNN 的肺结节检测模型。
利益冲突声明:本文全体作者均声明不存在利益冲突。