508. HuBMAP + HPA - Hacking the Human Body | hubmap-organ-segmentation
献给乌克兰武装部队!
感谢乌克兰武装部队为乌克兰的科学和教育提供了机会!
大家好,来自 complex 团队!
首先,我要非常感谢 Kaggle 团队举办了如此精彩的比赛。
每次能成为如此杰出研究的一员,我都深感荣幸。
我要代表我们的团队向 @hengck23 致以诚挚的谢意。我们从您的 Notebooks 中学到了很多:)
能有这样一位值得学习的优秀竞争对手,总是一件令人愉快的事!
我们的提交结果经历了几个阶段。我们主要没有对数据进行任何预处理。虽然,在比赛的最后,我们发现标注存在缺陷,这可能导致掩码略微减弱并给训练增加了噪声 [在概述末尾阅读相关内容]
在尝试用一个模型训练所有器官并进行多次实验后,我们放弃了这个想法。原因是在 0.77 之后我们没有看到任何改善。
因此,我们认为模型需要关于器官类型的上下文信息。最初的实验设置了额外的辅助分类头来对每种器官类型进行分类。然而,这最终被证明是一条错误的道路;模型无法收敛,分数也没有提高。
然后,我们决定针对肺部和其余器官分别训练不同的模型。我们采用了这一策略,并在不同条件下继续训练模型:
我们基于最佳本地 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。