返回列表

7th solution

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

开始: 2024-05-17 结束: 2024-10-08 医学影像分析 数据算法赛
第 7 名解决方案 - RSNA 2024 腰椎退行性分类
标题: 第 7 名解决方案 (7th solution)
作者: lhwcv (Grandmaster)
发布时间: 2024-10-09
竞赛: RSNA 2024 腰椎退行性分类

总结

首先,我们要感谢 Kaggle 和 RSNA 举办这场精彩的比赛。
我们的解决方案是 1 阶段和 2 阶段模型的集成。

lhwcv 部分

我非常感谢我的队友,我从他们身上学到了很多。

2 阶段方法,组件包括:

  • 阶段 1 (stage1):关键点回归(2D 和 3D)
  • 阶段 2_模型 1 (stage2_model1):按关键点裁剪,在特征空间融合 3 个视图
  • 阶段 2_模型 2 (stage2_model2):按关键点裁剪,针对 3 种条件类型的单视图
  • 集成 (ensemble):多种骨干网络 + 翻转 TTA (测试时增强)

阶段 1 (stage1)

关键点回归(2D 和 3D)

矢状面 (Sagittal):

  • keypoint-sag-2d: 使用 timm 模型,首先对每个序列采样 10 个切片(与 ITK 基线方法相同),然后输入中心切片。
  • keypoint-sag-3d: 使用 timm-3d 模型,矢状面 T2 -> 5 个 xyz 点,T1 -> 10 个 xyz 点

轴状面 (Axial):

  • keypoint-axial-3d: 使用 timm-3d 模型,10 个 xyz 点
  • keypoint-axial-level-cls: 2.5D (CNN + LSTM + attention) 用于层级分类 (z),以及另一个 2D 模型用于 xy 回归

使用的骨干网络(由 ITK 搜索得出):

  • densenet161
  • convnext small
  • gluon_resnet152_v1s
  • convformer_s36.sail_in22k_ft_in1k_384

阶段 2_模型 1 (stage2_model1)

在特征空间融合 3 个视图

使用的关键点模型是 keypoint-sag-2dkeypoint-axial-3d
对于矢状面,我们对每个序列采样 10 个切片,在 T2 上裁剪中心 5 个切片,在 T1 上每个层级左侧裁剪 5 个切片,右侧裁剪 5 个切片。
对于轴状面,我们基于点的 Z 坐标对每个层级采样 5 个切片。
最终的输入尺寸为:x -> (bs, 5_cond, 5_level, 5, crop_h, crop_w)
模型架构如下:

# train 
y, axial_embs = self.axial_model(axial_x) # bs, 
ys2, sag_embs = self.sag_model(x)
# sag_embs: bs, 5_cond, 1_level, 128
sag_embs = sag_embs.permute(0, 2, 1, 3).reshape(b, 1, -1)  # bs, 1, 5*128
embs = torch.cat((sag_embs, axial_embs), dim=-1)
ys = self.out_linear(embs).reshape(b, 1, 5, 3)  # bs, 1_level, 5_cond, 3
ys = ys.permute(0, 2, 1, 3)  # # bs, 5_cond, 1_level, 3
ys = ys + ys2

阶段 2_模型 2 (stage2_model2)

stage2_model1 的缺陷在于它在矢状面上使用 2D 关键点,并且在轴状面上处理多个序列的效果不佳。
使用的关键点模型是 keypoint-sag-3dkeypoint-axial-level-cls
我们基于 XYZ 点使用 (z_imgs, crop_h, crop_w) 裁剪 3D ROI 图像,其中 z_imgs 可以是 3 或 5;我们发现 3 的效果最好。
对于轴状面,可能会有多个检测结果,但我们只使用了置信度最高的一个(不一定是最优的)。

集成 (ensemble)

stage2_model1 + stage2_model2 配合多种骨干网络,TTA:矢状面水平翻转,轴状面垂直翻转

结果: CV: 0.373, LB: 0.35, PB: 0.40

骨干网络:

  • pvt-b1
  • pvt-b2
  • convnext-tiny
  • convnext-small
  • densenet161

hecgck & lhwcv 集成

团队提交 Notebook 地址:
https://www.kaggle.com/code/hengck23/lhw-v24-ensemble-add-heng

团队提交结果图

团队提交后 Notebook 地址:
https://www.kaggle.com/code/hengck23/post-lhw-v24-ensemble-add-heng

团队提交后结果图

hecgck 部分

详见:
https://www.kaggle.com/competitions/rsna-2024-lumbar-spine-degenerative-classification/discussion/539439

代码

推理 Notebook:

训练代码:

同比赛其他方案