返回列表

3rd place solution & become GM!! (updated with code)

348. RSNA Intracranial Hemorrhage Detection | rsna-intracranial-hemorrhage-detection

开始: 2019-09-18 结束: 2019-11-13 医学影像分析 数据算法赛
第3名解决方案 & 成为Grandmaster!! (已更新代码)

第3名解决方案 & 成为Grandmaster!! (已更新代码)

作者: takuoko | 比赛: RSNA颅内出血检测 | 排名: 第3名

更新

代码请点击这里

大家好,亲爱的Kagglers。首先,非常感谢RSNA和Kaggle举办了如此精彩的比赛。同时恭喜获奖者和所有的参赛者:) 我终于成为了Kaggle Grandmaster(大师)。这是一段非常艰难的旅程,但所有的经历都让我变得更强。我为此感到非常自豪😆

这是我的解决方案。我将在后面的部分详细说明,并在整理好之后分享我的GitHub仓库。

Solution Diagram

最终模型: Private LB 0.045
仅使用用户堆叠模型: Private LB 0.043 (很遗憾我没选这个 qq)

特殊的预处理

窗技术

我使用了两种类型的窗技术。

对我来说,硬膜下窗的效果稍微好一点。

拼接用户切片

这个方法给我带来了很大的提升。在一个SeriesInstanceUID中有一些图像(大约20-40张)。当按ImagePositionPatient2排序时,你会发现目标是连续的。在我的文章中,我将这些图像称为 s1, s2, s3, ..., st, st+1, …。

这里是例子。你可以在我的Kernel中看到更多细节。

Slice Example

所以我决定拼接来自同一个SeriesInstanceUID的一些图像。

  • st-1, st, st+1
  • st, st+1, st+2
  • st-2, st-1, st
  • st-2, st, st+2
  • np.mean (st-3, st-2, st-1), st, np.mean(st+1, st+2, st+3)
  • np.mean (st-5, st-4, st-3, st-2, st-1), st, np.mean(st+1, st+2, st+3, st+4, st+5)
  • np.mean (st-X for X in all values), st, np.mean(st+X for X in all values)

然后预测 st 的目标。

我还尝试了多任务训练。

  • st-1, st, st+1 然后预测 st-1, st, st+1 的目标
  • st-2, st, st+2 然后预测 st-2, st, st+2 的目标

这个模型在Stage1 Public上得分0.060~0.062(抱歉我忘了具体分数)。这是我最好的单模型,这两个模型将我的集成分数在Stage1上从0.057提高到了0.056。

用户堆叠

我使用了“拼接用户切片”的方法向模型展示用户的多个切片。我在集成部分使用了这个方法,我称之为用户堆叠。

User Stacking

其他使用的方法

  • 虽然提升不大,但我还是写下来了。
  • Appian的0
同比赛其他方案