第5名方案 [NS embedding]
第5名方案 [NS embedding]
感谢主办方和组织者举办了如此具有挑战性的比赛!
思考如何生成好的图像嵌入是一件非常有趣的事情。同时也感谢我的队友和所有参赛者的辛勤付出!
关键点
- 数据集调整
- 使用在 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)
同比赛其他方案