团队成员:北京邮电大学 模式识别实验室硕士研究生
今年5月,参加了天池医疗AI大赛,这次比赛是第一次参加此类的比赛,经过接近半年的比赛,终于10月落下帷幕,作为第一次参加比赛,能在接近3000支队伍中拿到第8名,感觉已经比较满意,不过也有许多遗憾之处,在此主要介绍一下我们比赛的方案。
摘要
本次竞赛要求从数千例CT 影像中找出肺结节的位置,并给出概率。相比于图片,CT影像可以看成3维的数据,更大更耗费资源,也更难以提取特征。我们采用分割+分类的方法,先利用分割网络从CT影像中找出疑似的结节,再利用分类,对找出的疑似结节进行判断。 我们采用了基于3D的解决方案,因此能提取更多的空间信息。同时我们在设计网络的时候,充分考虑不同结节的尺度,识别的难易程度,结合Residual和Inception的结构思想,设计了ReCeption结构,在不同尺度,分辨率的结节上都有着较好的效果。团队队员第一次参加竞赛,经验不够丰富,基本未使用模型融合的方式,主要是简单的boost方法。
一、赛题解析
1.1 任务介绍
本次大赛要求参赛者使用患者的CT影像数据(mhd格式)训练模型算法,在测试数据集中找出CT影像中的肺部结节的位置并给出是一个真正肺结节的概率。初赛在线下自由完成(先使用了TensorFlow后来改用PyTorch),复赛必须在线上使用PAI平台的定制版的Caffe。
1.2 数据介绍
本次大赛数据集包含数千份高危患者的低剂量肺部CT影像(mhd格式)数据,原始图像为三维图像,每个影像包含一系列胸腔的多个轴向切片。这个三维图像由不同数量的二维图像组成,其二维图像数量可以基于不同因素变化,比如扫描机器、患者。Mhd文件具有包含关于患者ID的必要信息的头部,以及诸如切片厚度的扫描参数。训练集和验证集的所有数据全部都有结节。
数据的特点:3D类型图像 大(一个ct文件几百M)
1.3 评价指标
本次比赛使用跟LUNA16比赛一样的评价标准。赛题组会根据参赛者给出的坐标信息判断结节是否检测正确。如果结节落在以参考标准为中心半径为R的球体中,则认为检测正确。根据提供的结节检测概率,计算一个FROC曲线。Sensitivity在1/8, 1/4, 1/2, 1, 2, 4和8一共7个不同的误报情况下的平均值作为最终评判标准。FROC曲线可以看成类似分类问题中ROC曲线的指标。
此次比赛,我们的方案是分割+分类的方法,分割部分使用UNET,找出疑似节点,而分类部分使用类似ResNet结构神经网络,对找出的疑似节点给一个概率。最后初赛数据集得分最高的froc为0.750,复赛数据集得分最高的为0.600。
二 方法概述
我们的算法分为3步:
1. 基于3D CNN+Unet/Inception/Resnet的分割网络,用以找出疑似结点。利用结节标注信息生成的结节mask图像,训练基于卷积神经网络的肺结节分割器。
2. 基于ResNet的分类网络,判断每一个疑似结点是否是真阳性。 找到疑似肺结节后,可以使用图像分类算法对疑似肺结节进行分类,得出疑似肺结节是否为真正肺结节的概率
3.利用类似adaboost的方法训练多个一样的分类模型,不断的提升分类的准确率。
三 分割网络
基本网络结构我们采用了类似Unet的形式,Unet网络的receptive filed 很大,可以融合全局特征和局部特征,使网络可以同时利用深层网络的语义信息以及浅层网络的纹理信息。
3.1 数据处理
1. 对原始数据进行归一化处理,使像素值得范围为[0, 1]。
2. 从原图上切出64x64x64的立方体块,在内存允许的情况下可以使立方体块尽可能的大。
预测的Label大小与输入相同,结点范围内的值为1,其他地方为0。如下图,左边是原始的数据,右边是生成的mask(都是3D的)
3.2 数据增强
训练样本虽然大,但是却很少,为了避免过拟合,提高模型泛化能力,这里对数据做了一些增强,主要包含:
- 以结点为中心切块时,提供一个随机大小的偏移
- 对切下的立方体,进行八个方向的翻转
3.3 模型介绍
分割网络的每个单元采用的是ResNet+Inception的结构,ResNet的残差链接可以有效缓解深层网络梯度消失的问题,同时跨层连接的方式,使得简单的样本可以通过直接相连的方式,而复杂的样本则经过更深的网络 。可以极快地加速超深神经网络的训练。 而Inception结构将不同的卷积层通过并联的方式结合在一起,它主要改进了网络内部计算资源的利用率,让我们能在固定计算资源下增加神经网络深度和宽度,另外,Inception 结构还遵循了 Hebbian 原则并增加了多尺度处理,增加了网络对多尺度的适应性。
Unet是一个在医学图像处理领域,应用很广泛的网络结构,是一种全卷积神经网络,输入和输出都是图像,没有全连接层。较浅的高分辨率层用来解决像素定位的问题,较深的层用来解决像素分类的问题。U-NET 构造了一个收缩网络和一个扩张网络,形成了一个 U 型结构。收缩过程通过不断的卷积(convolution)和池化(pooling)操作提取图片特征。扩张过程与收缩过程相对应,通过上采样(upsampling)和卷积操作来获取图片的特征。U-NET 的特点在于收缩网络和扩张网络是相互映射的关系,在扩张的过程中,通过合并与之映射的收缩层特征补全丢失的边界信息,提升预测边缘信息的准确性。与SegNet,VGG 等网络结构相比,U-NET 具有训练时间短,结构简单,样本需求少等优势。
3.3.1 网络结构单元
我们的网络是ResNet+Inception+Unet结合的产物,首先定义了下采样单元,它结合了ResNet和Inception的优势,每一个下采样单元保持输入与输出通道数相同,尺寸缩减为原来的一半。我们把这种自己设计的结构称为ReceptionBlock,一个ReceptionBlock的结构如下图所示(如果不是下采样,左边的卷积可以去掉)