512. Google Universal Image Embedding | google-universal-image-embedding
非常感谢我的队友 @simjeg 和 Marcos,与你们合作非常愉快。作为一个团队,探索不同的数据集和降维技术非常有趣。最后,感谢举办这次比赛的工作人员。
代码仓库:G-Universal-CLIP 🔥 🚀
我们以著名的 open_clip 仓库内容作为基线。
我们的解决方案是集成了2个CLIP模型,使用带有自适应边际损失(adaptive margin loss)的子中心ArcFace(sub-center ArcFace)进行训练,每个模型生成一个512维的描述符。我们总共训练了9个模型,包括4个 ViT-L-14-336 模型和5个 ViT-H-14 模型。
然后将这9个模型的权重进行平均,制成了2个“模型汤(model soups)”。
我们利用两个模型的输出拼接创建了1024维的嵌入向量。然后使用PCA将维度从1024降低到64。
预训练模型来自 open_clip
ViT-L-14-336 : openai
ViT-H/14 on LAION-2B laion_s32b_b79k
Google Landmarks 2020 : https://www.kaggle.com/competitions/landmark-recognition-2020/data
Products-10k : https://www.kaggle.com/competitions/products-10k/data
我们发现使用更多数据进行微调并没有带来好处。产品和地标数据已经占本次挑战数据分布的50%。
我们在 G-Universal-CLIP 和我们的论文中提供了详细信息!请继续关注。
请注意,我们仅将 ObjectNet 用于离线验证,如该帖子所述:https://www.kaggle.com/competitions/google-universal-image-embedding/discussion/352644
在创建模型汤时,我们需要找到一种方法,在平均权重之前使模型多样化。我们决定在每次运行时使用不同的增强技术训练每个模型,然后训练一个没有增强的模型。对于最终的集成,我们使用了以下增强方法:
这些增强方法取自该解决方案:
同比赛其他方案