434. Human Protein Atlas - Single Cell Classification | hpa-single-cell-image-classification
在过去的几个月里,我尝试解决一个有趣的问题,这是一段很棒的经历。感谢所有参与者的精彩想法和 Notebooks,它们帮助我取得了最终结果。我从大家身上学到了很多。感谢主办方团队在比赛期间一直以来的支持。
我解决方案的主要组成部分:
正如比赛所述,我们要处理的是一个弱监督语义分割问题,只有图像级别的标签,而没有细胞级别的标签。任务是为包含多个细胞的图像预测每个细胞的标签。
训练单阶段模型来预测每个细胞的标签是很困难的,因为我们没有真实目标,而使用图像标签作为目标会使训练充满噪声。其思路是每个细胞的标签继承了图像标签的一部分,因此利用图像预测作为上下文来纠正每个细胞的预测,相比于独立预测每个细胞会更加有效。
比赛数据集 + 外部数据集
正如其他参与者所指出的,训练数据集包含一些重复的图像,就像上一届比赛一样。直接在训练中使用该数据集会降低验证的可靠性。所以我做的第一件事就是尝试删除完整数据集中的所有重复图像。
所有细胞掩码都是使用主办方提供的 HPA Cell Segmentator 提取的,因为它在分割细胞方面做得很好。然后将每个 R、G、B 通道组合成一个单独的 RGB 图像,并保存为一个新的数据集。这将问题简化为仅仅是弱监督多标签分类。
为了最大化集成的效果,使用了不同的骨干网络和输入。这增加了我的模型的多样性。
细胞级模型
图像级模型
0.25 * cell_prediction + 0.25 * image_prediction + 0.5 * sqrt(cell_prediction * image_prediction)负类:
P(neg) = prod(1 - P(cls_i)) 替换负类的预测,我的公共排行榜分数提高了约 0.003。