[Public 272nd / Private 37th] 1 week solution
[Public 272nd / Private 37th] 1周解决方案
作者:Tawara (Grandmaster) | 发布时间:2021-02-20
首先,恭喜所有获得奖牌的参赛者,也感谢主办方和Kaggle团队。
大多数参赛者的分数差异很小。我非常期待第一名的解决方案 :)
简要总结
- 训练了10个图像分类模型,并通过1D-CNN、2D-CNN和权重优化进行集成。
- 使用合并的数据集(2019 + 2020)进行训练,但仅使用2020年的数据进行验证。
- 使用带有标签平滑(Label Smoothing,alpha=0.3)的交叉熵损失函数。
- 结果显示,简单的平均(我没有选作最终提交)比堆叠效果更好 😇
详细内容
数据
我使用了公开分享的合并训练数据集(2019 + 2020)。感谢 @tahsin 的分享。
图像分类模型
我使用了 timm 提供的以下10个模型。
- 小型模型: ResNet50D, ResNeXt50_32x4d, ECA-ResNet50D, ResNeSt50_fast_1s4x24d, RegNetY032
- 大型模型: ResNet100D, ResNeXt101_32x4d, ECA-ResNet101D, ResNeSt101, RegNetY080
训练
交叉验证
- 以分层K折方式分割合并的训练数据集(K=5)。
- 使用2019年和2020年的数据进行训练,但仅使用2020年的数据进行验证。
数据增强
Transpose(转置) -> HorizontalFlip(水平翻转) -> VerticalFlip(垂直翻转) ->
ShiftScaleRotate(平移缩放旋转) -> RandomResizedCrop(随机裁剪调整大小) ->
HueSaturationValue(色调饱和度亮度) -> RandomBrightnessContrast(随机亮度对比度) ->
OneOf(RandomErase, CoarseDropout, Cutout)(随机擦除/粗丢弃/剪切) ->
Normalize(归一化) -> ToTensorV2
其他设置
- 图像尺寸:512x512x3
- 最大 Epoch:10
- Batch size:64(小型模型),32(大型模型)
- 损失函数:带标签平滑的交叉熵
- 优化器:AdamW
- 权重衰减:1.0e-02
- 学习率:5e-04(小型模型),2.5e-04(大型模型)
- 调度器:CosineAnnealingWarmRestarts
集成
- 训练1D-CNN和2D-CNN,使用图像分类模型的输出作为输入
- 对图像分类模型的输出应用权重优化。