我们的解决方案:第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。
预测
无效的方法
- Mix-up
- ArcFace
- AdaCos
- 可变形卷积网络 -