返回列表

16th place solution : segmentation & meta-classifier

535. RSNA Screening Mammography Breast Cancer Detection | rsna-breast-cancer-detection

开始: 2022-11-28 结束: 2023-02-27 医学影像分析 数据算法赛
第16名方案:分割与元分类器

第16名方案:分割与元分类器

作者: Hyeongchan Kim | 排名: 16th

大家好!

首先,感谢 Kaggle 团队和组织者举办这次比赛!同时,祝贺所有的获奖者!

数据

预处理

我的预处理代码很大程度上依赖于公开的 Notebook(例如:去除字母、通过轮廓裁剪乳房)。

  1. 使用 dicomsdlnvjpeg2000 解码 .jpeg 文件。
  2. 裁剪边缘(边缘像素 10)。
  3. 使用 opencv2 提取乳房区域(基于轮廓)。
  4. 调整大小至 1536x960。(我粗略估计调整为 1.5 ~ 2.0 的长宽比是可以的。)

在我的实验中,窗技术对分数没有正向影响,所以我决定不使用它。

数据增强

强数据增强效果很好。轻度增强往往会导致过拟合。

  • 垂直/水平翻转
  • 缩放 / 旋转
  • 亮度 / 对比度
  • Cutout(大补丁尺寸的粗粒度 Dropout)
  • Mixup

架构

由于缺乏时间和计算资源,我无法花费大量时间运行各种实验。因此,我只测试了少量的主干网络和训练方案。(大约 70% 的提交都是运行时错误和失误,哈哈)

这是一个完整的流程。

  1. 使用 cbis-ddsmvindr 数据集预训练分割模型。
    • 分割:提供的 RoI 图像。
    • 标签:malignant(恶性)标记为癌症 / BIRADS 5 标记为癌症。
      当然,标签并不完全符合比赛标准。但我粗略地认为,也许这在某些方面有助于训练模型。
  2. 使用比赛数据进行训练(使用预训练模型的权重进行初始化)
    • 分割:使用预训练模型进行推断。
    • 辅助:给定的元特征(共 11 个特征)。
  3. 使用 步骤 2 的模型重新标记外部数据。
  4. 使用比赛数据重新训练(使用 步骤 3 的模型进行初始化)。
  5. 训练一个元分类器(oof + 元特征(例如:侧别、年龄等))。

作为基线,我运行了步骤 1 ~ 2 和 5,达到了 CV 0.4885,LB 0.59(PB 0.46)。此外,我只使用 cbis-ddsm 数据集进行预训练测试,CV 和 LB 下降了约 0.02,但 PB 分数相同(CV 0.4656,LB 0.57,PB 0.46)。

截止日期前一周,我完成了步骤 ~ 5,得到 CV 0.5012,LB 0.55(PB 0.51)。遗憾的是,我没有选择它作为最终提交 : (

比赛最后一天,我集成了 effnet_v2_s 主干网络,得到 CV 0.5063,LB 0.56(PB 0.49)。

最后,我选择了 LB 和 CV 最好的模型作为最终提交。

元分类器

我使用年龄、侧别等元特征以及预测值的(每侧乳房)统计数据构建了一个元分类器。通常,它能在 CV 和 LB(以及 PB)上带来约 0.02 的提升。

我担心会对某些元特征(例如:机器 ID、(预测的)密度等)过拟合,所以我决定只使用 3 个辅助特征(年龄、site_id、侧别)来训练模型。

  • 特征:年龄、site_id、侧别、预测值的(均值、标准差、最小值、最大值)。
  • 交叉验证:分层 K 折(5 折)
  • 模型:CatBoost

有效方法

  • 更高的分辨率(1536x768 ~ 1024)效果更好。
  • 外部数据
    • 它带来了约 +0.02 的提升。