第二名解决方案
第二名解决方案
作者: ishikei | 发布时间: 2022-07-15
感谢比赛主办方、Kaggle 以及所有参赛者。同时祝贺获胜者。
概述
我们的解决方案是一个两阶段的流水线。第一阶段模型 (stage1) 预测正负切片,第二阶段模型 (stage2) 对被 stage1 预测为阳性的切片进行实际的分割。
我们解决方案的关键点是:
- 2 阶段流水线:正负检测 (stage1) → 分割 (stage2)
- 对于 stage2,增加骨干网络的大小可以提高 val_dice
- 2.5D - 3D 模型融合
单模型
2.5D 模型
输入
- 5 切片 2.5D 数据 (s-2, s-1, s, s+1, s+2) / 512 x 512
- 通过 YOLOv5 进行裁剪
- 此步骤有两个目的
- 背景去除:虽然基于规则的方法可以去除部分背景,但由于身体运动伪影等因素,有些模式无法正确裁剪。在这种情况下,基于 YOLO 的方法效果很好。
- 去除手臂信号:特别是在腹部 MRI 成像中,由于射频 (RF) 场 (B1) 的不均匀性,手臂周围的信号可能会异常高,从而产生热点。发生这种情况时,图像的最小-最大归一化效果不佳,因此在 YOLO 训练的标注阶段将手臂排除在外。


模型
- 骨干网络
- stage1 = Efficientnet B4, Swin Base
- stage2 = Efficientnet L2, ConvNeXt XL, Swin Large
- 对于 stage2,增加骨干网络的大小可以提高 val_dice
- 解码器 = UperNet
- CE / CE 和 Dice Loss (1:1)
- 训练 20 个 epoch,SWA range(11, 21, 1)
下面是 stage2 中每个步骤的 dice 分数,表明 yolo_crop、large_input 和 large_backbone 都在起作用。
stage2 (使用 gt_positive 切片训练) / 基线 = EfficientNet B4, 256x256
|
Dice @ positive slice |
| 基线 |
0.8011 |
| + YOLOv5 crop |
0.8162 |
| + 512x512 |
0.8277 |
| + backbone=L2 |
0.8349 |
3D 模型
模型
- stage1 = Unet3d, DynUnet (1000epochs)
- stage2 = Unet3d (500epochs)
- CE 和 Dice Loss (1:1)
- SWA range(300, 501, 10)
stage2 (使用 gt_positive 切片训练)