返回列表

全球数据智能大赛(2019)赛场一 季军队伍 dl 解决方案

全球数据智能大赛【赛场一】 | 231724

开始: 2019-08-01 结束: 2019-08-28 医学影像分析 数据算法赛
全球数据智能大赛(2019)赛场一 · 季军方案 · DL团队
🥉 全球数据智能大赛(2019) · 赛场一 · 季军 👥 DL团队 · 王智博 & 胡巧 🏆 复赛FROC 0.476

全球数据智能大赛(2019)赛场一 季军队伍 dl 解决方案

两阶段检测 · 2D YOLOv3 + 3D CNN · Focal Loss + GIOU + 数据增强

1. 团队介绍

队伍名:DL,成员:王智博、胡巧。

2. 问题描述

本次比赛希望通过目标检测、深度学习等人工智能算法进行肺部CT多病种的智能诊断,用于辅助医生诊断,提高诊断精度,减少误检。初赛提供了1837份CT扫描,层厚以5mm为主(占比超过80%),共4种病灶;复赛提供了712份CT扫描,层厚都是2mm,共7种病灶。标注都为长方体。

3. 解决方案

整体结构:两阶段模型

  • 第一阶段使用2D单通道 YOLOv3检测位置并预测概率。
  • 第二阶段使用7个二分类3D CNN模型进一步降低假阳性。两阶段概率加权。

3.1 第一阶段

YOLO结构大体如下

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网络对每一类进行二分类,模型结构如图所示

3D CNN结构

数据截取

  • 先将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. 总结

初赛复赛一个多月,我们几乎将所有的精力都投入到这次比赛之中,这个过程中有模型效果提升的喜悦,也有尝试无果的无奈,但能专注地做一件事总是会有很大的收获。非常感谢主办方提供的数据和平台,让我们有机会参与实战积累经验,也感谢其他工作人员背后的辛苦付出!