返回列表

Our solution: 9th place

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

开始: 2019-06-27 结束: 2019-09-26 药物研发 数据算法赛
我们的解决方案:第9名

我们的解决方案:第9名

作者: Ivan Sosin (队长), Vladislav Myrov
比赛排名: 第9名

各位好,感谢大家出色的竞技精神和惊人的成绩!没有这种有利的压力,我们无法取得这样的分数。

我将描述分为两个主要部分:流程管道以及预测与后处理。

流程管道

  • 6通道图像。
  • 超分辨率。 在探索性数据分析期间,我们突然意识到单个细胞的大小相当小,卷积层可能难以学习所有模式。因此,我们使用了简单的双三次超分辨率技术。这确实提升了我们的分数。我们测试了高达 960 * 960 的尺寸。我们曾尝试使用 GAN(特别是 ESRGAN)来完成此任务,但与普通的双三次插值相比,其性能较差。
  • 基于实验的3折交叉验证 (3Fold by experiments)。
  • 将所有对照组加入训练。 我们尝试仅添加来自训练实验的对照组,但没有奏效。
  • 混合精度: 由于图像尺寸较大,由于显卡内存不可避免地短缺,我们决定仅使用混合精度学习。
  • 逐层解冻: 我们发现逐层解冻是模型不发散的关键条件。在前5个 epoch 中,我们每个 epoch 从头部解冻 20% 的层。据推测,这是因为混合精度——某种梯度爆炸或类似情况。
  • 度量学习 - CosFace 损失: 我们采用了我最喜欢的度量学习损失。我们也尝试了 ArcLoss 和 AdaCos,但在混合精度模式下它们无法收敛或结果较差。
  • 循环线性学习率退火。
  • 循环线性尺度退火: 这个想法受 AdaCos 启发。https://arxiv.org/abs/1905.00292,作者随着模型获得高分而降低尺度。S_max = 64, S_min = 24。
  • 不同细胞类型的类别也是不同的: 因此我们预测 1108 * 4 + 对照组的向量。这极大地改善了收敛。
  • 通过反向传播进行无监督域自适应: https://arxiv.org/abs/1409.7495。我们将板和细胞类型作为域标签,并将梯度反转层系数作为学习率和 CosFace 的 Scale 进行调度。
  • 主干网络: seresnet50 (图像尺寸高达 960), senet154 (高达 672), xception (高达 860), inceptionresnetv2 (高达 512), densenet161 (高达 840), densenet201 (高达 720)。
  • 带有动量的 SGD 优化器。我们尝试了 Adam、Lookahead 和 Ranger,但它们没有提高验证分数。
  • 梯度归一化。
  • 批次大小 = 16,累积至 32。
  • Focal loss:gamma = 32。

预测

  • 预测平衡。 当类别平衡时可以使用此技术。出色的实现:https://www.kaggle.com/c/quickdraw-doodle-recognition/discussion/73803#latest-438270
  • 渐进式预测。 思路很简单:对于每个实验,每个类别只能出现一次。因此,如果我们以高概率预测某个类别,那么该类别以较低概率被进一步预测的机会就很小。我们选取 50% 最可能的类别,将它们从考虑范围中移除,然后预测下一个样本,依此类推。
  • 数据泄露。

无效的方法

  • Mix-up
  • ArcFace
  • AdaCos
  • 可变形卷积网络 -
同比赛其他方案