返回列表

Second Place Solution

339. Recursion Cellular Image Classification | recursion-cellular-image-classification

开始: 2019-06-27 结束: 2019-09-26 药物研发 数据算法赛
第二名方案

第二名方案

作者:Junonia (Team: sharkswithlasers)
比赛:Recursion Cellular Image Classification

感谢 Recursion 和 Kaggle 赞助这场非常有趣的比赛,也祝贺所有完成这段旅程的参赛者。我们学到了很多,也很享受整个过程。非常期待向其他团队学习解决方案。

输入与预处理:

  • 6 通道输入,
  • 单张图像标准化(减去均值并除以标准差),
  • 随机裁剪至 384x384,
  • 随机翻转,
  • 随机旋转 90 度的倍数。

建模:

我们修改了 ResNet 以限制输出的感受野大小,因为我们怀疑单个细胞及其紧邻区域包含了最具判别力的信息。以下是我们对原生 ResNet 所做的修改列表:

  • 更少的块。ResNet 通常有 4 组块,我们的一些模型只有 2 组。
  • 更多的 1x1 卷积块
  • 来自低层块的平均池化,与来自高层块的平均池化进行拼接
  • 移除第一个卷积后的直接最大池化
  • 在快捷连接层中用 3x3 卷积代替 1x1 卷积。这增加了训练期间测试准确率的平滑度,但仅略微提高了最终测试准确率。

我们使用了所有的阴性和阳性对照(包括测试板中的那些)作为训练集的一部分。输出为 1139x4 的 logits。

损失函数:

我们使用了 bestfitting 发布的 ArcFace loss。我们将 gamma 参数设为可调。起初我们在让 ArcFace 收敛方面遇到了困难,直到我们调整了 gamma 参数。我们的设置为 gamma = 0.2, m = 0.4, s = 32

优化器:

Adam 优化器,计划如下:

0-20: 线性预热至 3e-3
20-60: 3e-3
60-80: 9e-4
80-90: 3e-4
90-100: 3e-5
100-120: 3e-6

后处理:

  • 按板对嵌入进行中心化。
  • 对来自两个位点的嵌入取平均,以获得每孔嵌入。
  • 对于每个细胞系,通过对 siRNA 嵌入取平均来获得训练中心嵌入。
  • 计算每个孔的嵌入与训练中心嵌入之间的余弦相似度。
  • 使用 LSA 基于 277 个泄露数据计算标签分配。

伪标签:

由 5 个模型组成的集成模型在不使用伪标签的情况下,Public LB 分数为 0.993,Private LB 分数为 0.9957(单模型分别为 0.990 和 0.9947)。然后,我们收集了所有 Public LB 分数在 0.990 以上的预测,并确定了 327 个不一致的样本。所有不在这 327 个样本集中的测试预测随后被用作伪标签。在该伪标签集上训练的集成模型达到了 Public LB 0.997 和 Private LB 0.9967 的成绩。我们还尝试向训练集中迭代添加更多伪标签(每个实验 500、700、900 个),但这并没有提高我们的 Public LB 分数。

同比赛其他方案