返回列表

5th place solution[NS embedding]

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

开始: 2022-07-11 结束: 2022-10-10 计算机视觉 数据算法赛
第5名方案 [NS embedding]

第5名方案 [NS embedding]

※2022/10/12 由于排名变动,标题已更改。
※2022/10/18 添加解决方案代码:GitHub链接
※2022/10/19 添加 arXiv 论文:arXiv链接

感谢主办方和组织者举办了如此具有挑战性的比赛!
思考如何生成好的图像嵌入是一件非常有趣的事情。同时也感谢我的队友和所有参赛者的辛勤付出!

关键点

  • 数据集调整
  • 使用在 LAION-2B 上训练的 CLIP 视觉编码器
  • 仅训练头部,使用 ArcFace
  • 强正则化 (weight_decay=0.1)
  • 使用特征(归一化的原始高度、原始宽度、原始长宽比)
  • TTA (测试时增强)
  • 调整大小时设置 antialias=True

数据集

验证

  • 为了观察零样本的性能,我们准备了一个测试集,其中仅包含训练集和验证集中不存在的类别的数据
    • 训练_验证 测试集划分:StratifiedGroupKFold(n_splits=20).split(X, y=< 使用的数据集 >, groups=< 类别标签 >))
    • 训练 验证集划分:StratifiedKFold(n_splits=20).split(X, y=< 类别标签 >))
  • 在提交时,我们使用了在测试集中 MAP5 较高的 epoch 的权重

模型

使用来自 OpenCLIP 的在 LAION-2B 上训练的 ViT 作为 ArcFace 的骨干网络非常重要。OpenCLIP 比官方的 openai/CLIP 更强大。

此外,将图像尺寸信息添加到嵌入中将公共 LB 分数提高了约 0.003。

  • 骨干网络:OpenCLIP ViT-H/14 224x224
  • 头部:BatchNorm1d(num_features=1024+3, affine=False) -> Linear(num_features=1024+3, out_features=64)
    • num_features 设置为 +3,因为归一化的原始高度、原始宽度、原始长宽比被拼接到骨干网络的嵌入中
  • 损失函数:ArcFace(scale=30.0, margin=0.5)
同比赛其他方案