508. HuBMAP + HPA - Hacking the Human Body | hubmap-organ-segmentation
首先,我们要感谢组织者为这场精彩的比赛所付出的努力。然后,我们要感谢 @hengck23,我们从你的代码和 notebook 中学到了很多。
这是我参加的第二次 Kaggle 比赛,也是我第一次参加图像分割比赛,我学到了很多东西,谢谢大家。
在这次比赛中,我们主要依靠双流模型(two-stream model)、模型集成的一些技巧以及推理阶段的染色归一化,没有使用任何伪标签或外部数据,也许这就是我们错失奖项的原因,哈哈哈 :)
起初,我们参考了 @hengck23 分享的代码,那是一个非常棒的基线代码。此外,根据我们的经验,我们发现从其他器官学到的知识可能会影响肺部图像的性能,因此我们提出了双流模型,一个流用于肺部图像,另一个模型用于其他器官。然后我们尝试了一些其他的编码器和解码器,最终的集成模型如下所示:
这是我们在训练和推理步骤中最重要的一部分,因为我们认为本次比赛最大的挑战是如何弥合 HPA 和 HuBMAP 图像之间的差距。我们使用的染色归一化方法来自 Staintools。
首先,在训练步骤中,我们通过随机使用 reinhard 和 vahadane 归一化方法,将 HPA 图像归一化到唯一的一张 HuBMAP 测试图像。这样模型就可以同时学习 HPA 特征空间和 HuBMAP 特征空间中的特征。
然而,仅仅在训练步骤中使用染色归一化是不够的,因为染色归一化仍然无法完美地转换特征空间,我们还需要在推理步骤中使用染色归一化,以便更好地弥合两个数据集之间的差距。
在推理步骤中,我们分别从训练图像中为五个器官选择了一张代表性图像。对于所有的 HuBMAP 图像,我们根据它们的器官标签,使用 vahadane 和 reinhard 方法将它们归一化为 HPA 图像,然后平均它们的预测结果以获得最终的预测掩码。
最终代码将在几天后发布,感谢阅读!