第3名解决方案【局部篇】
第3名解决方案【局部篇】
作者: 老肥 | 比赛: Happywhale and Dolphin Identification
恭喜所有的获奖者。感谢 Happywhale 和 Kaggle 主办了这场有趣的比赛。
感谢优秀的队友 @biglafe、@tikboa、@qiuyanxinjupiter、@cuteffff。祝贺我们!
完整的解决方案可以在这里找到,这是我们的部分解决方案。
-
简介。 在这部分解决方案中,我们使用了这个精彩的笔记本 backfin-detection-with-yolov5 来获取局部数据。主要思想是模型可以更容易地从带有背鳍(视为局部)的图片中学习,这可以用于与身体模型进行集成,并在最后替换所有没有背鳍的鲸鱼的预测结果。
-
模型。 模型 1 我们使用了带有 Arcface 的 effv1-b7,分辨率为 512x512,其 CV 分数约为 880;模型 2 使用了带有 CurricularFace + bnneck 的 effv1-b7,分辨率同样为 512x512,CV 分数也约为 880。训练笔记本可以在 这里 和 这里 找到,没有什么黑魔法。
-
训练。 我们使用 Kaggle TPU 资源训练上述模型,采用了 10 折随机分割中的 3 折,使用了由集成模型预测测试集产生的伪标签。
-
集成。 对于每一折,我们将 2 个局部模型和 6 个身体模型的嵌入拼接起来,总共 8 * 512 = 4096 维,用于计算距离并选择最近的结果,我们还使用了 new_id 替换进行后处理。请注意,在拼接嵌入之前,我们需要对每 512 维的嵌入内部进行归一化。我们的集成本地 CV 分数约为 0.930。
-
优化。 我们使用贝叶斯优化来寻找每个 512 维嵌入的最佳权重,这在 Private LB(私有排行榜)上也有效。
感谢您的阅读!