返回列表

40th Place: A UNet only solution

424. RANZCR CLiP - Catheter and Line Position Challenge | ranzcr-clip-catheter-line-classification

开始: 2020-12-14 结束: 2021-03-16 医学影像分析 数据算法赛
第40名:纯UNet解决方案

第40名:纯UNet解决方案

作者: datasaurus
比赛排名: 第40名

祝贺所有的获胜者,也感谢主办方举办了如此成功的比赛,希望这能对医疗专业人员未来的工作有所帮助。

我的解决方案仅使用了UNet,通过两阶段的训练过程来利用标注数据,并帮助主干网络关注X光片中的关键部分。

交叉验证策略

我在有标注图像和无标注图像中分别应用了GroupKFold(k=5),然后将这两组数据连接起来。

预处理

我通过将异常/临界/正常类别分组,为每张有标注的图像生成了5通道掩码,并使用OpenCV将标注转换为线条。

  • 通道 1:ETT(气管内管)
  • 通道 2:NGT(鼻胃管)
  • 通道 3:CVC(中心静脉导管)
  • 通道 4:Swan Ganz Catheter(Swan-Ganz导管)
  • 通道 5:来自 @raddar肺部掩码

第一阶段:UNet教师模型

第一阶段是一个UNet,用于预测5通道掩码,并且在瓶颈层有一个分类头来预测11个类别。该模型仅在有标注的图像上进行训练:

  • 使用AdamW优化器,权重衰减为0.1
  • 余弦退火学习率,Tmax=60个epochs
  • 早停机制,耐心值为5
  • 学习率 = 0.00025,批量大小约为5-7(取决于主干网络)
  • 重度的数据增强,类似于kernels/discussions中见到的方法
  • 分割任务使用BCEWithLogitsLoss
  • 分类任务使用 0.01 * BCEWithLogitsLoss

我通常不提交这些模型,但对于ResNet-200D UNet,其在公共榜上的得分为0.953,私人榜为0.961。

第二阶段:UNet学生模型

然后我训练了第二个UNet(架构相同),但使用了完整的类别标签和由教师UNet生成的掩码,使用的超参数基本相同,但数据增强较轻。这些伪掩码是即时生成的,以便更好地从数据增强中受益,并在传入BCE损失之前通过sigmoid激活函数。我没有使用阈值来创建二进制掩码,试图以此来传递教师模型的不确定性。

主干网络 图像尺寸 CV Public Private
ResNet200D 512 0.9539 0.964 0.968
EfficientNet-B4 512 0.9453 0.962 0.965
ResNet200D 640 0.9568 0.966 0.970
EfficientNet-B4 640 0.9528 TBC TBC
SEResNet152d 640 0.9556 0.966 0.971

为了将ResNet200D和SEResNet152d用作UNet编码器,我fork了 @pavel92 出色的segmentation models,并从timm添加了这些编码器(感谢 @rwightman)。

最终提交

我使用了2倍TTA(恒等变换和水平翻转)以及爬山法集成,最终提交成绩为公共榜0

同比赛其他方案