第 18 名解决方案 - RSNA 颅内动脉瘤检测
第 18 名解决方案
副标题:使用分割模型对每个血管类别的 ROI 进行分类
首先
首先,我想感谢主办方提供了如此有意义的比赛,感谢 Kaggle 工作人员,以及所有在讨论中分享见解的参与者。
策略
在比赛早期,基于提供的数据集,我制定了一个策略:使用分割模型生成 ROI,然后对它们进行分类。
流程概述
- 阶段 1:通过 2.5D 分割模型预测血管掩膜并在血管类别级别提取 ROI
- 阶段 2:ROI 分类
- 阶段 3:ROI 评分及序列级聚合
学习过程
阶段 1(分割模型)
- 我们使用带有 EfficientNet-B0 骨干网络的 smp.Unet 进行了切片级掩膜预测。
- 对于预处理,对 CT 图像应用了窗宽窗位调整,对 MRI 图像应用了百分位归一化。同时也使用了基本的数据增强技术。
- 输入尺寸为 (C, H, W) = (3, 512, 512)。
- 为了解决阴性、阳性和特定血管阳性样本之间的类别不平衡,我们使用了具有切片级权重的随机采样器。
- 使用 3 通道输入比 1 通道输入取得了更好的准确率。
- 最终 Dice 分数约为 0.66。
阶段 1(血管类别级 ROI 提取)
- 我们使用分割模型提取了 ROI。
每个 ROI 都是为每个血管类别生成的,作为预测掩膜的最小边界矩形,并添加了边距。
当在同一切片内检测到同一类别的多个分离区域时,为每个对象创建单独的 ROI(例如,class_i_object_j)。
- 对于动脉瘤阳性切片,根据上述定义提取 ROI,包含动脉瘤坐标的 ROI 被标记为阳性 ROI,命中率约为 94%。
- 阴性 ROI 采样自阴性序列以及阳性序列中距离动脉瘤坐标超过 40 mm(xyz 空间)的区域。
阶段 2
- 对于 ROI 分类,通过对 ROI 切片及其相邻切片应用相同的边界框创建了 2.5D 输入。
图像在保持纵横比的同时进行调整,缩放使较长边匹配目标尺寸。
最终输入尺寸为 (C, H, W) = (3, 224, 224),必要时应用填充。
- 评估了多个骨干网络,包括 EfficientNet-B0 和 EfficientNet-V2-S。
模型达到了约 0.94 的 ROI 级 AUC。
阶段 3
- 对于每个 ROI,将 ROI 分类模型预测的动脉瘤概率 (prob) 乘以从分割模型获得的血管类别概率 (class_scores),以计算 13 个类别分数。
二分类动脉瘤分数直接取自 ROI 概率 (prob),未经任何修改。
- 使用 ROI 级分数的 top-k 均值执行序列级聚合。
- 本地验证 AUC 达到约 0.81。
提交过程
- DICOM 切片在 LPS 坐标系中对齐,仅沿 z 轴最后 150 mm(对应头部区域)用于推理。
为了限制每个序列的切片数量,我们设置 max_slice = 200。
获得的最佳公共 leaderboard 分数为 0.81。
有效的部分
- 我们成功实施了 ROI 提取和 ROI 级分类。
- 类别分数的推导也按预期工作。
无效的部分
- 序列级聚合后整体分数下降。
探索了几种后处理方法来过滤假阳性 ROI,但都没有效果。
我们应该考虑结合空间上下文的分类方法,例如 2.5D LSTM 或 3D CNN。
- MRI T2 图像上的性能 consistently 低,即使使用专用模型也没有观察到改进。
感谢阅读!