返回列表

9th place solution ( + github code)

404. RSNA STR Pulmonary Embolism Detection | rsna-str-pulmonary-embolism-detection

开始: 2020-09-10 结束: 2020-10-26 医学影像分析 数据算法赛
第9名方案(含GitHub代码)

第9名方案(含GitHub代码)

作者: shimacos, rincha
比赛: RSNA STR Pulmonary Embolism Detection

恭喜所有的获奖者!
这次比赛在很多方面对我来说都很艰难。

方案概览

Solution Overview

预处理

  • 在训练数据中,没有CT图像在第400张图像之后出现肺栓塞(PE)。因此,我们只使用了前400张图像。
    Preprocess Chart

  • 对于第一阶段训练,我们按如下图像所示对图像级标签进行了预处理。

    • 处理前
      Before Preprocess
    • 处理后
      After Preprocess

第一阶段训练 (Stage 1 training)

  • 我们使用了 512 x 512 图像 + EfficientNet-b5 以及 384 x 384 图像 + EfficientNet-b3,并使用了预处理后的标签。

第二阶段训练 (Stage 2 training)

  • 由于我们使用了 512 x 512 图像 + EfficientNet-b5,推理时间非常紧张。因此,我们将400个序列下采样到200个序列,并使用了反卷积模块。
    • 使用400个序列时,我们获得了相同的CV分数。
  • 由于资源限制,我们在第一阶段无法使用多种模型。因此,我们在第二阶段训练了多种模型。
    • 输入:仅 b5特征, 仅 b3特征, b5特征 + b3特征
    • 模型:Conv1D, LSTM, GRU, Conv1D + LSTM
    • 输出:3 x 4 = 12 个预测结果

堆叠

  • 我们训练了 LGBM, Conv1D 和 GRU。
    • 在使用 LGBM 训练 pe_present_on_image 时,我们只使用了 PE 检查数据,因为来自阴性 PE 的图像不影响比赛指标。

后处理

  • 我们实施了一种启发式后处理方法。
    • 该后处理使 CV 和 Public 分数提高了 0.002(Private 分数从 0.160 提高到 0.162)。
    • 主要思路
      • 1 - negative_exam_for_pe <= pe_present_on_image 时,用 1 - negative_exam_for_pe 替换 pe_present_on_image
      • 重复执行 sigmoid -> logit -> logit += s -> sigmoid,直到满足标签一致性。
label_cols = [
      "pe_present_on_image",
      "