返回列表

9th place solution

575. RSNA 2023 Abdominal Trauma Detection | rsna-2023-abdominal-trauma-detection

开始: 2023-07-26 结束: 2023-10-15 医学影像分析 数据算法赛

首先,我要向Kaggle团队和RSNA主办方表达诚挚感谢,感谢他们举办了这场精彩的竞赛。同时感谢所有全力以赴的参赛者们,特别感谢我的队友@liushuzhi的不懈努力和富有洞见的讨论。

概述

各模型详细说明

3D分割

  • 使用了@haqishen在上届竞赛冠军方案中的实现。[1](感谢!)
  • 输入尺寸: (128, 128, 128)
  • 使用的模型: ResNet18d, UNet

分类 - 肝脏/肾脏/脾脏

  • 开发了单一模型同时对这三个器官进行分类,而不是为每个器官单独建立模型,因为这样性能更好。
  • 对于拥有2个序列的患者,仅使用其中aortic_hu值较低的序列进行训练;对于只有1个序列的患者,则使用全部数据。这个决定基于实验结果而非特定原理。
  • 使用3D分割掩码进行长方体裁剪,并略微扩展以保留边缘信息。
  • 根据竞赛评估指标[1, 2, 4]对训练损失进行加权。
  • 模型架构: SE-ResNeXt → LSTM → 连接[1D CNN, Attention]
  • 输入尺寸: (96, 4, 256, 256)
    • 通道包括(i-1, i, i+1, mask),其中'i'表示沿z轴的图像索引。

分类 - 肠道

采用两阶段训练策略以利用图像级标签。

第一阶段

  • 使用image_level_label.csv进行2D模型的图像级二分类。
  • 与肝/肾/脾模型类似,使用3D分割掩码进行长方体裁剪生成4通道输入数据。输入尺寸为(4, 384, 384)。
  • 随机采样数据使正负样本比例达到1:10。
  • 根据竞赛评估指标对损失进行加权。
  • 使用SE-ResNeXt模型。

第二阶段

  • 聚合第一阶段模型提取的特征。
  • 模型架构: SE-ResNeXt → LSTM
  • 加载第一阶段权重并冻结,仅更新LSTM之后的网络部分。

分类 - 外渗

同样采用两阶段训练策略利用图像级标签。模型结构和聚合方法与肠道分类相同,但有以下调整:

  • 不进行长方体裁剪
  • 由于异常区域较小,将分辨率提升至(96, 3, 512, 512)
  • 对于拥有2个序列的患者,使用aortic_hu值较高的数据以突出特征

后处理

引入后处理步骤以优化any_injury的预测结果。我们采用的最简后处理方法是系数相乘:

基于OOF预测值搜索并应用不同系数。虽然原计划构建堆叠模型,但受限于时间进行了简化。

low_coef = 1.5
high_coef = 1.5
ev_coef = 1.5
bowel_coef = 1.0

df_pred["liver_low"] *= low_coef
df_pred["liver_high"] *= high_coef
df_pred["kidney_low"] *= low_coef
df_pred["kidney_high"] *= high_coef
df_pred["spleen_low"] *= low_coef
df_pred["spleen_high"] *= high_coef
df_pred["extravasation_injury"] *= ev_coef
df_pred["bowel_injury"] *= bowel_coef

交叉验证结果

肠道 外渗 肾脏 肝脏 脾脏 任意损伤 平均值
无后处理 0.1293 0.5348 0.3146 0.4192 0.4454 0.5533 0.3994
有后处理 0.1293 0.5303 0.3141 0.4190 0.4485 0.4925 0.3889

源代码

致谢

再次感谢Kaggle团队和主办方组织了这场精彩竞赛,感谢所有专注的参赛者,以及Rist Inc.在计算资源上的大力支持。

同比赛其他方案