返回列表

10th place solution

513. RSNA 2022 Cervical Spine Fracture Detection | rsna-2022-cervical-spine-fracture-detection

开始: 2022-07-28 结束: 2022-10-27 医学影像分析 数据算法赛
第10名解决方案

第10名解决方案

作者: RihanPiggy (Hong Lihang), yokuyama, sht
比赛: RSNA 2022 Cervical Spine Fracture Detection
排名: 10th Place (Gold Medal)

恭喜所有的获奖者!感谢 Kaggle 和 RSNA 主办这场有趣的比赛。

这是我的第一枚金牌,我很高兴能成为 Kaggle Master,虽然还有很长的路要走。非常感谢我的队友 yokuyamasht 给了我学习的机会,并启发了我作为单人玩家从未想过的新想法。

代表我们的团队,让我介绍一下我们的解决方案。

第一阶段:图像级模型

这次比赛与过去的 RSNA 比赛(2019/2020)有很多相似之处。因此,我们花了很多时间收集过去顶级团队分享的智慧,如辅助损失、两阶段模型、EMA 等。特别感谢大家分享这些重要信息!

我们还花了很多时间阅读论文和观看 YouTube 来学习颈椎骨折的知识,最终我们找到了包含赢得这次比赛关键思想的论文:裁剪!!

Deep Sequential Learning for Cervical Spine Fracture Detection on Computed Tomography Imaging

流程

  1. 使用 Verse2020(79例)预训练椎体模型。
  2. 使用比赛数据(89例)训练椎体模型。
  3. 准备骨折模型的训练数据。随机采样 258 个阴性病例,过滤 C1-C7 区域,并使用上述训练好的椎体模型裁剪椎体。
  4. 训练骨折模型。

交叉验证策略

  • 在第一阶段未使用交叉验证策略。

椎体模型

数据增强

  • 重用了在 UWMGI 中实现的训练流程。非常感谢 awsaf49

模型

我们选择了在 ImageNet 上预训练的 seresnext50_32x4d 作为 Unet 的主干。我们没有使用 3D 分割模型的原因是在第二阶段,从椎体模型提取的特征将 CV 提升了约 0.02,因此我们选择 2D 模型来获取图像级特征。

感谢 timm 和 segmentation_models_pytorch。

训练策略

  • 使用 Verse2020 预训练 18 个 epoch,因为根据 UWMGI 的经验,获得一个好的分割模型需要很长的 epoch。
  • 考虑到计算时间,在椎体模型中没有使用 2.5D 图像,因为我们不是在竞争 Dice loss。
  • 使用比赛数据训练 1 个 epoch。
  • CosineAnnealingLR(余弦退火学习率)。

无效尝试

  • LovaszLoss
  • 使用比赛数据进行长 epoch 训练
椎体模型示意图

骨折模型

数据增强

  • HorizontalFlip(水平翻转)
  • VerticalFlip(垂直翻转)
  • Rotate(旋转)
  • RandomBrightnessContrast(随机亮度对比度)

模型

  • seresnext50_32x4d(在 ImageNet 上预训练)
  • efficientnet_b4(在 Noisy Student 上预训练)

训练策略

  • [重要] Mixup(beta=1.0, p=0.6) 和长 epoch(18-25 个 epoch)提升了模型性能。(使用 Mixup CV 为 0.263,无 Mixup CV 为 0.
同比赛其他方案