返回列表

Private 55th Solution and Lessons Learned

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

开始: 2022-07-11 结束: 2022-10-10 计算机视觉 数据算法赛
第55名方案分享与经验教训

第55名方案分享与经验教训

作者: khyeh (Grandmaster) & KKY (Master)

感谢 Kaggle 和 Google 举办了这场精彩的比赛,我和 @evilpsycho42 在比赛中度过了非常愉快的时光。在我目前参加的所有比赛中,这是一场非常特别的比赛,它要求参赛者收集各个领域的图像数据集,以训练出性能尽可能最佳的模型。

感谢 @dschettler8845 发起了外部数据讨论帖并提供了链接列表,这帮我们节省了大量寻找数据的时间。

方案概览

数据

数据集:

  • 服装:H&M
  • 地标:Google Landmark 竞赛数据
  • 包装商品:Product 10k, RP2K
  • 家具:Amazon 产品数据集
  • 店面:Storefront-146
  • 艺术品:MET
  • 菜肴:iFood

数据采样:

  • 根据这篇文章中提到的比例,为每个领域分配实例数量。
  • 在训练集和验证集中使用不同的 ID,因为我们希望模型能够泛化到未见过的实例上。

建模

  • 骨干网络:CLIP 224/336 L + 线性颈
  • 损失函数:ArcFace (scale = 10, margin = 0.3)
  • 训练流程:
    • 阶段 1:冻结骨干网络 + 余弦退火,warmup 0.1,lr=0.001,100个 epoch
    • 阶段 2:解冻骨干网络 + 余弦退火,warmup 0.1,lr=1e-5,20个 epoch
  • 采样策略:ID 均匀采样
  • 验证策略:
    • 使用与训练集不同的实例
    • 选取拥有 >1 张图片的实例作为查询图片,其余作为索引图片

结果

  • CLIP 224 L:CV 0.7949,Public LB:0.580,Private LB:0.598
  • CLIP 336 L:CV 0.8074,Public LB:0.597,Private LB:0.614

无效尝试

  • 模型融合:
    • 同时训练 Swin Large 384 + CLIP
    • 分别训练 Swin Large 384 + CLIP,结合两者的骨干网络并训练一个新的投影头
  • 使用显著性分割进行图像预处理/裁剪

经验教训

在看到了第6名的精彩方案后,我们意识到如果想要提升最终方案的表现,本可以做得更好:

  1. 我们应该尝试不同的骨干网络:例如 OpenCLIP ViT-H/14 224x224。
  2. 我们应该先尝试让模型过拟合。我们在冻结骨干网络的情况下,使用了较小的学习率和很少的 epoch 来训练投影头。虽然快速迭代很重要,但在最终方案中避免欠拟合同样重要!
同比赛其他方案