返回列表

10th Place Solution

512. Google Universal Image Embedding | google-universal-image-embedding

开始: 2022-07-11 结束: 2022-10-10 计算机视觉 数据算法赛
第10名解决方案

第10名解决方案

作者: Koo (合作者: yamash73, ksork6s4)
比赛排名: 第10名

恭喜所有的获胜者,感谢组织者和所有的参与者。这是我和我出色的队友 @yamash73@ksork6s4 共同撰写的解决方案(感谢我们团队出色的合作)。

有效的策略

  • 数据集的选择
  • 头部网络中的 BatchNorm1d
  • OpenCLIP 骨干网络的集成

数据集

我们注意到公共排行榜分数根据数据集的组合不同而有很大差异。因此,我们在比赛的早期阶段就在探索最佳的数据集组合。实验结果的比较表明,“Inshop”、“Instre”和“Consumer-to-shop”是有效的。基于这些结果,我们决定使用“Products10k”、“Landmark”、“Instre”和“Consumer-to-shop”作为我们的基本数据集组合。这里的“Inshop”和“Consumer-to-shop”是 deepfashion 的子集,因此我们的数据集组合中只选择了“Consumer-to-shop”。

数据集实验结果

注意:

  • 单独实验的结果证实 Products10k 和 Landmark 对提高 LB 分数有贡献。
  • 对于 Inshop、Stanford products 和 Consumer2shop,使用了样本量超过 5 的类别。

我们最终的数据集组合如下:

  • Products10k
  • Landmark
  • Instre
  • Consumer-to-shop
  • Food101(最后一周添加)

模型

我们最终模型的骨干网络是 3 个 OpenCLIP 图像编码器的集成。OpenCLIP 骨干网络对 LB 分数的巨大提升做出了贡献。我们参考了过去比赛(主要是 Google Landmark Retrieval 2021)中的头部/损失设计。

  • 骨干网络: OpenCLIP ViT-B + OpenCLIP ViT-L + OpenCLIP ViT-H
  • 头部: Linear + BatchNorm1d + PReLU + subcenter ArcFace(k=3)
  • 损失函数: 带有动态边距的 ArcFace Loss (s=30.0, mx=0.65, my=0.15) + focal loss
模型结构图

训练

像其他队伍一样,我们只训练了头部网络。起初,我们将总轮数设置为 20,但在实验表明我们可以在 5 个轮数内达到相同的性能水平后,我们得以增加尝试的次数。

  • 总轮数: 5
  • 批次大小: 512
  • 优化器: Adam (lr=1e-2, weight decay=1e-4)
  • 学习率调度器: CosineAnnealingLR (eta_min=1e-3, T_max=5)
  • 数据增强: RandomResizedCrop, HorizontalFlip, ImageCompression, HueSaturationValue, RandomBrightnessContrast, Blur, ShiftScaleRotate, CoarseDropout

无效的尝试

  • 使用 PCA 对嵌入进行降维
  • 不冻结骨干网络训练 OpenCLIP ViT
  • 使用显著性模型进行裁剪(预处理)
  • TTA(水平翻转)
  • 自动编码器
  • 其他头部架构
同比赛其他方案