【翻译论文】Evaluate the Malignancy of Pulmonary Nodules Using the 3D Deep Leaky Noisy-or Network

翻译论文
Evaluate the Malignancy of Pulmonary Nodules Using the 3D Deep Leaky Noisy-or Network

###摘要
从计算机断层扫描自动诊断肺癌包括两个步骤:1)检测所有可疑的病变(肺结节)2)评估整个肺的恶性。目前,第一步有很多研究,但是第二步的研究很少。因为有结节不能确定是癌症,结节的形态与患癌之间有复杂的关系。诊断肺癌需要对可疑的结节进行仔细的分析,并结合所有结节的信息。我们提出了一个3D的深度神经网络来解决这个问题。这个模型包含两个模块。第一个是一个3D的区域提名网络用来进行结节检测,并输出所有可疑结节。第二个基于检测置信选出前5个结节,评估他们的恶性可能性,并用leaky noisy-or门来融合这些结果得到肺癌的概率。两个模块共享相同的骨干网络,即改进的U-net。由于缺少训练数据带来的过拟合通过交替训练两个模块来缓解。提出的模型赢得了Data Science Bowl 2017竞赛的第一名。代码是公开可获得的。

###INTRODUCTION

自动的肺癌诊断相比通常的计算机视觉问题有一些困难。首先结节检测是一个3D目标检测问题,相比2D目标检测更难。直接将2D的目标检测方法泛化到3D的情况会由于GPU内存限制面临技术困难。一些方法使用2D的区域提名网络(RPN)在2D图像上提取出proposals,然后将他们组合在一起来生成3D的proposals 。

文中使用了下面的策略:

  • 建立3D RPN直接预测出结节的边界框。3D CNN网络可以获取复杂的特征;
  • 为了解决GPU内存的问题,使用了基于patch的训练和测试;
  • 使用数据增强来解决过拟合;
  • 设置低的检测器阈值,这样可以将所有可疑的结节都包含进来;
  • 选取前5个最可疑的结节作为分类器的输入;
  • 分类器中使用leaky noisy-or模型综合5个结节的得分。

相关工作

General object detect

现在有很多目标检测方法被提出,大部分都是用于2D目标检测。一些前沿的方法有两个阶段,例如Faster-RCNN,第一阶段得到边框(称为proposasls),第二阶段进行分类。最近的方法只有一个阶段,边框和类别概率同时预测出来(YOLO)或者预测出默认框的类别概率,不需要生成proposal(SSD)。通常单阶段的方法更快一些,但是两阶段的方法更准确一些。

Nodule detect

结节检测是一个典型的volumetric 检测任务。由于它有很大的临床意义,因此这些年越来越引起关注。这个任务通常分为两个子任务:生成提名和减少假阳性,每个子任务都有很多研究者。第一个子任务的模型通常是一个简单和快速的3D描述子紧跟着一个分类器来获取很多提名。第二个子任务的模型通常是复杂的分类器。2010年 Van Ginneken等人回顾了6个传统算法,并在ANODE09数据集(包含55个scans)上评估了他们的性能。2011-2015年,开发出一个更大的数据集LIDC。研究者开始采用CNN来减少假阳性。Setio等人采用了多视角CNN,Dou等人采用了3D CNN 来解决这个问题,他们都比传统的方法得到更好的结果。Ding等人采用2D RPN在每张切片上生成结节提名,并用3D CNN减少假阳性样本。肺结节分析2016的竞赛举行,它基于LIDC的子集。这个竞赛中,大部分参与者都使用两阶段的方法进行检测。

Multiple instance learning

在多实例学习任务中,输入是一堆实例。如果任何一个实例被标成正的,那么这个bag要标成正的,如果所有的实例都被标成负的,那么这个bag要标成负的。许多医学影像分析任务是MIL任务(本文根据检出的肺结节判断当前病人是否有癌症,也是MIL任务)。

