返回列表

8th place solution: arcface + cosface + classification

437. Hotel-ID to Combat Human Trafficking 2021 - FGVC8 | hotel-id-2021-fgvc8

开始: 2021-03-10 结束: 2021-05-26 公共安全 数据算法赛
第8名方案:arcface + cosface + classification

第8名方案:arcface + cosface + classification

作者:Michal
比赛排名:第8名

非常感谢主办方举办了如此有趣的挑战赛,我希望其中一些解决方案能有助于改进目前用于人口贩卖调查的方法。

祝贺获奖者,最终的分数令人印象深刻,我迫不及待地想知道你们解决方案的秘诀。

动机

我以前从未做过反向图像搜索或图像相似度问题,所以我想尝试一些方法并学习新东西。此外,这场比赛非常有趣,而且解决方案可能会产生现实世界的影响,这让我非常想参加。

概述

我的解决方案没有什么特别之处。我训练了3种类型的模型:

  • ArcMargin 模型
  • CosFace 模型
  • 简单分类模型

使用相同的参数:Lookahead + AdamW 优化器,OneCycleLR 调度器,CrossEntropyLoss/CosFace 损失函数。

用作骨干网络的模型:eca_nfnet_l0, efficientnet_b1, ecaresnet50d_pruned。

这些模型随后被用来生成图像的嵌入,然后用来计算测试图像与训练数据集的余弦相似度。为了集成,我只是计算了不同模型相似度的乘积,然后找出不同酒店中最相似的前5张图片。

我计划训练更多的模型,但速度太慢了(在 Colab 上使用 T4 GPU,单个 epoch 需要 2-3 小时),而且我没时间了。所以最终我在我的最终集成中只使用了4个模型。

类型 骨干网络 嵌入尺寸 Public LB Private LB 轮次
ArcMargin eca_nfnet_l0 1024 0.6564 0.6704 6/6
ArcMargin efficientnet_b1 4096 0.6780 0.6962 9/9
Classification eca_nfnet_l0 4096 0.6691 0.6875 6/9
CosFace ecaresnet50d_pruned 4096 0.6702 0.6796 9/9
Ensemble 0.7273 0.7446

数据

我只使用了比赛数据,因为从未真正确认我们可以使用像 Hotels50k 这样的外部数据集。我将图像重新缩放到 512x512,并在需要时进行了填充。

有效的方法

  • 重度的数据增强
  • 余弦相似度(我尝试了欧氏距离、SNR 距离等,但余弦效果最好)
  • lookahead + AdamW 优化器
  • 更大的嵌入层——通常我发现嵌入层大小至少为最终目标数量的一半时效果最好(7770个目标使用了4096)
  • 更大的图像(512x512 比 256x256 好,1024 更好但训练太慢)
  • eca_nfnet_l0——这个模型在所有模型中得分最高,对我来说是 Shopee 比赛中发现的一块隐藏宝石

无效的方法

  • TTA(测试时增强)——我尝试使用 TTA 旋转图像并在 TTA 上使用最大相似度(或最小距离),但最终并没有提高分数
  • 聚类 + 投票——我尝试通过聚类根据嵌入获得预测,然后使用投票来集成不同的模型,但简单的搜索最相似图像和相似度乘积效果更好
  • 三元组损失——无法获得像样的分数,当我添加分类头时效果好了很多,但纯分类本身效果更好,所以我完全放弃了三元组
  • 在小图像上预训练 + 预训练并冻结某些层——全量训练效果要好得多
同比赛其他方案