返回列表

10th Place Solution

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

开始: 2022-11-28 结束: 2023-02-27 医学影像分析 数据算法赛
第10名方案

第10名方案

作者: moritake04
比赛排名: 第10名

首先,我要感谢比赛主办方组织了这场比赛,也要感谢各位参赛者。

非常高兴能在 Kaggle 赢得我的第一枚金牌!

概述

我的模型是一个非常简单的单输入模型,流程也很简单。(所以我没指望能拿金牌。)

我的最终模型是以下3个模型的简单平均集成。(模型名称来自 timm)

  • tf_efficientnetv2_s(无辅助损失)
  • tf_efficientnetv2_s(使用辅助损失)
  • maxvit_tiny_tf_384.in1k(使用辅助损失)
pipeline

基线是我自己搭建的,但与 @vslaykovsky 的方案 类似,实际上我也参考了它。

解决方案

  • 交叉验证策略
    • StratifiedGroupKFold (n=4, groups=patient_id)
  • 数据与预处理
    • 未使用外部数据。
    • 使用基于规则的方法进行 ROI 提取(参考:链接)。
    • 使用 nvJPEG2000 实现快速加载(参考:链接)。
    • 分辨率设置为:EfficientNet 为 1536x960,MaxViT 为 1536x768。
    • 通道数设置为 3(为了使用预训练模型)。
    • 应用了 Min-max 缩放 (-1.0 ~ 1.0)。
    • 应用了 VOI LUT。
    • 8 位深度。
    • 注意确保训练和推理之间的预处理流程保持一致。
  • 处理数据不平衡
    • Batch size 为 8。调整每个 batch 中多数类(非癌症)与少数类(癌症)的比例为 7:1。这本质上是一种过采样。
  • 数据增强
    • 我使用了 albumentations(一个数据增强库)。
import albumentations as A

A.HorizontalFlip(p=0.5)
A.VerticalFlip(p=0.5)
A.ShiftScaleRotate(shift_limit=0.1, scale_limit=0.2, rotate_limit=45, p=0.8)
A.OneOf([
    A.RandomGamma(gamma_limit=(50, 150), p=0.5),
    A.RandomBrightnessContrast(brightness_limit=0.5, contrast_limit=0.5, p=0.5)
], p=0.5)
A.CoarseDropout(max_height=8, max_width=8, p=0.5)
  • 模型参数
    • drop_rate: 0.8
    • drop_path_rate: 0.2
    • criterion: BCEWithLogitsLoss
    • optimizer: Adam (lr: 1.0e-4)
    • scheduler: OneCycleLR (pct_start: 0.1, div_factor: 1.0e+3, max_lr: 1.0e-4)
    • epoch: 5
    • batch_size: 8 (accumulate_grad_batches=4, 所以实际为 8*4=32)
    • fp16 (训练和推理)
    • 辅助损失 (Aux loss)
      • 辅助目标: site_id, laterality, view, implant, biopsy, invasive, BIRADS, density, difficult_negative_case, age