返回列表

[solution] 10-th place

336. SIIM-ACR Pneumothorax Segmentation | siim-acr-pneumothorax-segmentation

开始: 2019-06-24 结束: 2019-09-04 医学影像分析 数据算法赛
[解决方案] 第10名

[解决方案] 第10名

作者: Yurii Dzeryn, Konstantin Gavrilchik
比赛: SIIM-ACR Pneumothorax Segmentation

该流程的核心与我之前的帖子仍然非常相似。

一个主要的变更是将问题拆分为分割和分类任务。此外,在 Konstantin 加入后,我们尝试了更复杂的模型,其中许多模型的效果优于 ResNet34。

现在,当我看到大多数团队都在共同解决这个问题时,我开始相信,将两者结合起来进行集成可以显著提高分数。

通用设置

  • 数据划分: CV5(5折交叉验证)
  • 优化器: Adam
  • 学习率调度器: Reduce lr on plateau(验证指标停滞时降低学习率)
  • 数据增强: 相对激进:ShiftScaleRotate(平移缩放旋转)、Grid- 和 Elastic-transformation(网格和弹性变换)、GaussianNoise(高斯噪声)

分类任务

  • 模型: se_resnext101 (2个快照), senet154
  • 分辨率: 768x768
  • 损失函数: BCE(二元交叉熵)
  • 额外特征: TTAx2(hlip,水平翻转), 伪标签, 梯度累积 (batch size = 100-200)

这里的关键是模型选择。我没有关注准确率,而是关注固定阈值为 1.0 的 f0.5 指标。动机很简单,分割模型的平均 Dice 系数约为 0.58。这意味着正确猜出的负样本对分数的贡献为 1,而正确猜出的正样本仅为 0.58。

分割任务

  • 模型: Unets: dpn98, se_resnet101, se_densenet121 (每个模型各2个快照)

训练过程包含 4 个阶段:

  1. 损失: BCE + dice; 尺寸: 512x512
  2. 损失: BCE + dice; 尺寸: 1024x1024
  3. 损失: BCE; 使用软伪标签; 尺寸: 1024x1024
  4. 损失: symmetric lovasz (对称 Lovasz 损失); 尺寸: 1024x1024

额外特征: TTAx6(hlip + rescale), 梯度累积 (batch size = 50-100)

无效尝试

  • 使用其他编码器的 Unets 效果较差 (resnet34, resnet50, dpn107, dpn131, se_resnext50_32x4d, se_resnext101_32x4d, senet154)。senet154 在 512x512 尺寸上的表现优于其他模型,但在扩展到 1024x1024 时完全失败。
  • Lookahead 优化器未能改善优化过程 (https://arxiv.org/abs/1907.08610)
  • 其他分类损失函数:FocalLoss, SoftF1Loss。使用 FocalLoss 的准确率比 BCE 好,但 f0.5 指标更差。
同比赛其他方案