第14名方案,[0.989] Colab 和 Kaggle 内核
第14名方案,[0.989] Colab 和 Kaggle 内核
作者: Maksym Pyrozhok | 排名: 第14名
我要感谢 Recursion Pharmaceuticals 和 Kaggle 组织了这次比赛。我还要感谢所有参与者,特别是 nosound,他解释了关于数据泄露利用的方法并提供了示例代码。
我的解决方案完全使用免费的计算资源开发。比赛初期我使用的是 Colab,随后短暂切换到 Kaggle 内核,直到 Kaggle 强制执行 GPU 时间限制,之后又转回使用 Colab。我的最终提交是基于单个 densenet201 模型。
工具
- PyTorch 配合 Apex 以及少量的 Ignite。
数据
- 分辨率 6x512x512。起初我尝试使用较小的分辨率,但很快意识到全尺寸图像对于实现最大性能是必要的。
- 在数据增强方面,我使用了旋转、水平翻转、Cutout 以及随机亮度/对比度调整。我还使用了 4 张旋转 90 度的图像进行测试时增强(TTA)。
模型
- 使用 densenet201 配合 ArcFace 损失函数。
- 针对每种细胞类型分别设置 1108 个类别。
训练过程
- 使用 AdamW 优化器和带重启的循环学习率,采用三角调度策略。
- 在 10% 的训练数据集上进行验证,以找到模型开始过拟合的点。然后在完整数据集上训练,直到验证集显示有改善的周期为止。
- 使用周期中的最后一个检查点进行预测。
- 对两个位点的距离取平均值。
后处理
- 利用数据泄露。使用 lapjv 算法为每个板获取最大预测组合。
伪标记和混合不同模型的预测结果可能会提高我的分数,但遗憾的是时间和计算资源都不足。
祝贺获胜者!