为了将MIL包含到深度神经网络框架,主要的部分是一个层可以将不同实例的信息都可以结合起来,这个层称为MIL Pooling Layer(MPL)。一些MPL的例子有:均值池化层,最大池化层,log-sum-exp池化层,generalized-mean层和noisy-or层。如果对于每个样本实例的数量是固定的,那么可以很方便的使用特征拼接作为MPL。MPL可以用来将不同实例在特征层或者输出层进行结合。

数据集和预处理

A.数据集

使用了两个肺扫描数据集来训练模型,一个是LUNA,另一个是DSB的训练集(Data Science Bowl 2017)。LUNA数据集在888个病人上标注(放射专家)了1186个结节。DSB数据集每个病人只有二值标签指示这个病例是否有肺癌。DSB训练集、验证集和测试集分别有1397、198、506个病例。作者自己在训练集上标注了754个结节,在验证集上标注了78个结节。 LUNA数据集标注了很多小结节,以医生的经验来说,小于6mm的结节通常没有什么危险。DSB数据集有很多非常大的结节(大于40mm)。作者删掉了小于6mm的结节,为了能够更容易检出DSB数据集中的大结节。

B.预处理

原始数据首先转成了HU,这是描述放射强度的标准量。每个组织都有特定的HU范围,这个范围对于不同人都是一样的。

1)提取掩膜

每张切片用标准差为1的高斯滤波器滤波,然后用-600阈值进行二值化。所有小于30 mm2的或者离心率大于0.99的连通域被移除。在二值3D矩阵中计算所有3D的连通域,没有接触矩阵拐角,体积在0.68L到7.5L之间的volume保留下来。

2) 凸包和膨胀

有一些结节在肺的边缘,前面的处理,使这种结节不包含在掩膜里。迭代腐蚀掩膜,直到掩膜分成两部分。然后膨胀回原来的大小(Fig.3d)。
每张切片进行凸包操作(Fig.3e),然后向外扩张10个像素(Fig.3f)。
肺的中下部的2D切片是月牙形的(Fig.4),进行凸包会包含进许多不想要的组织,所以2D掩膜的凸包如果是掩膜本身的1.5倍以上,那么就不做凸包。

【翻译论文】Evaluate the Malignancy of Pulmonary Nodules Using the 3D Deep Leaky Noisy-or Network_第1张图片

Fig. 3: The procedures of preprocessing. Notice the nodule
sticking to the outer wall of lungs. (a) Convert the image
to HU, (b) binarize image by thresholding, © select the
connected domain corresponding to the lungs, (d) segment the
left and right lungs, (e) compute the convex hull of each lung.
(f) dilate and combine the two masks, (g) multiply the image
with the mask, fill the masked region with tissue luminance,
and convert the image to UINT8, (h) crop the image and clip
the luminance of bone.

【翻译论文】Evaluate the Malignancy of Pulmonary Nodules Using the 3D Deep Leaky Noisy-or Network_第2张图片

3)灰度标准化

原始图像数据截断到[-1200, 600]之间,然后线性变换到[0, 255]。然后在与前面得到的掩膜相乘。掩膜之外的区域填充为170(Fig.3g)。将所有大于210的值替换成170。因为肺周围的区域包含一些骨骼,他们很容易被误分成钙化的结节。图像在三个方向进行裁剪,到每个边的距离是10个像素(Fig. 3h)。

3D CNN 用于结节检测

设计了3D CNN用于检测可疑结节。使用U-net改进成 3D 版本的RPN作为骨架模型。这个结节检测模型命名为N-Net。

A. 基于块的输入用于训练

从肺扫描图中提取出3D块输入到网络中。块的大小是128*128*128*1(Height * Length * Width * Channel)。随机选取两种块。首先,70%的输入至少包含一个结节。其次,30%的输入是随机裁剪的,有可能包含一个结节,也可能不包含任何结节。后面这种样本确保了有足够的负样例可以收敛。
使用数据增强缓解过拟合的问题。块被随机左右翻转,并在0.8到1.15比例之间随机调整大小。其他的增强方法例如轴线交换和旋转也用了,但是没有很大的改善。

B. 网络结构

