401. Google Landmark Recognition 2020 | landmark-recognition-2020
祝贺所有的获奖者,感谢 Kaggle 和 Google 举办地标检索/识别比赛。
这是我在本次比赛中的简要解决方案。
从索引图像集中准确搜索相关图像非常重要。我根据 @keetar 提供的 Landmark Retrieval 2020 比赛第一名解决方案,训练了 EfficientNet B5、B6、B7 和 Resnet152 模型。这里我只描述我的训练策略与其不同之处,详情请参考他出色的解决方案。
损失函数:使用 ArcFace 代替 AdaCos 损失。
优化器:SGD(学习率 0.01,动量 0.9,衰减 1e-5)。
推理:输入 800x800 图像提取嵌入向量。
验证集:从 GLDv2 测试集中采样 200 张图像作为验证集,并使用 Google Landmark Retrieval Competition 2019 的所有真实图像作为索引数据集。
用训练好的 EfficientNet B7 模型替换主办方提供的 baseline kernel 中的模型后,B7 模型的公开/私有分数分别为 0.5927/0.5582。
验证集第 1 部分:来自 GLDv2 测试集的 1.3k 张地标图像(排除不在 8.1k 类别中的图像)。
验证集第 2 部分:从 GLD_v2x-GLD_v2c 中采样 2.7k 张图像。
验证集的索引图像集:来自 GLD_v2c 训练集的相关地标的所有图像,并采样一些其他图像以获得 20 万张图像。
这个策略在整个比赛过程中相当稳定,但不幸的是,私有测试集的分布与我的本地 CV 和公开测试集略有不同。我应该使用所有的 GLD-v2x 图像来生成索引图像集,因为许多地标图像并未包含在 GLD-v2c 中。
这种组合优于 delf+kdtree+pydegensac。
分数从 0.5927/0.5582 提高到了 0.6146/0.5756,这可以进入排行榜前十名。
虽然我强迫自己不要在后处理、寻找魔法或逆向工程上花费太多精力,但后处理在本次比赛中如此重要,以至于我不得不花大量时间分析模型结果并在验证集上设计规则。我尝试了去年获胜解决方案的规则,以下是有效的规则:
由于许多特征(ransac 内点、与索引图像的相似度、