返回列表

6th place solution

336. SIIM-ACR Pneumothorax Segmentation | siim-acr-pneumothorax-segmentation

开始: 2019-06-24 结束: 2019-09-04 医学影像分析 数据算法赛
第6名解决方案

第6名解决方案

作者:WispZero, Yura Trubitsyn, Sergey Bryansky, ValeriyBabushkin
比赛:SIIM-ACR Pneumothorax Segmentation
排名:第6名

首先,我们要感谢 SIIM 和 ACR 举办了这场有趣的比赛。

我们的最终解决方案基于 EncodingNet(ResNets,尺寸为 512 和 1024)和 UNet(EfficientNet4, se-resnext50, SENet154,尺寸为 512, 640 和 1024)。我们的模型在团队合并前是独立训练和调整的,这为解决方案带来了很多的多样性。

最好的数据增强(augmentations)与裁剪和旋转有关。我们没有使用对比度和亮度变换。

损失函数:BCE+Dice(尝试过 Focal,但没起作用)

较低的图像尺寸会大大降低分数,因此全尺寸模型应该会更好。

技巧:

  • 在 EncondingNet 顶部进行分类,配合重型 TTA(11种方法)
  • 删除预测掩码中的小片段

另外我注意到 Horizontal Flip(水平翻转)增强降低了我的本地 CV 分数,但没有在 LB(排行榜)上检查它。

更新:

对于验证,我们使用了 4 折交叉验证。折数是使用 StratifiedKFold(n_splits=8) 沿 isPneumothorax 生成的。对于每个 单独模型,我们都做了 4 折混合模型。我们使用的数据增强如下:

AUG = Compose(
    [
       HorizontalFlip(p=0.5),
       OneOf(
           [
              ElasticTransform(
                  alpha=300,
                  sigma=300 * 0.05,
                  alpha_affine=300 * 0.03
              ),
              GridDistortion(),
              OpticalDistortion(distort_limit=2, shift_limit=0.5),
           ],
           p=0.3
       ),
       RandomSizedCrop(min_max_height=(900, 1024), height=1024, width=1024, p=0.5),
       ShiftScaleRotate(rotate_limit=20, p=0.5)
    ],
    p=1
)

模型详情

模型1 (Model1)

架构:EncNet (来自 pytorch-encoding),骨干网络为在 Pascal 数据集上预训练的 Resnet50

  • 首先,我们在 512 x 512 分辨率下使用 AUG 训练了 4 折混合模型。
  • 其次,我们在 1024 x 1024 分辨率下使用 AUG 训练了 4 折混合模型。
  • 最后,我们将这两个 4 折混合模型进行了平均。

损失函数:Dice
数据增强:AUG
TTA:翻转, Clahe 和 np.arange(-20, 21, 5) 角度旋转(共 10 种 TTA)

模型2-3 (Model2-3)

架构:两个 Unet 类模型,骨干网络分别为 SEResnext50SEResnet152,在 1024 x 1024 分辨率下训练。每个模型也沿 4 折进行了平均。

损失函数:Dice
数据增强:AUG
TTA:翻转

模型4 (Model4)

架构:Unet 类模型,骨干网络为 EfficientNetB4,在 640 x 640 分辨率下训练。同样沿 4 折进行了混合。

损失函数:加权 Dice + BCE
数据增强:AUG
TTA:无 TTA

最终模型

模型1模型2模型3模型4 的平均值。

分类阈值:~0.32
分割阈值: