返回列表

23rd Place Solution

499. UW-Madison GI Tract Image Segmentation | uw-madison-gi-tract-image-segmentation

开始: 2022-04-14 结束: 2022-07-14 医学影像分析 数据算法赛
第23名方案

第23名方案

作者: Ahmed Samir (专家) | 团队成员: Kolya Forrat (大师), Artem Toporov (大师)
发布时间: 2022-07-15

首先,我要感谢我的队友 @kolyaforrat@artemtprv。他们非常乐于助人且友好,在我们合并后的短短时间内,我从他们身上学到了很多东西。

我们的最终解决方案是 2.5D 模型和 3D 模型的融合。

2.5D 方法

使用混合精度训练,在通过分层分组分割的训练集的 5 个折上训练了 5 个模型。

  • 架构: Unet++
  • 主干网络: regnety_160(使用 ImageNet 权重)
  • 数据: (-2, 0,+2) 2.5D 切片 - (192, 192) 随机裁剪自 (320, 384) 填充切片,并使用 MixUp
  • 增强: 水平翻转、弹性变换、网格畸变、平移缩放旋转、粗粒度丢弃、随机亮度对比度、随机 Gamma、锐化
  • 损失函数: Unet++ 架构上四层的深度监督损失 (2*Dice + 3*Focal + BCE)
  • 轮数: 100
  • 优化器: Adam
  • 学习率: 6e-3,采用 one cycle 策略
  • 推理: TTA(仅水平翻转)以及最小的后处理,移除任何不包含注释的切片的预测

我没有太关注后处理策略或训练采样策略,事后看来,我本应该关注的。但无论如何,我的流程就是这么简单,单个模型在公共 LB 上达到了 0.883,5 折达到了 0.884。

注意事项

  1. 使用更大的裁剪进行训练并没有提高性能,只是增加了训练时间
  2. 深度监督损失在流程中起到了关键作用,显著改善了本地 CV 和公共 LB 分数(0.865 → 0.878)
  3. MixUp 帮助突破了本地 CV 和公共 LB 指标分数的瓶颈(0.878 → 0.883)
  4. RandomResizedCrops 效果不如普通的 RandomCrops
  5. 在 RTX 5000 上训练一折的最终流程大约需要 12 小时。

3D 流程

我们使用了 MONAI Unet 多标签模型。3 折 + 全量训练

  • 通道数: (56, 112, 224, 448, 896)
  • 损失函数: DiceLoss
  • 优化器: AdamW
  • 学习率模式: 每 100 个 epoch 进行 warmup_restart
    在原始数据上进行训练,随机裁剪尺寸为 160, 160, 80

对整个 case_day 进行推理,长度 =80;对于长度 =144 的情况,将其裁剪为 124,并使用滑动窗口进行 3 次独立推理,步长 =20,roi_size=(288,288,80),重叠率 =0.9

增强:
RandFlipd, RandAffined, RandGridDistortiond, RandScaleIntensityd, RandShiftIntensity

在 3D 模型中无效的方法:

  • 深度监督损失
  • MixUp
  • 数据清洗
  • 对低指标样本进行伪标签标记
  • 仅针对每种尺寸在训练集中有掩码的区域进行训练

后处理方面,我们使用了一些技术:

  • 删除不可能项: 删除训练集中没有任何掩码的所有切片
  • 填充缺失项: 如果 s-1 和 s+1 非空,则通过最近邻填充切片
  • 聚类: 在训练集中,每个掩码出现在某个切片上并在另一个切片上消失。我们为每个 case_day 找到了最大的簇,并删除不在簇中的所有内容
  • 删除最后 N 个: 删除 Z 维 = 144 和 80 的 case_days 的最后 n、m 个掩码。最佳值 m = n = 2
同比赛其他方案