lung cancer detection

来源:互联网 发布:java 整型 编辑:程序博客网 时间:2024/06/04 19:51

1、Introduction

我们的模型基于3d卷积,统一了nodule检测和癌症分类。模型输入是已经预处理的3d肺部的扫描,同时输出可能的nodule和肺癌的概率(提交的数据)。

整个的解决方案分为三个步骤:预处理,病灶检测和癌症分类

2、预处理

3、Nodule detection

我们设计了三维卷积网络用于检测可疑的病灶。三维的卷积因为不同的任务而做出修改。和一般的目标检测不太一样,肺癌检测病灶只有两种,所以预测的目标可以直接作为检测的结果。并不需要rcnn中第二步分类。

3.1

基于patch输入的训练:

一般的目标识别模型都是采取整幅图像输入,由于3d的CT模型非常大GPU显存不够所以采取分块的输入方式。输入是128x128x128块,其中70%的输入至少包含一个nodule,30%的输入是从肺部CT随随机抽取,所以有可能没有包含nodule,这保证了足够的负样本。(具体的实施细节???)

如果patch超出了肺部的范围,就用170填充。nodule target并不一定要落在patch的中间,但是距离边界超出12pixel,一些大的nodule除外。

使用数据增强缓和一些过拟合问题,包括左右的翻转,和不同比例的resize(0.8-1.15)之间。

正样本的平衡:

3.2

nodule size大小很难平衡,小的nodule比大的nodule数量多很多,如果使用统一的采样方法,网络会趋向于检测小的nodule,但是大的nodule非常重要,所以增加了大nodule的采样频率。

3.3 hard negative mining

存在很多负样本和target nodule很像,所以采用在线难例挖掘。

step1:生成patch,获得输出map(confidence和regression terms)

step2:随机选择N个负样本,组成候补pool

step3:根据N个样本的classification confidence排序,最前面的n个样本将作为hard example,剩下的样本不列入loss的计算,在candidate pool中随机抽取,减少负样本之间的协同性,可以通过调整N和n控制hard negative mining。

3.4 网络的结构

clipboard

网络受Unet启发,由5个3d的resnet block 和4个pooling交错组成,最后一层用于计算输出,32x32x32,两个1x1x1的卷积用于获得classification score和bounding box的回归。

网络有三个不同比率的anchor,10,30,60mm,iou大于0.5将视为postive,小于0.02将视为negative,其他忽略。classification使用二分类交叉熵,regress项目包括∆x=x; ∆y=y; ∆z=z; log(∆r),使用smoothL1 Loss,最终的shape of final label map is 32 × 32 × 32 × 5 × 3.(最终到底是如何输出的)

3.5 测试阶段的全卷积网络

全卷积网络已经减少了参数,但是在测试阶段仍然超过了显存,为了解决这个问题,我们将CT 3维分成几个部分,分别处理,然后在将结果组合,注意划分的时候重叠采样,减小边缘效应。

4、癌症分类

detection net通过对整个病人的3d数据处理,得到一系列proposal,选取confidence最高的5个proposal,在训练的过程中proposals是通过随机softmax选取。

对于每个proposal选取Nnet输出(32x32x32x128features),将32x32x32中间的2x2x2方块最大池化,生成了128维度的向量,假设最终的诊断是基于5个proposal和一个可能的虚拟的节点。预测的损失

clipboard

Pd就是dummy nodule。

还有一个额外的损失,如果Pi小于0.03,但是在N Net中又标记为nodule,分类的损失增加-ln(Pi).

clipboard

交错训练:为了使得N net有意义,我们同时在训练C net时调整Nnet,每一次迭代周期中分别训练Nnet和Cnet,分类任务的第一阶段使用翻转增强数据,然后加上其他的数据增强微调。

原创粉丝点击