返回列表

9th place solution

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

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

第9名解决方案

作者:Scizzzo | 排名:第9名 | 发布时间:2019-09-08

大家好。首先感谢主办方和Kaggle举办这场有趣的比赛,同时也祝贺所有的获奖者。我的解决方案相当混乱,所以也要感谢所有能读到结尾的人:)

初次尝试(不太成功):

起初,我决定在这次比赛中采用两阶段的方法——分别训练分类模型(气胸/非气胸)和分割模型。因此,我训练了几个常见的分类模型:resnet34、resnet50、seresnex50、seresnext101、dpn98,它们的准确率都差不多,约为0.9。我无论如何都无法提高这个结果。之后,我训练了几个带有不同骨干网络的unet模型(仅在包含气胸的图像上训练),得分进入了金牌区。但这种方法不是很稳定,而且LB(Leaderboard)上的结果与我的本地CV(交叉验证)并不相关。在几次提高该解决方案的尝试失败后,我感到很失望,并停止参与这次比赛大约一个月。

最终解决方案:

回到比赛后,我决定尝试一种稍微不同的方法,这最终成为了我的最终解决方案。它也有两个步骤:

分类:

为此,当时我决定使用Unet模型。并通过像素数量的阈值来判断图片中是否存在气胸。根据我的验证,最佳阈值是2000。

  • 骨干网络: seresnext50
  • 数据: 对于这一步,我使用了所有图像和平衡批次(气胸/非气胸),这大大加速了收敛
  • 数据划分: 5折和10折,按气胸面积分层
  • 输入尺寸: 768x768
  • 损失函数: BCE
  • 数据增强: 水平翻转、旋转(最多10度)、随机亮度、对比度和伽马、模糊
  • 学习率调度: 当验证指标停滞时降低学习率,耐心=3个epoch

这个方法给出了相当不错的结果,但仍然有相当数量的假阴性例子。因此,我决定使用我在开始时训练的分类模型,如果所有模型都将图片归类为包含气胸,我就将其标记为包含气胸。

分割:

这一阶段的核心元素也是Unet模型:) 但这一次,模型仅对在分类阶段被识别为包含气胸的图片进行预测。

  • 骨干网络: seresnext50
  • 数据: 仅包含气胸的图像
  • 数据划分: 5折和10折,按气胸面积分层
  • 输入尺寸: 928x928, 768x768
  • 损失函数: BCE + Dice
  • 数据增强: 与分类阶段相同
  • 学习率调度: 当验证指标停滞时降低学习率,耐心=5个epoch
同比赛其他方案