第30名方案
第30名方案
作者: sin (Grandmaster), Johnny Lee (Master), Javier Martín (Master)
比赛: RSNA STR Pulmonary Embolism Detection
感谢 Kaggle 团队和组织者举办这场充满挑战的比赛。向我的队友 @wuliaokaola 和 @bacterio 致以崇高的敬意,他们工作非常努力!!我们学到了很多,现在的我们在计算资源和体力上都已精疲力尽😃,就像你们许多人一样。这个方案是在 15 天内开发出来的,远不及顶尖的获奖方案。但希望这里能有一些有用的东西!
太长不看版 (TL; DR)
- Efficientnet B1 用于图像级别,Efficientnet 3D CNN + Resnet 3D 用于研究级别。CNN + Transformer 用于图像和研究级别。
- 使用了组织者提供的 TFRecords 和 @vaillant 的窗口函数。
- 应用掩码隐藏图像的左侧/右侧。
- 基于 OOF 计算优化融合权重。
时间线
- 我们在大约 15 天前开始参加比赛。
- 在图像级别训练了 Efficientnet B0,并与 @osciiart 的平均预测结果(即得分为 0.325 的公共笔记本)进行了融合。公式为:0.4 * 平均预测 + 0.6 * Efficient B0,研究级别则使用平均预测。这给了我们 LB 分数:
0.292。
- 开发了 Resnet3D,LB 分数为
0.370。我们对该模型进行了本地验证,发现它在研究级别表现良好,但在图像级别表现不佳。因此,对于研究级别,我们用 Resnet3D 替换了平均预测,并达到了 0.253 的 LB 分数。
- 通过掩码(遮盖图像的一半)改进了 Efficientnet B0。达到了
0.248 的 LB 分数。
- 惊人的公共基线出现了,我们感到很沮丧,因为它得了
0.233 分,这让我们感到恐慌。我们尝试进行推理,但耗时太久,因此决定不将其纳入我们的流程。
- 我们将 @bacterio 加入团队,并与我们现有的结果(取平均值)融合,LB 分数达到了
0.226。@bacterio 当时有一个 CNN + Transformer 模型,这与我们的方法完全不同。这让我们稍微冷静了一点,我们知道如果继续改进图像级别和研究级别,我们会做得更好。
- 我们通过使用类似技术训练三个 Efficientnet B1 进行了改进,@wuliaokaola 提出了一个新的架构 Efficientnet 3D CNN,我们获得了
0.212 的 LB 分数。
- 哦!我们只剩下两天时间了。我们该怎么办?我们意识到添加另一个架构是不切实际的。所以我们应该致力于升级现有模型。我们在 Efficientnet 3D CNN 中添加了 TTAs,并对 Efficientnet B1、Resnet 3D、Efficientnet 3D CNN 进行了微调,最终获得了
0.204 的 LB 分数。
建模
在这一部分,我将展示我们的最终模型。
Efficientnet B1 (TF)
- 使用组织者提供的 TFRecords 在 TPU 上训练
- 由 @vaillant 提供的 3 个窗口作为 3 个通道
- 配置:
- Batchsize: 768
- Epochs: 17
- 调度器:9 个 epoch 1e-3,2