检测网络包含了一个U-Net的架构和一个RPN输出层,结构如Fig.5中所示。U-Net架构可以让网络获取到多尺度的信息,这是很重要的因为结节的大小变化很大。
网络结构有一个前馈路径和一个反馈路径。前馈路径先有两个3*3*3的卷积层,都有24个通道。然后是4个3D残余块,中间穿插着4个3D 最大池化层(池化大小是222,步长是2)。每个残余块包含3个残余单元。残余单元在图中进行了说明。前馈路径中的所有卷积核都是3*3*3,padding是1。
反馈路径包含两个反卷积层和两个融合单元,每个反卷积层步长是2,kernel是2。在左边的融合单元,将位置信息作为额外的输入。最后两层是1*1*1的卷积核,通道数分别是64和15,结果的尺寸是32*32*32*15。
输出4D可以调整大小到32*32*32*3*5。最后两维分别对应anchors和回归量。由RPN得到的灵感,每个位置,网络有3个不同尺寸的anchors,分别与3个边长是10mm, 30mm, 60mm的边框相关。所以有32*32*32*3个anchors。5个回归值是 ( o ^ , d ^ x , d ^ y , d ^ z , d ^ r ) (\hat o,\hat d_x,\hat d_y,\hat d_z,\hat d_r) (o^,d^x,d^y,d^z,d^r) ,第一个量加上sigmoid激励,其他不用激励函数。 p ^ = 1 1 + e x p ( − o ^ ) \hat p = \frac{1}{1+exp(-\hat o)} p^=1+exp(o^)1
【翻译论文】Evaluate the Malignancy of Pulmonary Nodules Using the 3D Deep Leaky Noisy-or Network_第3张图片

C. 位置信息

提名的位置信息可能会影响对这个结节是否是恶性的判断,所以在网络中引入位置信息。在每个轴向,最大最小值分别被标准化到1和-1,分别对应肺的两端。

D. 损失函数

目标结节的边框的真实值表示成 ( G x , G y , G z , G r ) (G_x,G_y,G_z,G_r) (Gx,Gy,Gz,Gr),anchor的边框是 ( A x , A y , A z , A r ) (A_x,A_y,A_z,A_r) (Ax,Ay,Az,Ar)。交并比 ( I O U ) (IOU) (IOU)用来决定anchor box的标签。与目标结节IOU大于0.5的anchor boxes是正样本,小于0.02的是负样本,其他的忽略。Anchor box的预测概率和标签分别是 p ^ \hat p p^ p p p(正样本是1,负样本是0)。Box的分类损失是: L c l s = p   l o g ( p ^ ) + ( 1 − p )   l o g ( 1 − p ^ ) L_{cls} = p\,log(\hat p) + (1 - p)\,log(1-\hat p) Lcls=plog(p^)+(1p)log(1p^)

边框回归标签定义为: d x = ( G x − A x ) / A r , d y = ( G y − A y ) / A r , d z = ( G z − A z ) / A r , d r = l o g ( G r / A r ) . \begin{aligned} &d_x = (G_x-A_x)/A_r,\\ &d_y = (G_y-A_y)/A_r,\\ &d_z = (G_z-A_z)/A_r,\\ &d_r = log(G_r/A_r).\\ \end{aligned} dx=(GxAx)/Ar,dy=(GyAy)/Ar,dz=(GzAz)/Ar,dr=log(Gr/Ar).

相关的预测值是 d ^ x , d ^ y , d ^ z , d ^ r \hat d_x, \hat d_y,\hat d_z,\hat d_r d^x,d^y,d^z,d^r,回归损失定义为: L r e g = ∑ k ∈ { x , y , z , r } S ( d k , d ^ k ) L_{reg}=\sum_{k\in\{x,y,z,r\}}S(d_k,\hat d_k) Lreg=k{x,y,z,r}S(dk,d^k)

