返回列表

8th Place Solution & Code

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

开始: 2023-07-26 结束: 2023-10-15 医学影像分析 数据算法赛
2023 RSNA腹部创伤检测大赛第8名解决方案

2023 RSNA腹部创伤检测大赛第8名解决方案与代码

作者: Ian Pan(Kaggle Grandmaster)
发布日期: 2023年10月16日
比赛排名: 第8名

祝贺所有获奖者和参赛者。感谢Kaggle及主办方组织这场精彩的比赛。

我在比赛后期才加入,当时已经发布了我的造影剂外渗边界框标注数据集。我的解决方案与之前在RSNA横断面成像挑战赛(肺栓塞、颈椎骨折)中的方法类似,将任务分为三个独立子任务:预测实质器官损伤(肝脏、肾脏、脾脏)、肠道损伤和造影剂外渗。所有模型均基于CNN-Transformer"2.5D"架构。

数据预处理

我将所有DICOM文件转换为3通道PNG图像,每个通道使用不同的CT窗宽窗位设置:

  • 软组织窗:WL=50,WW=400
  • 肝脏窗:WL=90,WW=150
  • 血管造影窗:WL=100,WW=700

裁剪模型

通过3D连通域分析生成每个CT体积的掩码,用于训练模型去除黑色背景区域。该掩码被转换为每张图像的边界框坐标,用于训练256x256分辨率的2D CNN mobilenetv3_small_050模型。对每个CT体积取所有切片预测边界框的并集,用于裁剪原始图像。

肝肾脾器官识别模型

使用TotalSegmentator的器官分割结果,训练另一个mobilenetv3_small_050模型(256x256分辨率)来识别各切片中器官的存在情况。

肝肾脾损伤检测模型

在比赛最后一周,我标注了部分器官损伤的切片标签用于训练2D切片级模型。这些标签现已公开在Kaggle数据集平台

我使用ConvNeXt-tiny模型训练2D切片标签,添加线性层将特征维度降至256。模型输入为裁剪后的288x384图像,包含肾脏损伤的左右侧信息。该模型用于提取每张切片的特征:将CT体积重采样为128张图像,得到128x256的特征序列。

使用3层Transformer处理该序列预测序列级标签,采用加权二元交叉熵损失模拟比赛评估指标。由于验证损失波动较大,同时监控AUC确保模型正常学习。

肠道损伤检测模型

使用官方提供的切片级标签,采用类似上述的CNN-Transformer架构。仅进行图像级裁剪(因肠道分布于更多切片),图像分辨率调整为384x512。

造影剂外渗检测模型

基于我标注的边界框,将384x512图像分割为12个128x128的非重叠区块,标注每个区块为损伤/健康。使用ConvNeXt-tiny训练区块分类器并提取特征(每图12x256维序列)。

使用3层Transformer处理区块序列预测切片级标签,再对重采样后的128张图像序列(128x256)进行第二级Transformer训练预测序列级标签。此方法比直接训练2D CNN效果更优。

推理策略

  • 使用5折交叉验证模型集成
  • 患者级预测:多序列结果取平均
  • 对每个标签组应用Softmax归一化
  • 所有概率取平方根缩放(提升私有榜分数0.4)
  • OOF CV分数:0.375

补充思考

我曾尝试3D模型,但训练时间过长且性能不佳。也曾考虑使用器官分割结果裁剪训练,但时间不足。实验表明:

  • 堆叠多切片作为通道的方法效果略差
  • 融合三种模型特征的单Transformer方案性能下降
很高兴获得个人第10枚Kaggle金牌。

同比赛其他方案