返回列表

7th place solution

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

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

第7名解决方案

作者: Eduardo Rocha de Andrade (arc144), See-- (seesee)
比赛: SIIM-ACR Pneumothorax Segmentation

我要感谢 Kaggle 和组织者举办这次比赛,并祝贺所有的参赛者!同时,特别感谢我的队友 @seesee

TL;DR(太长不看版)

我们的解决方案非常简单,它是四个不同模型(每个模型包含若干折)的集成(简单平均):

  • FPNetResNet50(5折)
  • FPNetResNet101(5折)
  • FPNetResNet101(使用不同种子的7折)
  • PANetDilatedResNet34(4折)
  • PANetResNet50(4折)
  • EMANetResNet101(2折)

模型在 768x768(或接近该数值)的分辨率下训练,使用 AdamW 优化器。对于 FPN 模型使用了翻转 TTA(测试时增强),而其余模型使用了缩放(1024)TTA。我们使用了两个阈值,一个用于分割,另一个(数值较高)用于分类。

See 的模型

See 训练的模型基于 特征金字塔网络 解码器和 ResNet 编码器。ResNet 模型基于 Bag-of-tricks 论文 中提出的修改版本。See 使用 AdamW 作为优化器,学习率调度采用带预热的线性衰减。损失函数使用了 BCE 和 Dice 的加权组合。还使用了水平翻转 TTA。

他总共训练了 17 个模型:

  • FPNetResNet50(5折)
  • FPNetResNet101(5折)
  • FPNetResNet101(使用不同种子的7折)

See 的代码可在他的 GitHub 仓库 中找到。

Eduardo 的模型

我训练的模型基于两种不同类型的解码器:EMANetPANet。两者都是我自己重新实现的,并做了一些小修改:

  • 对于 PANet,我只是减少了进入 FPA 模块前的通道数。我没有注意到性能下降,而且网络变得更轻量了。
  • 对于 EMANets,我将 8 倍的陡峭双线性上采样改为使用 PANet 的 GAU 模块进行逐渐的 2 倍上采样。这显著提高了性能。

对于编码器,我也使用了 ResNet 系列,并采用了 Bag-of-tricks 论文 中提出的修改。我的模型使用 AdamW余弦退火 学习率调度进行训练。损失函数使用简单的 BCE 效果就很好。我总共在 768x768 分辨率下训练了 10 个模型:

  • PANetDilatedResNet34(4折)
  • PANetResNet50(4折)
  • EMANetResNet101(2折)

预测时使用了缩放 TTA(768, 1024)。

集成与阈值处理

对于集成,使用了模型软预测(sigmoid 之后,阈值处理之前)的简单平均。最后,我们使用了两个阈值数值。数值较小的一个(0.2)用于分割,另一个(0.72)用于非气胸图像的分类。

无效的尝试

  • HRNet
  • FishNet 作为编码器(不差,但也没有提升)
  • 基于梯度提升的第二级分类器,使用分割网络的输出和元数据作为特征

硬件配置

  • See 使用了 V100
  • Eduardo 使用了 1080ti