返回列表

9th Place Solution

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

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

第9名方案

作者: Qishen Ha (Grandmaster) | 比赛排名: 第9名 | 发布日期: 2021-05-13

大家好,

这是一场非常艰难的比赛,祝贺所有坚持到最后的 Kagglers,非常感谢组织者以及我优秀的队友 @daishu@garybios@boliu0

摘要

我们在本次比赛中使用了两种流程,分别是:

  • 流程1: 在完整图像上训练,在单细胞上测试(遮罩掉其他细胞)。
  • 流程2: 在裁剪后的细胞上训练,同样在裁剪后的细胞上测试。

最后,我们利用这两种流程训练了约20个折次的模型,并通过取平均值的方式对它们进行了集成。

请注意,我们没有使用图像级别的预测。

方法

流程1

我们使用了两种方法来训练和测试这个流程。

第一种方法是使用 512 尺寸的图像进行训练,测试输入也是 512。我们对每张图像循环 n 次(n 是图像中细胞的数量),每次只保留一个细胞,并遮罩掉其他细胞以获得单细胞预测。

第二种方法是使用 768 尺寸的图像随机裁剪出 512 的区域进行训练,测试方式与第一种几乎相同,但不仅遮罩掉其他细胞,我们还将留下的细胞置于图像中心。

流程2

我们预先裁剪每张图像中的所有细胞并在本地保存。然后在训练期间,对于每张图像我们随机选择 16 个细胞。我们设置 batch size(bs)为 32,因此每个 batch 总共有 32x16=512 个细胞。

我们将每个细胞的大小调整为 128x128,因此数据加载器返回的数据形状是 (32, 16, 4, 128, 128)。接下来将其重塑为 (512, 4, 128, 128),然后使用一个非常普通的 CNN 进行前向传播,输出形状为 (512, 19)

在预测阶段,我们将直接获取该输出并将其用作每个细胞的预测值。↑

但在训练过程中,我们将这个 (512, 19) 的预测结果重新重塑为 (32, 16, 19)。然后根据图像级别的真实标签(GT label)计算每个细胞的损失。

致谢

特别感谢 Z by HP 和 NVIDIA 赞助我一台配备双 RTX6000 GPU 的 Z8G4 工作站和一台配备 RTX5000 GPU 的 ZBook 笔记本电脑!

自从去年十二月收到 Z8G4 工作站和 ZBook 以来,这已经是我在 Kaggle 赢得的第三枚金牌了 ;)

同比赛其他方案