损失度量是L1范数函数: S ( d , d ^ ) = { ∣ d − d ^ ∣ , i f    ∣ d − d ^ ∣ > 1 , ( d − d ^ ) 2 , e l s e . S(d,\hat d)=\begin{cases} |d-\hat d|, & if\;|d-\hat d|>1,\\ (d-\hat d)^2,&else. \end{cases} S(d,d^)={dd^,(dd^)2,ifdd^>1,else.

每个anchor box的损失函数被定义为: L = L c l s + p L r e g L=L_{cls}+pL_{reg} L=Lcls+pLreg

回归损失只用于正样本。全局的损失是选取的anchor box损失值的平均。

E.正样本采样均衡

小结节的数量比大结节大得多。如果使用均衡采样,训练的网络会更偏向小结节。这是我们不想要的,因为大结节比小结节对癌症有更强的指示。因此在训练集上大结节的采样频率增大。大于30mm 和40mm的结节的采样频率 和60mm以上结节的采样频率分别是其他结节的2倍和6倍。

E. 困难负样本挖掘

负样本的数量远多于正样本的数量。一些负样本很容易被网络区分,但是一些样本与结节有着相似的外观,很难准确的区分。目标检测中常用 hard negative mining来解决这个问题。
1) patch输入网络,得到提名边框;
2) 从中随机选取N个负样本;
3) 负样本按照置信分数从大到小排序;
4) 选取前n个样本作为hard negatives,其他的负样本不计入loss计算。

F. 测试时图像拆分

将肺扫描图分成208*208*208*1的部分,分别处理他们,然后融合结果。使分割块之间有32个像素的重叠,来消除卷积计算时的不期望的边界影响。
网络会检测出许多结节提名,然后使用NMS去掉重叠的提名。

癌症分类

基于检测到的结节评估每个病例的癌症概率。对于每一个病例,基于置信分数选出5个提名。训练时,用统计的方法选择提名,每个结节被选中的概率与他的置信分数成正比。测试时,直接选取前5个提名。如果检测出的提名少于5个,那么使用空的图像,数量仍然是5个。

由于训练样本的限制,使用了与检测网络相同的网络用于分类。 对于每一个选取的提名,裁剪出96*96*96*1的块,块的中心是结节。作为N-Net的输入,最后卷积层得到24*24*24*128的大小。,提取中心2*2*2的像素,进行最大池化,得到128维的特征。使用了下面四种方法。

【翻译论文】Evaluate the Malignancy of Pulmonary Nodules Using the 3D Deep Leaky Noisy-or Network_第4张图片

训练过程

由于N-Net很深,而且3D卷积核比2D卷积核有更多的参数,分类的样本数量很有限,模型很容易在训练集上过拟合。
为了解决这个问题,采用了两个方法: 数据增强和交替训练。

数据增强:
1) 随机在3个方向翻转;
2) 在0.75到1.25比例之间随机调整大小;
3) 在3D旋转任意角度;
4) 在3个方向随机移动小于半径15%的距离。

交替训练:
缓解过拟合的方法可以使用合适的正则化。本文中,由于检测器和分类器共享卷积层,这两个任务可以自然的认为是互相正则。所以本文交替的训练检测器和分类器。

训练过程非常不稳定,因为一个batch只有2个样本,训练集中有很多异常值。所以后期的训练中使用了梯度截断。例如梯度向量的l2范数大于1,那么会规范到1。
网络中使用了BN,但是直接用到交替训练时是有问题的。在训练阶段,BN统计量(激励的均值和方差)在batch内计算,在测试阶段,使用保存的统计量。交替训练的方案使得运行时平均不适合检测器和分类器。首先他们的输入样本是不一样的,然后分类器的patch的中心始终是proposal的中心。所以两个任务的平均统计量是不一样的。运行时平均可能是中间值,这样会恶化他们验证阶段的性能。为了解决这个问题,我们首先训练分类器,使BN参数适合分类。然后在交替训练阶段,固化这些参数,在训练和测试阶段,使用保存的BN参数。

总结,训练过程有三个阶段:
(1)将训练好的检测器权重转移到分类器,并用标准模式训练;
(2)用梯度截断训练分类器,然后固定BN参数;
(3)交替训练分类器和检测器,并用梯度截断和存储的BN参数。

[1] http://cn.arxiv.org/pdf/1711.08324v1
[2] https://github.com/lfz/DSB2017

你可能感兴趣的:(肺结节检测,肺结节检测,检测网络,3D,CNN)