第39名解决方案
第39名解决方案
作者: imori
比赛排名: 第39名
感谢比赛主办方和各位参赛者!
这是第39名的解决方案。
模型
使用 PyTorch 实现的双头集成模型。
- 主干网络: ViT-H-14 + LAION2B
- Head1: Dropout(0.1) -> Linear(64) -> Normalize
- Head2: Linear(64) -> Normalize
- 输出: Head1 + Head2 (相加)
流程:ViT -> Head1 / Head2 -> Normalize -> 集成
在训练过程中,主干网络被冻结,仅使用 ArcFace 训练头部模块。
数据集
- Head1: GLR2021 + ImageNet1K + Products10K
- Head2: GLR2021 + ImageNet1K + Products10K + AlibabaGoods + FoodRecognition2022 + MET
无效尝试
部分尝试基于 TensorFlow 实现。
- ArcFace (大 s + 小 margin)
- SubCenter ArcFace (部分 K 值)
- AdaCos
- Head : SelfAttention + Linear
- Head : Linear, ReLU, Dropout, Linear
- Head : Linear, ReLU, Dropout, Linear, BatchNormalization
- 对比学习
- Focal Loss
- 单模型或集成其他 CLIP (RN50, ViT-B, ViT-L (224px, 336px), ViT-g), CNN, 其他基于 Arcface 的 Head
- 集成方法 (concat + AveragePooling, 加权相加)
- 使用其他数据集
疑问
- 数据增强效果不好?
- 在通道轴上进行拼接的集成方式看起来不错,但得分低于简单的 64 维模型
model1 -> 32dim, model2 -> 32dim, ensemble (64 dim)
- 实例级标签效果不好?
- 2阶段分类是否有效?第1阶段:类别分类,第2阶段:嵌入 (我没时间尝试)