DSB2017论文翻译
来源:CVPR2017
摘要:
从计算机断层扫描(CT)自动诊断肺癌包括两个步骤:检测所有可疑病变(肺结节)和评估整个肺的良恶性。目前,关于第一步的研究较多,而关于第二步的研究却很少。由于结节的存在并不一定是癌症,而且结节的形态与肿瘤有着复杂的关系,肺癌的诊断需要对每一个可疑结节进行仔细的调查,并整合所有结节的信息。我们提出一种三维深度神经网络来解决这个问题。该模型由两个模块组成。第一个是一个用于结节检测的三维区域建议网络,它输出一个对象的所有可疑结节。第二种方法根据检测置信度选择前5个结节,评估其致癌概率,并将其与Leaky Noise-or相结合,得到受试者肺癌的概率。两个模块共享同一个主干网,即一个改进的U-Net。通过交替训练两个模块,解决了由于训练数据不足而导致的过拟合问题。
一、 引言
肺癌是最常见和最致命的恶性肿瘤之一。与其他癌症一样,肺癌的最佳解决方案是早期诊断和及时治疗,因此定期检查是必要的。胸部CT是肺癌诊断的常用影像学工具,它根据组织对X射线的吸收来显示所有组织(tissues),肺部的病变(lesion)称为肺结节。结节通常具有与正常组织相同的吸收水平,但有一个独特的形状:支气管和血管是连续的管道系统,根部厚,分支薄,结节通常呈球形且孤立。通常需要一位有经验的医生在10分钟左右对病人进行彻底检查,因为有些结节很小,很难被发现。此外,结节有多种亚型,不同亚型的发生率也不同。医生可以根据结节的形态来判断其恶性程度,但其准确性很大程度上取决于医生的经验,不同的医生可能会给出不同的预测。因为计算机视觉模型可以快速地以相同的质量扫描任何地方,并且不受疲劳和情绪的影响,所以计算机辅助诊断(CAD)适合于这项任务。近年来,深度学习的发展使计算机视觉模型能够帮助医生诊断各种问题,并且在某些情况下,这些模型已经表现出与医生竞争的性能。
与一般的计算机视觉问题相比,肺癌的自动诊断有几个困难。首先,结节检测是一个三维目标检测问题,比二维目标检测更困难。由于GPU内存有限,直接将二维目标检测方法推广到三维场景中面临技术困难。因此,一些方法使用二维区域建议网络(RPN)来提取单个2D图像中的建议(proposals),然后将它们组合起来生成3D建议(proposals)。更重要的是,标记三维数据通常比标记二维数据困难得多,这可能会使深度学习模型因过度拟合而失败。其次,结节形态多样(图1),结节与正常组织的区别不明显。因此,即使是有经验的医生在某些情况下也无法达成共识。第三,结节与癌症的关系复杂。结节的存在并不一定意味着肺癌。对于多发结节的患者,应考虑所有结节来推断癌症的可能性。换句话说,与经典的检测任务和分类任务不同,在这个任务中,一个标签对应多个对象。这是一个多实例学习(MIL)问题,是计算机视觉中的一个难题。
为了解决这些困难,我们采取以下策略。我们建立了一个3D-RPN来直接预测结节的边界框。三维卷积神经网络(CNN)结构使网络能够捕捉复杂的特征。针对GPU内存问题,采用了patch-based的训练和测试策略。对模型进行端到端的训练,以实现高效的优化。广泛的数据扩充被用来缓解过拟合。检测器的阈值设置得很低,所有可疑结节都被包括在内。然后选择前5个可疑结节作为分类器的输入。在分类器中引入leaky noisy-or 模型,对前5个结节的得分进行组合。
The noisy-or model是概率图模型中常用的局部因果概率模型。它假设一个事件可以由不同的因素引起,其中任何一个因素的发生都可以导致事件发生的概率独立。模型的一个修改版本被称为leaky noisy-or model,它假设即使没有任何因素发生,事件也存在泄漏(leakage)概率。The noisy-or model适合此任务。首先,当一个病例中存在多个结节时,所有结节都会影响最终预测。第二,高度可疑的结节可以解释癌症病例,这是可取的。第三,当没有结节可以解释癌症病例时,癌症可以归因于泄露(leakage)的可能性。
分类网络也是一个三维神经网络。为了防止过度拟合,我们让分类网络共享检测网络的主干网(两个网络的主干网的参数是捆绑的),并交替训练两个网络。还使用了大量的数据扩充。
我们在这项工作中的贡献总结如下:
1)提出第一个volumetric one-stage end-to-end CNN for 3D object detection.。
2)为了解决CAD中the multi-instance learning task,提出将the noisy-or gate(噪声或与门)集成到神经网络中。
论文的其余部分安排如下。第二节介绍了一些密切相关的工作。在后面的章节中详细介绍了所提出方法的流程。它包括三个步骤:(1)预处理(第三节):从其他组织中分割出肺;(2)检测(第四节):找出肺部所有可疑结节;(3)分类(第五节):对所有结节进行评分,并结合它们的癌症概率,得出患者的总体癌症概率。第一步采用经典的图像预处理技术另外两个步骤由神经网络完成。第六节给出了研究结果。第七节对论文进行了总结和讨论。
图 1 DSB数据库中的一些结节示例。
二、 相关工作
A. General object detection
已经提出了许多目标检测方法,而对这些方法的全面回顾超出了本文的范围。这些方法大多是为二维目标检测而设计的。一些最先进的方法有两个阶段(例如,Faster RCNN),其中一些边界框(称为建议)在第一阶段被提出(是否包含对象),在第二阶段进行类决策(建议中的对象属于哪个类)。最近的方法有一个单一的阶段,其中边界框和类概率被同时预测(YOLO),或者在没有建议生成的情况下预测默认框的类概率(SSD)。一般来说,单级方法速度更快,但两级方法更精确。在单类目标检测的情况下,两阶段方法中的第二阶段不再需要,方法退化为单阶段方法。
先进的二维目标检测方法扩展到三维目标检测任务(如视频中的动作检测和体积检测)受到限制。由于主流GPU内存的限制,一些研究使用2D-RPN从单个2D图像中提取建议,然后使用额外的模块将2D建议合并为3D建议。类似的策略已经用于3D图像分割。据我们所知,3D-RPN还没有用于处理视频或三维数据。
B. Nodule detection
结节检测是一个典型的三维检测任务,由于其重要的临床意义(clinical significance),近年来受到越来越多的关注。这个任务通常分为两个子任务:提出建议(making proposals)和减少误报(reducing false positives),每个子任务都吸引了大量的研究。第一个子任务的模型通常从一个简单而快速的3D描述符开始,然后由分类器给出许多建议。第二个子任务的模型通常是复杂的分类器。2010年Van Ginneken等人对六种传统算法进行了全面的回顾,并在包含55次扫描的ANODE09数据集上对它们进行了评估。在2011-2015年期间,开发了一个更大的数据集LIDC。研究人员开始采用CNN来减少假阳性的数量。Setio等人采用多视角CNN,Dou等人采用3D-CNN来解决这一问题,均取得了比传统方法更好的效果。丁等采用2D-RPN对每个切片进行结节建议,采用3D-CNN减少假阳性样本数。一个名为2016年肺结节分析(LUNA16)的比赛是基于选定的LIDC子集进行的,在本次比赛的检测轨道上,大多数参赛者采用了两阶段法。
C. Multiple instance learning
在MIL任务中,输入是一包(bag)实例。如果任一实例都被标记为阳性,则该包被标记为阳性;如果所有实例都被标记为阴性,则该包被标记为阴性。
许多医学图像分析任务都是MIL任务,因此在深入学习兴起之前,一些早期的工作已经在CAD中提出了MIL框架。Dundar等人引入convex hull来表示多实例特征,并将其应用于肺栓塞(pulmonary embolism)和结肠癌(colon cancer)的检测。徐等从组织检查图像中提取多个斑块,并将其作为多个实例处理,解决了结肠癌的分类问题。
为了将MIL整合到深度神经网络框架中,关键的部分是一个将不同实例的信息结合在一起的层,称为MIL Pooling Layer (MPL)。一些MPL示例有:max pooling layer、mean pooling layer、log-sum-exp pooling layer、generalized mean layer和noise or layer。如果每个样本的实例数是固定的,那么使用特征串联作为MPL也是可行的。MPL可用于在特征级别或输出级别组合不同的实例。
D. Noisy-or model
The noisy-or Bayesian model被广泛使用于推断例如肝脏疾病(liver disorder)和哮喘病例(asthma case)等疾病的概率。Heckerman建立了一个基于the noisy-or gate的多特征和多疾病诊断系统。Halpern和Sontag提出了一种基于The noisy-or model的无监督学习方法,并在快速医学参考模型上进行了验证。
以上所有的研究都将The noisy-or model引入贝叶斯模型。The noisy-or model与神经网络的结合是很少见的。Sun等人在深度神经网络框架中采用它作为MPL以提高图像分类精度。张等将其作为提高目标检测精度的一种提升方法。
三、 数据库和预处理
A. Datasets
使用两个肺扫描数据集训练模型,即Lung Nodule Analysis 2016 dataset(LUNA)和2017年Data Science Bowl dataset(简称DSB)。LUNA数据集包括888名经放射科医生注释的1186个结节标签,而DSB数据集仅包含每名受试者的二进制标签,表明该受试者在扫描后一年是否被诊断为肺癌。DSB数据集包括训练集、验证集和测试集的1397,198,506人(例)。我们在训练集中手动标记754个结节,在验证集中标记78个结节。
Lung结节与DSB结节有显著性差异。LUNA数据集有许多非常小的注释结节,可能与癌症无关。根据医生的经验,小于6 mm的结节通常不危险。然而,DSB数据集有许多非常大的结节(大于40 mm)(图1中的第五个样本)。DSB数据集的平均结节直径为13.68 mm,LUNA数据集的平均结节直径为8.31 mm(图2a)。此外,DSB数据集在主支气管上有许多结节(图1中的第三个样本),它们在LUNA数据集中很少发现。如果只在LUNA数据集上训练网络,则很难检测到DSB数据集中的结节。缺少大结节会导致错误的癌症预测,因为大结节的存在是癌症患者的标志(图2b)。为了解决这些问题,我们从LUNA注释中删除小于6mm的结节,并在DSB中手工标记结节。
作者缺乏肺癌诊断的专业知识,因此结节的选择和手工注释可能会引起相当大的噪音。下一阶段(癌症分类)中的模型设计为对错误检测具有鲁棒性,这减少了对高度可靠的结节标记的需求。
图 2 结节直径分布。(a)DSB和LUNA数据集中的分布。(b)DSB数据集中癌症患者和健康人最大结节直径的分布。
B. 预处理
整个预处理过程如图3所示。首先将原始数据转换成Hounsfield单位(HU),HU是描述放射性密度的标准定量尺度。每一种组织都有其特定的HU范围,而且这个范围对于不同的人是相同的(图3a)。
1) Mask extraction:CT图像不仅包含肺部,还包括其他组织,其中一些组织可能呈球形,看起来像结节。为了排除这些干扰因素,最方便的方法是在检测阶段提取肺组织的掩膜而忽略其他组织。对于每个切片,用高斯滤波器(标准偏差=1 像素)对2D图像进行滤波,然后使用-600作为阈值(threshold)进行二值化(图3b)。移除所有小于30 或偏心率(eccentricity)大于0.99(对应于一些高亮度径向成像噪声(high-luminance radial imaging noise))的2D连接组件。然后在计算得到的二元三维矩阵(binary 3D matrix)中的所有三维连通分量只保留不接触矩阵角点(matrix corner)且体积在0.68L到7.5L之间的分量(components)。
在这一步之后,通常只剩下一个与肺相对应的二元成分,但有时也会有一些分散注意力的成分。与那些分散注意力的成分相比,肺成分始终处于图像的中心位置。对于组件的每个切片,我们计算它到图像中心(MinDist)最小距离及其面积。然后我们选择所有面积大于6000 的切片,计算这些切片MinDist的平均值。如果平均MinDist的大于62 ,则该部分(components)将被移除。然后剩余的部分(components)被联合起来,代表lung mask(图3c)。
在某些情况下,肺在顶部切片上与外部世界相连,这使得上述程序无法将肺与外部世界空间分离。因此,需要首先移除这些切片才能使上述处理工作正常。
2) Convex hull & dilation:一些结节接触到肺外壁。它们不包括在上一步获得的掩膜中,这是不想要得到的结果。为了使它们保持在掩模内,一种方便的方法是计算掩膜的凸壳(convex hull)。直接计算掩膜的凸壳会包含太多无关的组织(tissues)(如心脏和脊椎(spine))。因此,在使用以下方法进行凸包计算之前,首先将肺部掩码分成两部分(大致对应于左肺和右肺)。
掩膜被反复侵蚀(eroded),直到它被分成两部分(它们的体积相似),这两部分是左肺和右肺的中心部分。然后将这两个分量放大到原来的大小。它们与原始掩膜的交叉点(intersections)现在分别是两个肺的掩膜(图3d)。对于每个掩模,大多数2D切片被其凸壳代替来包括上述结节(图3e)。得到的掩膜被10个voxels进一步放大来包含一些周围的空间。将两个肺的掩膜连接起来就可以得到完整的掩膜(图3f)。
然而,肺下面的部分的一些二维切片呈新月形(图4)。它们凸壳可能含有太多不需要的组织。因此,如果2D掩膜的凸壳面积大于掩模本身的1.5倍,则保持原始掩膜(图4e)
3) Intensity normalization:为了为深度网络准备数据,我们将图像从HU转换为UINT8。原始数据矩阵首先被剪裁到[-1200,600],然后线性转换为[0,255]。然后再乘以上面得到的完整掩膜,掩膜外的所有东西都填充了170,这是普通组织的亮度。另外,对于上一步膨胀产生的空间,所有大于210的值也被170替换。因为周围有一些骨头(高亮度组织),它们很容易被误分类为钙化结节(也就是高亮度组织)。我们选择用170填充骨骼,使它们看起来像正常组织(图3g)。图像在所有3个维度上被裁剪,使得每边的边距为10个像素(图3h)。
图 3 预处理过程。注意肺外壁有结节。(a)将图像转换为HU,(b)对图像进行阈值二值化,(c)选择与肺部相对应的连通域,(d)对左、右肺进行分割,(e)计算每个肺的凸包。(f) 将两个掩模放大合并,(g)将图像与掩模相乘,用组织亮度填充掩模区域,并将图像转换为UINT8,(h)裁剪图像并对骨亮度进行裁剪
图 4 与图3相同,但显示了较低的切片。请注意,在步骤(e)中没有计算凸包壳。
四、用于检测的3D CNN
图 5 结节检测网。(a)整体网络结构。图中的每个立方体代表一个4D张量。图中只显示了两个尺寸。立方体内的数字代表空间大小(高度=宽度=长度)。立方体外的数字表示通道数;(b)残差块的结构;(c)是(a)中左边的合并单元的结构。右边的合并单元的结构很相似,但是没有定位裁剪。
三维CNN被设计用来检测可疑结节。它是一个三维版本的RPN,使用了一个改进的U-net作为主干模型。由于本课题中只有结节和非结节两个类别,因此在不增加分类器的情况下,预测方案直接作为检测结果使用。这与单级检测系统YOLO和SSD类似。这种结节检测模型简称N-Net,其中N代表结节。
A. Patch-based input for training
目标检测模型的输入通常采用基于图像的训练方法:在训练过程中,用整个图像作为模型的输入。然而,由于GPU内存的限制,这对于我们的3D CNN是不可行的。当肺部扫描的分辨率(resolution)保持在一个很好的水平时,即使是一个样本也会消耗超过主流GPU的最大内存。
为了克服这个问题,我们从肺部扫描中提取出小的3D patchs,并分别输入到网络中。patchs的大小是128×128×128×1(高度×长度×宽度×通道,下面使用相同的符号)。随机选取两种patchs。首先,选择70%的输入,使其至少包含一个结节。30%的输入是从肺部扫描中随机裁剪的,可能不包含任何结节。后一种输入保证了足够多的阴性样本覆盖。
如果一个patch超出肺部扫描的范围,它将被填充值170,与预处理步骤相同。结节目标不一定位于patch的中心,但与patch边界的距离大于12个像素(少数结节太大除外)。
采用数据增强来解决过拟合问题。这些patchs被随机地左右翻转和调整大小,比率在0.8到1.15之间。其他增强,如轴交换和旋转也尝试过,但没有产生显著的改进。
B. Network structure
检测器网络由U-Net主干和RPN输出层组成,其结构如图5所示。U-Net主干网使网络能够捕获多尺度信息,这是必不可少的,因为结节的大小变化很大。RPN的输出格式使网络能够直接生成建议。
网络主干具有前馈路径和反馈路径(图5a)。前馈路径从两个3×3×3的卷积层开始,都有24个通道。然后是四个3D残差块交织着四个3D max pooling层(池大小为2×2×2,步长为2)。每个3D残差块(图5b)由三个残差单元组成。残差单元的结构如图5b所示。前馈路径中的所有卷积核的核大小为3×3×3,padding为1。
反馈路径由两个反卷积层和两个合并单元(combining units.)组成。每个反卷积层的步长为2,核大小为2。并且每个合并单元将前馈blob和反馈blob连接起来并将输出送到一个残差块(图5c)。在左(left)合并单元中,我们引入位置信息作为额外的输入(详见第IV-C节)。该合并单元的特征图尺寸为32×32×32×131。接着是两个1×1×1的卷积,分别用通道64和通道15进行卷积,得到尺寸为32×32×32×15的输出。
4D输出张量调整为32×32×32×3×5。最后两个维度分别对应于anchors和regressors。受RPN的启发,该网络在每个位置都有三个不同尺度的anchors,对应于三个长度分别为10、30和60mm的边界框。因此总共有32×32×32×3 anchor boxs。五个回归值为 。第一个回归值使用了sigmoid激活函数:
其他的回归值没有激活函数。
C. Location information
建议的位置也可能影响对结节是否为结节、是否恶性的判断,因此我们也在网络中引入了位置信息。对于每个图像块,我们计算其对应的位置裁剪,其大小相当于输出的feature map(32×32×32×3)。定位裁剪有3个feature maps,分别对应于X、Y、Z轴上的标准化坐标。在每个轴上,每个轴上的最大值和最小值分别归一化为1和-1,分别对应于肺分割的两端。
D. Loss function
目标结节的the ground truth bounding box用 表示,一个anchor的边界框 表示,其中前三个元素表示box中心点的坐标(coordinates),最后一个元素表示边长。联合交叉(Intersection over Union:IoU)用于确定每个anchor box的标签。与目标结节的IOU大于0.5小于0.02的anchor boxs分别作为阳性和阴性样本处理。其他Anchor boxs在训练过程中被忽视了。Anchor boxs的预测概率和标签分别用 和 表示。注意 (0表示负样本,1表示正样本)。box的分类损失被定义为:
边界框的回归标签被定义为:
相应的预测值分别是 ,总体回归损失被定义为:
其中损失度量是平滑L1范数(smoothed L1-norm):
每一个anchor box的损失函数被定义为:
这个方程表明回归损失只适用于正样本,因为只有在这些情况下p=1。总损失函数是一些选定的anchor boxs的损失函数的平均值。我们使用sample balancing and hard negative mining进行选择(见下一小节)。
E. Positive sample balancing
对于一个大结节,有许多相应的positive anchor boxes。为了减少训练样本间的相关性,在训练阶段只随机选取其中一个样本。
虽然我们已经移除了一些非常小的结节,但是结节大小的分布仍然非常不平衡。小结节的数目远大于大结节的数目。如果使用均匀采样,训练后的网络会使小结节产生偏差。这是我们不想要的结果,因为大结节通常比小结节更能显示癌症。因此,训练集中大结节的采样频率增加。具体而言,大于30mm和40mm的结节采样频率分别是其他结节的2倍和6倍。
F . Hard negative mining
数据库中阴性样本比阳性样本多。虽然大多数阴性样本可以很容易地被网络分类,但也有少数阴性样本具有与结节相似的外观,难以正确分类。hard negative mining是目标检测中的一种常用技术,它被用来解决这一问题。我们在训练中使用了一个简单的在线版本的hard negative mining。
首先,通过向网络输入patchs,我们得到output map,它代表一组具有不同置信度的边界框。其次,随机选取N个阴性样本作为候选样本库(candidate pool)。第三,根据分类置信度得分,对候选样本库中的阴性样本进行降序排序,选取前n个样本作为hard negatives。其他阴性样本被丢弃,不包括在损失计算中。使用随机选择的候选样本库可以减少阴性样本之间的相关性。通过调整候选样本库的大小和n值,可以控制hard negative mining的强度。
G. Image splitting during testing
网络训练完成后,整个肺部扫描可以作为输入,获取所有可疑结节(suspicious nodules)。因为网络是全卷积(fully convolutional)的,所以这样做很简单。但是由于我们的GPU内存限制,这样是不可行。尽管网络在测试中所需的内存比在训练中要少得多,但这一要求仍然超过了GPU的最大内存。为了克服这个问题,我们将肺部扫描分成多个部分(每个部分208×208×208×1),分别进行处理,然后合并结果。我们保持这些分割(splits)重叠一个大的边缘(32像素),以消除不必要的边界效应在卷积计算。
这一步将输出许多结节建议 ,其中 为建议的中心, 为半径, 为置信度。然后执行非最大抑制(NMS:non-maximum suppression)操作以排除重叠建议(overlapping proposals)。基于这些建议,另一个模型被用来预测癌症的概率。
五、癌症分类
图 6 案例分类器的图示。(a)得到建议的过程和建议的特点。(b)不同的多结节信息融合方法。
然后我们根据检测到的结节来评估患者癌症的可能性。对于每一个患者,根据他们在N-Net中的置信度得分,选出五个建议。作为一种简单的数据扩充方法,在训练过程中,建议是随机选取的。被选为结节的概率与其置信度成正比。但在测试过程中,会直接选出前五名的建议。如果检测到的建议数小于5个,则使用多个空白图像作为输入,以便数量仍然为5个。
由于训练样本的数量有限,建立一个独立的神经网络来进行训练是不明智的,否则会出现过度拟合。一个可以选择的方法是重复使用在检测阶段训练的N-Net。
对于每一个选择的建议,我们裁剪一个96×96×96×1的patch,其中心是结节(注意这个patch比检测阶段的小),将它送入N-Net,得到N-Net的最后一个卷积层,其尺寸为24×24×24×128。提取每个建议的中心2×2×2 voxels并进行最大融合(max-pooled),得到128-D特征(图6a)。为了从单个病例的多个结节中获得单个得分(single score),我们探索了四种得分方法(见图6b)。
A. Feature combining method
首先,所有前五个结节的特征被输入到一个全连接的层中,从而得到五个64-D特征。然后,通过max-pooling将这些特征合并起来以提供单个64-D特性。然后将特征向量输入第二全连接层,其激活函数为sigmoid函数,以获得病例的癌症概率(图6b中的左面板(Left panel))。
如果结节间存在非线性相互作用,这种方法可能是有用的。缺点是它在集成步骤(integration step)中缺乏可解释性(interpretability),因为每个结节与癌症概率之间没有直接关系。
B. MaxP method
将前五个结节的特征分别输入同一个具有64个隐藏单元和一个输出单元的双层感知器(Perceptron)。最后一层的激活函数也是sigmoid函数,它输出每个结节的癌症概率。然后将这些概率中的最大值作为该患者的概率。
与特征融合方法相比,该方法对每个结节都有较好的解释能力。然而这种方法忽略了结节之间的相互作用。例如,如果一个病人有两个结节,且两个结节都有50%的癌变概率,医生会推断总的癌症概率远远大于50%,但模型仍然会给出50%的预测。
C. Noisy-or method
为了克服上述问题,我们假设结节导致的癌症是相互独立的(the nodules are independent causes of cancer),任何一种肿瘤的恶性程度都会导致癌症。与最大概率模型一样,每个结节的特征首先被输入到一个双层感知器中以得到概率。最终的癌症概率是:
其中 代表第i个结节的癌变概率。
D. Leaky Noisy-or method
Noisy-or method和MaxP method中存在一个问题。如果一个受试者患有癌症,但是检测网络漏掉了一些恶性结节,这些方法会将癌症的病因归因于检测到的良性结节,这会增加数据集中其他类似良性结节的概率。显然,这很不理想。我们引入一个假想的假结节(dummy nodule),并定义癌症概率为 。最终的癌症概率变成:
在训练过程中自动学习,而不是手动调整。这个模型被用作我们的默认模型,称为C-Net(C代表case)。
E. Training procedure
标准交叉熵损失函数用于病例分类。由于内存的限制,每个病例的结节边界框都是预先生成的。分类器、包括共享特征提取层(N-Net部分)和集成层(integration layers)都是在这些预先生成的边界框上进行训练。由于N-Net较深,且三维卷积核的参数比二维卷积核的参数多,但用于分类的样本数量有限,因此模型容易过度拟合训练数据。
针对这一问题,采用了两种方法:数据扩充和交替训练。三维数据增强比二维数据增强更为强大。例如,如果我们只考虑翻转和轴交换,二维情况下有8个变量,而三维情况下有48个变量。具体地说,使用以下数据扩充方法:(1)在3个方向随机翻转(2)按0.75到1.25之间的随机数调整大小,(3)在3D中以任意角度旋转,(4)以小于半径15%的随机距离向3个方向移动。另一种常用的缓解过度适应的方法是使用适当的调节剂(regulizers)。在这个任务中,由于卷积层由检测器和分类器共享,这两个任务自然可以互相调节。因此,我们交替地在检测器和分类器上训练模型。具体地说,在每个训练块中,有一个检测器训练阶段和一个分类器训练阶段。
训练过程相当不稳定,因为每GPU的批大小只有2个,而且训练集中有许多离群值/异常值(outliers)。因此,在训练的后期使用梯度裁剪,即如果梯度向量的L2范数大于1,则将其归一化为1。
网络中使用批处理规范化(BN)。但在交替训练中直接应用它是有问题的。在训练阶段,在批内计算BN统计信息(激活的平均值和方差),在测试阶段,使用存储的统计信息(运行平均值统计信息(the running average statistics))。另一种训练方案会使运行平均值不适用于分类器和检测器。首先,它们的输入样本不同:分类器的patch大小为96,检测器的patch大小为128。第二,分类器的patch的中心始终是建议,但对于检测器而言,图像是随机裁剪的。因此,这两个任务的平均统计信息会有所不同,并且运行的平均统计信息可能处于中间点,并且会降低这两个任务在验证阶段的性能。为了解决这个问题,我们首先训练分类器,使BN参数适合于分类。然后在交替训练阶段,这些参数被冻结,即在训练和验证阶段,我们使用存储的BN参数。
综上所述,训练过程分为三个阶段:(1)将训练好的检测器的权值转移到标准模式下训练分类器;(2)用gradient clipping训练分类器,然后冻结BN参数,(3)利用gradient clipping和存储的BN参数交替训练网络进行分类和检测。该训练方案对应于表1中的A→B→E。
表 1 测试集上不同训练方法的交叉熵损失。第三块展示了比赛中排名前4的团队的性能
五、结果
A. Nodule detection
由于我们设计的检测模块在训练过程中忽略了非常小的结节,因此LUNA16评估系统不适合评估其性能。我们在DSB的验证集上进行了性能评估。共收集198例病例资料,总共包含71个结节(排除小于6mm的7个结节)。自由响应工作特性(FROC:Free Response Operating Characteristic)曲线如图7a所示。每扫描1/8、1/4、1/2、1、2、4、8假阳性的平均召回率为0.8562。
我们还研究了选择不同的top-k数时的召回率(图7b)。结果表明k=5足以捕获大多数结节。
图 7 检测模块的检测结果。(a)FROC曲线。(b) 不同top-k级别的召回率。
B. Case classification
为了选择训练方案,我们重新安排训练集与验证集,因为我们经验性地发现原始训练集与验证集有显著差异。原始训练集的四分之一被用作新的验证集。其余部分与原始验证集相结合,形成新的训练集。
如V-E节所述,在训练过程中使用了四种技术:(1)数据增强,(2)梯度裁剪,(3)交替训练,(4)冻结BN参数。这些技术的不同组合(在表1中用A,B…E来表示)在新的验证集上探索了不同的阶段顺序。结果表明,A→B→E方案效果最好。competition结束后,我们仍然可以将结果提交给评估服务器,因此我们在测试集上对训练方案进行了评估。表1显示了测试集的结果(模型在训练集和验证集的结合上进行了训练)。结果表明,A→B→E是众多方案中的最佳方案。
从表1的方框1我们可以得出几个结论。首先,如果不进行数据扩充,模型将严重过度拟合训练集。第二,交替训练显著提高了成绩。第三,梯度裁剪和BN冻结在这些方案中不是很有用。
从表1的方框2可以看出,当我们微调阶段A(A→B)的结果时,剪裁是有用的。交替训练有助于进一步优化模型(A→B→D)。此外,BN冻结技术的引入进一步提高了结果(A→B→E)。
表1的方框3显示了比赛中排名前4的团队的表现。比分非常接近。但是我们用一个模型得到了最高的分数
不同多结节信息集成模型(different multi-nodule information integration models)的结果见表2。所有模型均采用交替训练法(表1中的配置C)进行训练。三种基于概率的方法均优于特征组合(feature combining)方法。而Leaky Noisy-or model表现最好。
预测的癌症概率在训练集和测试集上的分布如图8a,b所示。通过改变阈值在每个集合上获得接收机工作特性(ROC:Receiver Operating Characteristic)曲线(图8c、d)。训练集和测试集的ROC曲线下面积(AUC)分别为0.90和0.87。如果我们将阈值设置为0.5(如果预测概率高于阈值,则分类为癌症),则训练集和测试集的分类准确率分别为85.96%和81.42%。如果我们将阈值设为1(所有病例都预测健康),则训练集和测试集的分类准确率分别为73.73%和69.76%。
图 8 癌症分类结果。健康人和病人在训练集(a)和测试集(b)上预测癌症概率的分布。癌症分类任务在训练集(c)和测试集(D)上的ROC曲线。
几个案例的分类结果如图9所示。对于两个true positive的病例(病例1和病例2),模型正确地预测了两个病例的高癌症概率。病例1有一个非常大的肿瘤(结节1-2),有很高的癌症概率。病例2有多个中等大小的结节,其中3个有显著的癌变概率,因此总体概率非常高。此外,该模型不仅可以根据肿瘤的大小,而且可以根据肿瘤的形态(morphology)来判断恶性肿瘤。结节1-1的大小比结节2-1和2-2大,但发生癌症的几率较低。原因如下。结节1-1亮度实,圆形,边界清晰,为良恶性。结节2-1形状不规则,边界不清,结节2-2亮度不透明,均为恶性肿瘤的征象。结节2-1称为刺状结节(spiculated nodule),结节2-2称为部分实心磨砂玻璃结节(part-solid ground-glass nodule),两者都是高度危险的结节。两例假阴性病例(例3和例4)均未发现明显结节,因此其总概率很低。两例假阳性病例(例5和例6)均有高度可疑结节,难以正确分类。例7未发现结节,例8仅检出2个不明显结节,故预测2例健康,正确。
六、讨论
提出了一种基于神经网络的肺癌自动诊断方法。设计了一个3D-CNN来检测结节,并使用leaky noisy-or model来评估每个检测到的结节的致癌概率并将它们组合在一起。整个系统在基准竞赛中取得了很好的癌症分类结果。
所提出的leaky noisy-or model医学图像分析中可以有广泛的应用前景。许多疾病的诊断都是从图像扫描开始的。图像中显示的病变可能与疾病有关,但这种关系是不确定的,这与本文研究的癌症预测问题中的情况相同。leaky noisy-or model可以整合来自不同病变的信息,从而预测结果。这也减少了对高精度精细(fine-scaled)标签的需求。
将3D-CNN应用于三维目标检测与分类面临两个困难。首先,当模型大小增大时,模型占用更多的内存,因此运行速度、批处理大小和模型深度都受到限制。我们设计了一个较浅的网络,用图像块代替整个图像作为输入。第二,3D-CNN的参数数目明显大于具有相似结构的2D-CNN,因此模型容易过度拟合训练数据。数据扩充和交替训练被用来缓解这个问题。
有一些改进模型性能的潜在方法。最直接的方法是增加训练样本的数量:1700例病例太少,无法涵盖结节的所有变体,一位有经验的医生在他的职业生涯中会看到更多的病例。其次,合并结节的分割标签可能是有用的,因为已经证明分割和检测任务的联合训练可以提高这两个任务的性能。
虽然许多团队在这次癌症预测竞赛中取得了不错的成绩,但这项任务本身对临床有明显的局限性:没有考虑结节的生长速度。事实上,快速生长的结节通常是危险的。为了检测生长速度,需要在一个周期内多次扫描患者,检测所有结节(不仅是大结节,也包括小结节)并沿时间排列。虽然本研究中提出的方法不追求对小结节的高检测精度,但可以为此目的对其进行改进。例如,可以添加另一个unpooling layer以合并更精细的比例信息(finer-scale information)并减小anchor大小。
图 9 几个案例的模型输出。(a)真阳性样本。(b)假阴性样本。(c)假阳性样本。(d)真阴性样本。当检测到的结节数小于5个时,用多个空白图像作为输入。