返回列表

26th place solution | Recursive Gated Convolutions + Lung Tiling

508. HuBMAP + HPA - Hacking the Human Body | hubmap-organ-segmentation

开始: 2022-06-22 结束: 2022-09-22 医学影像分析 数据算法赛
第26名方案 | 递归门控卷积 + 肺部切片
作者: Slavko Prytula (complex team) | 比赛排名: 第26名 | 发布时间: 2022-09-23

献给乌克兰武装部队!
感谢乌克兰武装部队为乌克兰的科学和教育提供了机会!


大家好,来自 complex 团队!
首先,我要非常感谢 Kaggle 团队举办了如此精彩的比赛。
每次能成为如此杰出研究的一员,我都深感荣幸。
我要代表我们的团队向 @hengck23 致以诚挚的谢意。我们从您的 Notebooks 中学到了很多:)
能有这样一位值得学习的优秀竞争对手,总是一件令人愉快的事!

我们的提交结果经历了几个阶段。我们主要没有对数据进行任何预处理。虽然,在比赛的最后,我们发现标注存在缺陷,这可能导致掩码略微减弱并给训练增加了噪声 [在概述末尾阅读相关内容]

概述

在尝试用一个模型训练所有器官并进行多次实验后,我们放弃了这个想法。原因是在 0.77 之后我们没有看到任何改善。
因此,我们认为模型需要关于器官类型的上下文信息。最初的实验设置了额外的辅助分类头来对每种器官类型进行分类。然而,这最终被证明是一条错误的道路;模型无法收敛,分数也没有提高。

然后,我们决定针对肺部和其余器官分别训练不同的模型。我们采用了这一策略,并在不同条件下继续训练模型:

  • 我们将全尺寸掩码缩放至 768 用于 ['kidney'(肾脏), 'largeintestine'(大肠), 'lungs'(肺), 'prostate'(前列腺), 'spleen'(脾)],+ 一些模型在训练集中排除了肺部进行训练
  • 对于肺部,我们只选择了 type1 掩码类型的肺部 [肺部分割部分],并通过首先将其缩放至 1024,然后使用核大小 512 和步幅 2 进行切片来预处理掩码批次

我们基于最佳本地 CV 分数,对 6 个模型应用不同权重进行了集成(每个模型 5 折)。另外,肺部仅使用了一个模型。

分割

在训练之前,我们将组织切片调整为 768 大小,并使用强数据增强进行训练。
我们发现强烈的色彩偏移和 dropout 噪声能产生良好的效果。

_transforms = A.Compose([
    A.VerticalFlip(p=0.5),
    A.HorizontalFlip(p=0.5),
    A.RandomRotate90(p=0.5),

    A.RandomBrightnessContrast(brightness_limit=(-0.02, 0.02), contrast_limit=(-0.02, 0.02), p=0.25),
    A.RGBShift(r_shift_limit=(-25, 25), g_shift_limit=(-20, 20), b_shift_limit=(-20, 20), p=0.5),
    A.HueSaturationValue(hue_shift_limit=(-15, 15), sat_shift_limit=(-15, 15), val_shift_limit=(-15, 15), p=0.5),
    A.CoarseDropout(max_holes=20, min_holes=7, p=0.5),
    A.ShiftScaleRotate(shift_limit=0, scale_limit=(-0.2, 0.2), rotate_limit=0, p=0.5),
    A.OneOf([
        A.GridDistortion(num_steps=5, distort_limit=0.05, p=1.0),
        A.ElasticTransform(alpha=1, sigma=50, alpha_affine=50, p=1.0)
    ], p=0.5),
])

最终的流程是一个模型动物园 :)

我们使用预训练的 ConvNext 和 HorNet 主干架构。对于解码器块,我们只使用了 UPerNet。

  • 内部消息:比赛结束后,我们发现具有递归门控卷积(用于高阶空间交互)和大感受野(7x7 卷积和全局滤波器)的 HorNet 对所有器官都给出了显著稳定的结果!
同比赛其他方案