返回列表

15th Place Solution

672. RSNA Intracranial Aneurysm Detection | rsna-intracranial-aneurysm-detection

开始: 2025-07-28 结束: 2025-10-14 医学影像分析 数据算法赛
第 15 名解决方案 - RSNA 颅内动脉瘤检测

第 15 名解决方案

作者: TakafumiOuchi
比赛: RSNA 颅内动脉瘤检测 (RSNA Intracranial Aneurysm Detection)
发布日期: 2025-10-22
排名: 第 15 名

感谢 RSNA 和 Kaggle 团队举办如此有趣的比赛。
通过这次比赛,我学到了很多关于图像处理和人工智能的知识。
在这里,让我分享我的解决方案概述。

概述

  • 两个 Transformer 的集成(14 个输出的加权平均:13 个位置 + 动脉瘤存在)
  • 每个 Transformer 聚合由第一阶段 Faster R-CNN 提取的 RoI
  • 模型 1:2.5D Faster R-CNN (3 通道输入,ResNet-50 骨干) + DeiT-Small Transformer
  • 模型 2:2.5D Faster R-CNN (5 通道输入,ConvNeXtV2-Tiny 骨干) + DeiT-Small Transformer

策略

作为一名在综合医院工作的放射科医生,我想开发一个利用领域知识的模型。
通过探索性数据分析,我发现数据集包含轴向、冠状和矢状图像。
我还发现某些体积数据的方向余弦矩阵存在错误。
由于仅基于 DICOM 标签无法确定所有图像的方向,
我决定开发一个无论图像方向如何都能进行推理的模型。

数据管道

  • 所有体积重采样到相同的体素间距(2.0 mm 切片厚度,0.5 mm 平面内像素间距)
  • 通过简单的基于规则的方法裁剪和填充到 depth × 384 px × 384 px
  • 训练:从每个体积中提取所有解剖平面(轴向、冠状、矢状)
  • 推理:仅提取最精细的解剖平面(较少插值)

第一阶段:2.5D Faster R-CNN

通用训练策略

  • Loss: torchvision Faster R-CNN 默认
  • Optimizer: AdamW
  • Scheduler: OneCycleLR
  • Batch size: 32
  • Sampling: 所有阳性切片 + 3–10 个阴性切片(训练期间逐渐增加)
  • augmentation:
    • 使用 albumentations 进行 Affine, ElasticTransform, GridDistortion, MotionBlur, RandomBrightnessContrast, GaussNoise
    • 水平翻转并交换标签(左 ↔ 右)

模型 1

  • 骨干:torchvision/fasterrcnn_resnet50_fpn_v2
  • 输入:3 通道(中心切片 + 两个相邻切片,384 × 384 px)
  • Ground truth: 动脉瘤中心周围 96 px (48 mm) 边界框
  • Anchors: 5 种尺寸 (64, 80, 96, 112, 128 px) × 3 种纵横比 (0.5, 1.0, 2.0)
  • Learning rate: 1e-4 → max 1e-3

模型 2

  • 骨干:timm/convnextv2_tiny.fcmae_ft_in22k_in1k
  • 输入:5 通道(中心切片 + 四个相邻切片,384 × 384 px)
  • Ground truth: 动脉瘤中心周围 64 px (32 mm) 边界框
  • Anchors: 3 种尺寸 (56, 64, 72 px) × 3 种纵横比 (0.8, 1.0, 1.2)
  • Learning rate: 2e-5 → max 2e-4

第二阶段:DeiT-Small Transformer

  • 预训练权重:timm/deit_small_patch16_224
  • 流程:1024 维 Faster R-CNN RoI 特征 → 384 维 ViT 嵌入 → 3D 正弦位置编码(基于 Faster R-CNN 输出)
  • 位置头:13 路多标签分类(带有标签平滑的 BCEWithLogitsLoss)
  • 存在头:二分类(带有标签平滑的 BCEWithLogitsLoss)
  • 损失 weighting: 1.0 × 位置损失 + 0.1 × 存在损失
  • 两阶段训练:
    1. 冻结所有 ViT 骨干层
    2. 解冻所有权重
  • Optimizer: AdamW
  • Scheduler: OneCycleLR (stage 2)
  • 分层学习率 (stage 2):
    • 分类头:4e-4 (最大学习率)
    • ViT 顶部 4 块:2e-4 (最大学习率)
    • ViT 底部块:1e-4 (最大学习率)
    • RoI 投影器:1e-4 (最大学习率)
  • Batch size: 32
  • 模型使用 20 倍增强的缓存 RoI 特征进行训练

分数

模型 公有榜 私有榜
模型 1 (仅 Faster R-CNN) * 0.78602 0.77517
模型 2 (仅 Faster R-CNN) * 0.78177 0.75816
模型 1 (Faster R-CNN + Transformer) 0.80415 0.78740
模型 2 (Faster R-CNN + Transformer) 0.80140 0.77955
最终集成 (加权平均) 0.82494 0.80592
*: 为了计算 14 个概率,我提取了每个位置的最大概率,并使用最大值作为动脉瘤存在概率。
同比赛其他方案