返回列表

1st Place Solution [PND]

392. Prostate cANcer graDe Assessment (PANDA) Challenge | prostate-cancer-grade-assessment

开始: 2020-04-21 结束: 2020-07-22 医学影像分析 数据算法赛
第一名解决方案 [PND]

第一名解决方案 [PND]

作者: fam_taro (团队: arutema47, poteman, fam_taro) | 排名: 1st Place

恭喜大家,也感谢主办方筹备这次比赛!

我发布了 幻灯片

我们的代码在 这里

提出的去噪方法

我们非常惊讶能获得第一名,我们简单的标签去噪方法(令人惊讶地)提升了 PB(Private Board)分数。

这次比赛的核心在于处理噪声标签,因此我们努力寻找好的去噪方法。

这是 @kyoshioka47 提出的简单去噪方法:

获取清洗后的标签

  • 使用 effnet-b1 训练 k-folds(几乎与 Qishen 的 kernel 相同)
    • 模型细节见 fam_taro (@yukkyo) 部分
  • 使用训练好的模型预测留出集。通过此步骤我们得到 pred
  • 移除真实值与预测值之间差异较大的训练数据。过滤后的标签将被称为清洗后的标签。

我们通过 ISUP 真实值(GT)与预测值之间的绝对差值来计算 差异。差异大于 1.6 的数据被简单移除。

以下是伪代码。probs_raw 是原始预测结果(ISUP)

# Base arutema method
def remove_noisy(df, thresh):
    gap = np.abs(df["isup_grade"] - df["probs_raw"])
    df_removed = df[gap > thresh].reset_index(drop=True)
    df_keep = df[gap <= thresh].reset_index(drop=True)
    return df_keep, df_removed

df_keep, df_remove = remove_noisy(df, thresh=1.6)
show_keep_remove(df, df_keep, df_remove)

重新训练

使用去噪后的标签重新训练模型。

使用简单的带有 k-folds 的 Qishen Eff-b0 模型,我们获得了 CV 0.94,LB 0.90,PB 0.934 的成绩。

与不同模型集成进一步助推我们获得了第一名。

我们也尝试了 CleanLab,但在 CV/LB 上表现不佳,所以我们坚持使用了这种方法。

1. 我们的最终提交

  • 选择 1 (Public LB 0.910, Private LB 0.922)
    • Resnext50_32x4d(poteman)
  • 选择 2 (Public LB 0.904, Private LB 0.940)
    • Effnet-B0(arutema47) + Effnet-B1(fam_taro)
      • 简单平均 (1 : 1)

令人惊讶的是,即使尝试了多种权重组合,PB 分数仍达到了 0.940。

2. Resnext50_32x4d( @poteman ), Public 0.910, Private 0.922

这是我们最好的 LB 模型。

  • 分割 kfold:
同比赛其他方案