DSB2017第一名论文理解: 3D Deep Leaky Noisy-or Network(三)

先贴下第篇的链接。

现在代码中参数设置最多这部分代码来了,开始细细理解参数的设置。

四.3D CNN用做结节检测

一个3d cnn网络用来检测可疑结节。它是一个3D版本同时改进于Unet网络的RPN网络来作为主干网络。(前面说过单类别目标检测算法,两步算法中的第二步已经不在需要,那么算法统一退化成一步算法。)由于这个任务中只有两类(结节和非结节),预测结果直接作为检测结果不需要额外的分类器。它很类似于一步检测系统YOLO和SSD(现在当然还有何凯明等人的RetinaNet等)。这个结节检测模型简称N-Net,N代表nodule。

A.Patch-based input for training(输入训练的基础块)

目标检测模型通常采用基于图像的训练方法:把全体图像作为训练模型的输入。然而,这对于3D CNN来说由于GPU内存的限制这是不可行的。当肺部扫描的分辨率保持在一个很好的水平时,即使是一个样本占用的显存也会超过主流的最大gpus的内存。

为了克服这个问题,会先从这些肺扫描(也就是这些ct序列中)提取出小的3d小块独立地作为网络的输入。这块的尺寸是128×128×128×1 (Height×Length× W idth×Channel,下面的标注都是这个意思)。两种类型的块被随机选择。第一,70%选择的输入至少含有一个结节。第二,剩下的30%的输入随机从序列中裁剪可能不存在任何结节。后一种输入保证了足够的负样本的覆盖。

如果一个块的范围超出了肺扫描的范围,那么就像在预处理那步中一样用170值来填充。目标结节不一定非要处在块的中心位置,但是要满足离块的边缘要大于12个像素点(当然一些超大的结节除外)

采用数据增广的方式来缓解过拟合问题。这些块随机左右翻转和缩放(0.8到1.15之间),还尝试了其他扩展,如轴交换和旋转,但没有显著的改进。(想想也是已经是原数据中随机剪切的块,轴交换和旋转弄不好已经在随机剪切已经有相类似的了)。

B.Network structure(网络结构)

检测网络由一个UNet主干网络和一个RPN输出层组成,如图5所示(上图,本来不准备贴的不过后来一想对理解的帮助比较大就贴一下。)U-Net骨干网使网络能够捕获多尺度的信息,这是至关重要的,因为结节的大小有很大的变化。RPN的输出格式使网络能够直接生成候选框。

