返回列表

32nd Place Solution

434. Human Protein Atlas - Single Cell Classification | hpa-single-cell-image-classification

开始: 2021-01-26 结束: 2021-05-11 生命科学 数据算法赛
第32名方案

第32名方案

作者: Hung Quoc To
比赛排名: 第32名

在过去的几个月里,我尝试解决一个有趣的问题,这是一段很棒的经历。感谢所有参与者的精彩想法和 Notebooks,它们帮助我取得了最终结果。我从大家身上学到了很多。感谢主办方团队在比赛期间一直以来的支持。

概览

我解决方案的主要组成部分:

  • 两阶段流水线 —— 细胞级与图像级预测
  • 消除重复图像 —— 提高验证的可靠性
  • 更快速版本的细胞分割
  • 外部数据集
  • 增加模型集成时的多样性:在绿色通道/RGB、8位/16位图像上训练的模型

正如比赛所述,我们要处理的是一个弱监督语义分割问题,只有图像级别的标签,而没有细胞级别的标签。任务是为包含多个细胞的图像预测每个细胞的标签。

训练单阶段模型来预测每个细胞的标签是很困难的,因为我们没有真实目标,而使用图像标签作为目标会使训练充满噪声。其思路是每个细胞的标签继承了图像标签的一部分,因此利用图像预测作为上下文来纠正每个细胞的预测,相比于独立预测每个细胞会更加有效。

训练细节

数据集

比赛数据集 + 外部数据集

预处理

正如其他参与者所指出的,训练数据集包含一些重复的图像,就像上一届比赛一样。直接在训练中使用该数据集会降低验证的可靠性。所以我做的第一件事就是尝试删除完整数据集中的所有重复图像。

细胞分割

所有细胞掩码都是使用主办方提供的 HPA Cell Segmentator 提取的,因为它在分割细胞方面做得很好。然后将每个 R、G、B 通道组合成一个单独的 RGB 图像,并保存为一个新的数据集。这将问题简化为仅仅是弱监督多标签分类。

模型

为了最大化集成的效果,使用了不同的骨干网络和输入。这增加了我的模型的多样性。

细胞级模型

  • 输入:从 HPA Cell Segmentator 提取的绿色通道/RGB 细胞图像
  • 数据增强:水平与垂直翻转、随机裁剪
  • 数据集:比赛与外部数据集
  • 轮数:2 到 4
  • 骨干网络:Resnet50, Efficientnet-b5
  • 损失函数:BCEWithLogitLoss
  • 优化器:Adam
  • TTA:原始数据 1 次 + 4倍增强

图像级模型

  • 输入:绿色通道/RGB 图像,8位/16位图像
  • 数据增强:水平与垂直翻转、旋转、剪切、平移、缩放、随机亮度
  • 数据集:比赛与外部数据集
  • 轮数:40 到 50
  • 骨干网络:Resnet50, Densenet121, Efficientnet-b0, b1, b2, b3, b5, b7
  • 损失函数:SigmoidFocalCrossEntropy
  • 优化器:Adam
  • 学习率调度器:One-cycle
  • TTA:原始数据 1 次 + 4倍增强

集成

  • 对细胞级和图像级预测分别进行加权平均集成
  • 最终预测公式:0.25 * cell_prediction + 0.25 * image_prediction + 0.5 * sqrt(cell_prediction * image_prediction)

其他

负类:

  • 通过用 P(neg) = prod(1 - P(cls_i)) 替换负类的预测,我的公共排行榜分数提高了约 0.003。

无效尝试

  • 通过计算平均像素强度来手工标记阴性细胞(公共排行榜分数下降)
  • 消除边缘细胞(对公共排行榜分数无显著影响)
同比赛其他方案