返回列表

2nd place solution

625. RSNA 2024 Lumbar Spine Degenerative Classification | rsna-2024-lumbar-spine-degenerative-classification

开始: 2024-05-17 结束: 2024-10-08 医学影像分析 数据算法赛
第二名解决方案 - RSNA 2024 腰椎退行性分类

第二名解决方案

作者: YujiAriyasu (Grandmaster)

团队成员: Ian Pan, Kevin, Bartley, YujiAriyasu

发布时间: 2024-10-18

竞赛: RSNA 2024 腰椎退行性分类 (RSNA 2024 Lumbar Spine Degenerative Classification)

排名: 第 2 名

首先,我想感谢 Kaggle 和 RSNA 举办了这场优秀的比赛。
我也感谢我的队友们直到最后都在努力工作。
我们的解决方案是我们个人预测的简单融合加上少量的后处理。我的队友们可能会在本帖的回复中分享他们的解决方案。我将在下面描述我的解决方案和后处理。

总结

我的解决方案是小型模型的集成。我分别处理了轴位 (Axial) 和矢状位 (Sagittal) 图像。此外,我为每个目标创建了单独的模型。
基本上,所有模型都预测 3 个目标:['normal_mild (正常/轻度)', 'moderate (中度)', 'severe (重度)']。我使用的模型将不同节段和左/右的数据视为相同,不考虑这些区别。最后,我使用团队的集成 OOF (Out-of-Fold) 来去除噪声标签数据并重新训练分类模型。

轴位 (Axial)

首先,我分类哪些切片用于预测每个节段。我使用了 @hengck23 的代码为此目的 - 总是感谢你重要的贡献!
接下来,我估计每个图像内用于严重程度预测的区域。我使用提供的数据训练了 YOLOX。

Axial YOLOX Detection

最后,我使用 ConvNeXt Small 训练了分类模型。对于脊柱预测,我直接使用 YOLOX 估计的区域。对于非脊柱预测,我仅使用图像的左半部分或右半部分,这使我能够平等地对待左和右的标签。

矢状位 (Sagittal)

首先,我分类适合预测脊柱和关节下目标的切片。我使用了 2.5D 图像和一个简单的 Timm 模型。
接下来,我估计图像内每个节段的区域。我使用队友 @brendanartley 分享的数据训练了 YOLOX - 感谢你出色的贡献!

Sagittal Detection

使用边界框水平划分每个节段然后裁剪。

Sagittal Cropping

最后,我使用接受 5 张图像的 MIL (Multiple Instance Learning) 模型执行分类。骨干网络是 ConvNeXt Small。对于脊柱和关节下,我使用以第一阶段预测为中心的 5 个切片。对于椎间孔 (Foraminal),我使用以脊柱和关节下切片之间为中心的 5 个切片。有些模型在单独的通道中使用 T1/T2,而有些只使用一个。

噪声降低 (Noise Reduction)

我的队友在训练数据集中发现了标签噪声,所以我们移除了高损失的样本。使用我们的集成 OOF (CV: 0.3687),我们排除了标签与预测值之差大于或等于 0.8 的样本。由于数据不平衡,我们需要对中度和重度类别应用系数。这个技巧将我们的分数在公共和私人排行榜上都提高了 1%。我在截止日期前两天才想出这个主意,所以我没有时间尝试各种方法或系数。可能还有更好的方法。

这是我的解决方案的简要概述。还有许多更复杂的细节我无法在此包含。

集成与后处理 (Ensemble and Post-processing)

我简单地加权平均了每个成员的预测,然后仅对脊柱预测应用后处理。
对于每个研究 (Study),我将 5 个节段中预测的最高脊柱 - 重度 (Spinal-Severe) 值乘以 1.25。

再次感谢我的队友们!

同比赛其他方案