第9名解决方案概述
第9名解决方案概述
作者: kenji (Grandmaster), ns64 (Grandmaster), tomotana14 (Master), ryoshih (Master)
比赛排名: 第9名
我们要感谢所有组织者举办了这场激动人心的比赛。
祝贺所有完成比赛的人以及获胜者。
我们仅在 PyTorch 上使用 GLDv2clean 数据集训练模型,并将它们转换为 TensorFlow 的 saved_model 格式。
然后,我们使用 GLR2019 公共和私有数据集对它们进行了验证。
最终提交
ResNeSt50 + ResNet101 + ResNet152 + SEResNeXt101
| 模型 |
输出维度 |
输入尺寸 |
GLR2019 mAP@100 |
Public LB |
Private LB |
| ResNeSt50 |
512 |
416 |
0.3114 |
0.335 |
0.292 |
| ResNet101 |
512 |
608 |
0.3243 |
0.346 |
0.303 |
| ResNet152 |
512 |
480 |
0.3180 |
0.336 |
0.288 |
| SEResNeXt101 |
512 |
480 |
0.3209 |
0.337 |
0.296 |
| 4个模型集成 |
2048 (拼接) |
- |
0.3396 |
0.361 |
0.317 |
模型细节
- 主干网络: ResNeSt50, ResNet101, ResNet152 和 SEResNeXt101 的集成
- 池化层: GeM (p=3)
- 头部结构: FC->BN->L2 (与去年第一名团队相同)
- 损失函数: 带有标签平滑的 CosFace (ArcFace 效果也不错,但 CosFace 更好)
- 数据增强: RandomResizedCrop, Rotation, RandomGrayScale, ColorJitter, GaussianNoise, Normalize, 和 GridMask
- 学习率: 带有预热 的余弦退火学习率,训练 30 个 epoch
- 训练时的输入图像尺寸: 352
尝试过且有效的方案
- 自动混合精度训练
- 在测试时将 GeM 的参数 p=3 替换为 p=4
- 在训练的最后几个 epoch 增加输入图像尺寸,并冻结 BN 层
- 测试时使用较大且多种输入图像尺寸:416, 480 和 608
- MVArcFace
尝试过但无效的方案
- PCA 白化
- 在测试时保持输入图像的纵横比(可能是因为我们的模型是在方形图像上训练的)
- 结合 arcface loss 和成对 loss(例如 triplet loss)
我们尝试过将 arcface loss 与成对 loss(特别是 multi-similarity loss)结合使用。然而,单独使用 arcface loss 效果优于多种 loss 的组合。
- EfficientNet
- Circle loss
- 移除噪声类别
我们尝试移除基于 arcface 类权重方差最大的 3 个噪声最严重的类别,但没有效果。
尚未尝试的方案
- 使用 GLDv1 数据集进行训练
- 在不改变图像纵横比的情况下进行训练