508. HuBMAP + HPA - Hacking the Human Body | hubmap-organ-segmentation
首先,我要感谢 Kaggle 和竞赛主办方举办了如此精彩的比赛。
我也要感谢 MMSegmentation 的开发者。MMSegmentation 真的是非常好用且实用的工具。同样非常感谢 @ayuraj,他在 MMSegmentation 中集成了 Weight & Biases 的钩子,这对管理训练历史帮助极大。
在比赛中,我从 @hengck23 那里学到了很多。非常感谢您与我们分享知识:)
我使用了以下方法:
使用的数据集:
(肺部) 当我注意到不稳定的结果源于肺部预测时,我想手工标注可能比通过低阈值预测肺部更好,因为低阈值可能导致不稳定且不确定的结果。所以我研究了肺泡的样子,并从头开始手工标注肺部图像。由于没有任何关于如何标注肺泡的信息,我制作了大约 7 个标注集,在其中逐渐标注潜在的肺泡并探测哪个最好。然后我使用伪标签和最佳阈值创建了一个外部数据集。在使用它进行训练后,肺部的最佳阈值增加到了 0.60,这带来了有史以来最好的结果。我猜想良好的建模优于手工标注,因为有些人在公开/私有榜单上获得了 0.11/0.22 的分数。
(脾脏) 对外部数据集使用了伪标签。
(前列腺/大肠) 对 HPA 数据集使用了伪标签。
我感觉我的模型对 HPA 数据集欠拟合,因为这些数据集在颜色方面没有侧重于 HPA 数据集。使用了 torchstain 作为染色工具。
以下模型的集成:
部分模型使用了不同的预训练模型、种子和额外的染色数据集。所有模型都是 SegFormer 的原因是我只从 MMSegmentation 中选择模型,而且效果很好。
*最佳单模型是 mit-b4(私有: 0.82821)。
我使用了 Google Colab。由于 GPU 资源有限,我使用组归一化以 batch_size=1 训练 SegFormer。在我的实验中,这在 CV 和 LB 上都优于使用批归一化的 batch_size=4。我选择 2 类分割而不是 6 类分割,因为它始终显示出更好的结果,尤其是在肺部。在 6 类中,肺部区域往往会收缩,即使面积与 2 类相当,LB 肺部分数也更差。
设置:
数据增强: