第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(水平翻转)
- 自动编码器
- 其他头部架构