主干网络具有前馈路径和反馈路径(图5a)。前馈路径从两个3×3×3卷积层都是24通道开始的。然后是四个3d残差块与四个3d最大池化层((池化尺寸是 2 × 2 × 2 步长是2)交错进行每个3d残差块由三个残差单元组成。残差单元如图5b所示。前馈路径中的所有卷积内核有一个内核大小为3×3×3和1的填充(为了保持卷积前后尺寸不变same)。

反馈路径由两个反涡层和两个组合单元组成。每个反卷积层(其实可以用上采样是类似的)的步长为2,核大小为2。每个组合单元连接一个前馈blob和一个反馈blob,并将输出发送到一个残差块(图5c)。在左边的组合单元中,我们引入位置信息作为额外的输入(Section IV-C中有细节描述)。那么特征图的结合单元尺寸是32×32×32×131。紧随其后的是两个1×1×1卷积运算分别是64和15的通道数,最终结果的矩阵尺寸是32 × 32 × 32 × 15。

这个4d输出张量改变为32 × 32 × 32 × 3 × 5的形状。后面两个维度分别对应锚和回归量。这个设计的灵感来自于RPN,在每个位置网络都有三个不同尺度的锚,分别对应长度为10、30、60 mm的三个边框。所以有32×32×32×3个锚框。这五个回归值分别是(ˆo, ˆdx, ˆdy, ˆdz, ˆdr)。对第一个回归值使用的sigmoid激活函数:pˆ = 1 /(1+ exp(−oˆ)) (这个每个值的范围是(0,1),还有一个是(-1,1)所以要区分下,就是faster-rcnn中获得候选框的自信度是一样的)(这个自信度我也是刚看懂的,推荐看caffe版的写的会比较详细的主要算法出来之时是caffe大行其道之时)。而后面四个量不使用激活函数。

C. Location information(定位信息)

建议的位置也可能影响到判断是否为结节,是否为恶性,所以我们也在网络中引入位置信息。对于每一个块计算其相应的裁剪位置,这些特性图的尺寸是(32×32×32×3)。这个裁剪位置有三张特征图,对应于X,Y,Z的标准化坐标。在每个轴上,每个轴上的最大值和最小值分别归一化为1和-1,分别对应于肺段的两端。

D. Loss function(损失函数)

表示目标结节的真实边界框为(Gx, Gy, Gz, Gr),表示锚的边界框(Ax, Ay, Az, Ar)。其中前三个元素表示块的中心点的坐标,最后一个元素表示边长。计算IOU(Intersection over Union)来决定每个锚边界框的的标签。那些锚边界框的IOU大于0.5的作为积极正标签而那些锚边界框的IOU小于0.02的作为消极负标签。剩余那些在训练过成中被忽略。预测的概率和锚边界框标签分别用pˆ和p表示。请注意,p∈{ 0,1 }(0代表消极负例子,而1代表积极正例子),那么对于这个框的分类损失函数可以定义为Lcls = p log(ˆp) + (1 − p) log(1 − pˆ)。

那么边界框的回归标签可以定义如下:dx = (Gx − Ax)/Ar, dy = (Gy − Ay)/Ar, dz = (Gz − Az)/Ar, dr = log(Gr/Ar).对应的预测值分别为ˆdx, ˆdy, ˆdz, ˆdr。那么便可以定义回归总损失函数为:Lreg = \sum_{}^{k∈{x,y,z,r}}(k∈{x,y,z,r} )S(dk, ˆdk)其中损失度量是平滑的L1范数函数:S(d, ˆd) = |d − ˆd|, if |dk − ˆd| > 1; (d − ˆd) 2 , else.

每个锚边界框的损失函数定义为:L = Lcls + pLreg.这个方程表明回归损失只适用于正样本,因为只有在这些情况下p = 1。整体损失函数是一些选定锚边界框损失函数的平均值,我们使用正样本的平衡和难以分类的负样本的挖掘来做选择。(具体可看下节)

E. Positive sample balancing(正样本的平衡)

对于一个大结节,有许多相应的正锚边界框。为了降低训练样本之间的相关性,在训练阶段只随机选取其中一个样本。

虽然我们从luna16中移除了很多小尺度的结节,但是剩下这些结节尺度的分布任然是高度不平衡的,小结节的数目远多于大结节。如果采用均匀采样,经过训练的网络会对小结节产生偏置。这是不必要的,因为大结节通常比小结节是更强的癌症指标。因此在训练集中增大了大结节的采样频率(就是缩放翻转更多次产生更多的大结节数据),其中大于30mm的结节采样频率为其它结节的2倍和大于40mm的结节采样频率为其它结节的6倍。

F. Hard negative mining(难以分类负样本的挖掘)

负样本比正样本多得多。虽然大部分阴性样本可以通过网络轻松分类,但也有少数样本结节外观相似,难以正确分类。针对这一问题,提出了一种常用的目标检测技术——难分类样本挖掘技术。我们在训练中使用简单的在线版本的难分类样本挖掘。

首先通过将块输入到网络中,我们得到了输出映射,它代表了一组不同置信度的边界框(也就是B网络结构中中我说的自信度,用不用写的那么高大上啊,之前一直觉得这个出来的莫名奇妙我是谁?我在哪?)。其次,随机选取N个阴性样本,形成候选池。第三,对池中的负样本进行降序排序利用分类置信度得分,选取前n个样本作为难以分类的负样本。其他负样本被丢弃,不计入损失计算。使用随机选择的候选池可以降低阴性样本之间的相关性。通过调整候选池的大小和n的取值,可以控制难分类样本挖掘的强度。

G. Image splitting during testing(测试过程中的图像分割)

网络训练完成后,整个肺扫描可作为输入,获取所有可疑结节。因为网络是完全卷积的,所以这样做很简单的。但这在我们的GPU内存限制下是不可行的。尽管网络在测试中需要的内存比在训练中要少得多,但这一需求仍然超过了GPU的最大内存。为了解决这个问题,我们将肺扫描分为几个部分(208 × 208 × 208 × 1 每个部分),分别处理她们,然后把所有结果结合起来。为了消除卷积计算中不需要的边界效果,我们将这些分割保持在一个大的空白(32像素)上。

这一步将输出许多结节建议候选框{xi , yi , zi , ri , pi}。xi , yi , zi代表候选框的中心。ri代表半径,pi代表自行度。然后进行非最大抑制(NMS)操作,排除重叠候选框。基于这些候选框,另外一个模型用作预测癌症的可能性。

这部分终于完了加油,下面那部分还没涉及到先不翻译了。希望对你有帮助!!

 

  • 5
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值