1. 团队介绍
队伍名:DL,成员:王智博、胡巧。
2. 问题描述
本次比赛希望通过目标检测、深度学习等人工智能算法进行肺部CT多病种的智能诊断,用于辅助医生诊断,提高诊断精度,减少误检。初赛提供了1837份CT扫描,层厚以5mm为主(占比超过80%),共4种病灶;复赛提供了712份CT扫描,层厚都是2mm,共7种病灶。标注都为长方体。
3. 解决方案
整体结构:两阶段模型
- 第一阶段使用2D单通道 YOLOv3检测位置并预测概率。
- 第二阶段使用7个二分类3D CNN模型进一步降低假阳性。两阶段概率加权。
3.1 第一阶段
YOLO结构大体如下
第一阶段数据预处理
- 首先剔除较大标注,对标注大的类删除10%最大的框,标注小的类也适当删除2%
- 对于剩下的长方体标注,它们涉及到的2D切片都会进入我们的训练集
- HU值按照[-1000, 400]截断并归一化到[0, 1]之间
- (没有进行肺部分割等操作)
第一阶段我们对YOLOv3本身进行了如下改变
- 使用Focal Loss代替交叉熵损失
- 使用GIOU代替距离损失
- 重新对标注(剔除异常值后的标注)进行anchor聚类
其他细节
- 不使用预训练模型,从随机初始化开始训练
- 训练时每个batch随机从10种输入尺寸320-608中选择一种
- 使用类似FPN的结构,三种尺寸的输出
- YOLO的类别损失使用的是7个sigmoid二分类损失而不是softmax多分类损失,这与第二阶段的7个二分类模型对应,概率可以融合
- 训练时使用了水平翻转、随机裁剪两种数据增强方法
结果后处理:相邻点合并。因为2D模型对每张切片预测,会对同一个标注预测出多个位置,通过合并主要在z方向上合并重复框。
3.2 第二阶段
使用浅层3D网络对每一类进行二分类,模型结构如图所示
数据截取
- 先将CT插值到三个方向spacing都是1
- 判断第一阶段检测的位置是否落入真实框内,如果落入则标为1,不落入则标为0。
- 以第一阶段预测的位置为中心截取适当大小的立方体
- 数据特点:正负样本严重不均衡
数据增强训练
- 数据量上的增强:增加正样本出现次数,增加后每类正负样本比达到1:5左右
- 增强方式:xyz三个方向随机翻转、90度倍数旋转、裁剪、平移
- 正例以较大概率增强,负例以较小概率增强(一般正例0.7,负例0.3)
- 效果:使原本不能收敛的模型收敛,使模型更加稳健
训练改进:不同类截取不同尺寸、部分类截取两种尺寸。下面是各个类我们使用的尺寸
两阶段融合:两阶段的预测概率进行加权平均。
4. 效果
复赛结果:
- 将训练数据拆分出70%的训练集训练,在剩余30%验证集上预测的结果:平均FROC第一阶段yolo单独可以达到0.39,加上第二阶段可以达到0.45。
- 使用全部数据训练,在测试集上的预测,两阶段合起来达到0.476。
- 推断时间:不考虑数据预处理时间,单独看模型预测时间,两阶段加起来是180张CT耗时21分钟,平均每张CT耗时7秒。
5. 总结
初赛复赛一个多月,我们几乎将所有的精力都投入到这次比赛之中,这个过程中有模型效果提升的喜悦,也有尝试无果的无奈,但能专注地做一件事总是会有很大的收获。非常感谢主办方提供的数据和平台,让我们有机会参与实战积累经验,也感谢其他工作人员背后的辛苦付出!