353. Kannada MNIST | Kannada-MNIST
非常感谢 Kaggle 和 @higgstachyon 举办这次比赛,这是一次很棒的学习经历,让我能从其他参赛者那里学到很多知识,祝贺所有的获奖者!
CNN(卷积神经网络)
1. 5折交叉验证,结果取平均(或多数投票)
2. 图像增强:
平移、旋转、剪切和缩放。
3. 带有 Squeeze-and-Excitation Block(SE block)的 CNN
可以在我的 kernel 中找到一些简单的解释。
4. 通用训练技巧
学习率衰减、早停。
5. 对测试数据进行伪标签(最有效)
6. 训练 Dig-MNIST 数据集时的技巧
正如 帖子1 和 帖子2 中所讨论的,你可能会发现如果直接将 Dig-MNIST 数据集添加到训练数据集中,模型的效果会变差。Dig-MNIST 数据集存在一些问题,例如边缘截断效应、非母语用户的书写风格等,这可能会导致原始模型的性能下降。
我的基线模型(仅使用 60k 训练数据训练)在训练集上获得了约 99.8% 的准确率,但在 Dig-MNIST 数据集上只有约 90% 的准确率。虽然很难在那剩余的 10% 图像上很好地泛化,但这也意味着你的模型仍然能够正确预测大部分图像。因此,我通过以下步骤利用 Dig-MNIST 进行训练:
流程图如下所示:
伪标签和 Dig-MNIST 数据集训练明显提高了我的 LB 分数:
从 (私有/公开):0.9890/0.9894 提升到了 0.99160/0.99120。
一些实现细节:
torchvision.transform.RandomAffine(degree=15, translate=(0.25,0.25),scale=(0.7,1.1),shear=8)1. 更多折数的交叉验证(高达 20 折)
2. 更多的图像增强:
ColorJitter(亮度、对比度...)会使模型变差。此外,你可能需要避免垂直翻转,因为这会导致相似数字(如 6 和 9)的错误分类。
3. 关键子类分类(0 和 1,6 和 9)
4. 在“原生”分类器之后进行分类
为了应对这篇 帖子 中