返回列表

4th Place Solution

672. RSNA Intracranial Aneurysm Detection | rsna-intracranial-aneurysm-detection

开始: 2025-07-28 结束: 2025-10-14 医学影像分析 数据算法赛
第四名解决方案 - RSNA 颅内动脉瘤检测

第四名解决方案

作者: Harshit Sheoran (Grandmaster)
发布时间: 2025-10-15
竞赛排名: 第 4 名

衷心感谢 RSNA 和 Kaggle 举办此次比赛。

我把这次挑战当作速通来做,因为当我开始时比赛只剩下 14 天了,这远远不足以覆盖在这个数据集上能做的一切。这个数据集非常酷,而我仅仅触及了表面。我在 8 天内成功进入了金牌线。

终于成为 GM 了,耶!

分割模型失败

我开始训练一个分割模型……但在我尝试的短时间内,它无法学习到超过 0.6 的 Dice 分数,这远远不足以让我对这个方法有信心。

ROI 裁剪坐标模型

我转向了一个 ViT (dinov3) 模型,该模型输入每个患者等距的 48 个切片,输入形状为:48x1x128x128 体积,并预测 x1, x2, y1, y2 值,即患者级别分割掩膜裁剪边界的位置。这个模型对于 ROI 裁剪更加可靠和高效。

原始图像:

原始图像

ROI 裁剪:

ROI 裁剪

我保持 ROI 相对较大,因为我不想漏掉动脉瘤。我测试了坐标数据,在这种配置下,我可以保持 95% 以上的动脉瘤位置在裁剪区域内。

分类模型

我从 train_localizer csv 文件中取了约 2.2k 个样本,以及所有阴性患者的样本,这给了我一个数据集:

  • 545k 个样本,其中约 2.2K 个阳性样本,其余为阴性样本(250 个中有 1 个阳性)。
  • 数据集中有 14 个标签,这意味着模型需要预测 1/1700 的值为 1,其余为 0。

我找到了一种管道组合,即使在这种高度不平衡的情况下,模型也能开始学习(加权采样没有帮助)。

我的整个解决方案就是这个分类模型,以下是我如何提高它的分数(一旦基线开始学习,方法非常简单):

我的基线超参数:

  • 模型:CoaT-Lite-Medium
  • 优化器:AdamW | 学习率:1e-4 余弦退火至 ~3e-5
  • 增强:水平翻转,垂直翻转,无 TTA
  • 图像大小:384x384
  • 全局批次大小:192
方法 交叉验证 (CV) 公共/私有排行榜
ROI 裁剪上的 CoaT-Lite-Medium 0.805 0.78/0.78
+ 旋转 (-25, 25) 0.83 0.8/0.81
+ 2.5D (-2, 0, +2) 0.86 0.86/0.83
+ 对剩余 500k 潜在阳性样本进行软伪蒸馏 0.89 0.86/0.84
与 MaxViT + CoaT 集成 0.896 0.87/0.84

在推理时,模型预测每个患者的每张图像,最终预测结果 simply 取最大聚合。

感谢阅读!

同比赛其他方案