返回列表

2nd place solution

483. Happywhale - Whale and Dolphin Identification | happy-whale-and-dolphin

开始: 2022-02-01 结束: 2022-04-18 计算机视觉 数据算法赛
第二名方案
作者: ishikei (团队: takuoko, ishikei, tascj0) | 比赛: Happy Whale and Dolphin

感谢比赛主办方、Kaggle 和所有参与者。同时祝贺获胜者们。
非常感谢 @jpbremer。我们使用了公开的全景数据集和标注作为我们的主要数据集。如果没有它,我们无法在短时间内取得高分。

单模型

数据集

使用了两个不同的数据集。

  • 全景数据集 (yolov5): 由 yolov5 裁剪的数据集
  • 全景数据集 (yolox): 使用上述标注作为真值 (GT) 并训练了 yolox。

在比赛最后一天之前,所有模型都使用全景数据集 (yolov5) 进行训练。最后,使用全景数据集 (yolox) 对少数模型进行了几个 epoch 的微调。

模型

efficientnet_l2 在验证中效果最好。

训练配方

  • backbone = tf_efficientnet_l2_ns
  • 图像大小 (img_size) = 768
  • 损失函数 (loss) = 带自适应边距的 Arcface
  • 数据增强 = 水平翻转, RandAugment
  • 优化器 = SGD
  • 学习率调度 = 带预热的余弦衰减
  • batch_size = 16 (每 GPU)
  • epoch 数 (n_epoch) = 20

RandAugment 显著提高了验证分数。

伪标签

这是在排行榜上获得高分的关键。

我们使用训练好的模型的全连接层预测 ((logits * scale).softmax(-1)) 来生成伪标签。置信度阈值设定为 0.8。
每一轮伪标签训练都是从 ImageNet 预训练权重开始的。

以下是每一轮的排行榜分数。我们从第 3 轮开始使用翻转测试。

伪标签轮次: backbone = efficientnet_l2

伪标签轮次 数据集 公开分数 私有分数
初始模型 (round1) fullbody (yolov5) 0.846 0.812
round2 fullbody (yolov5) 0.875 0.849
round3 fullbody (yolov5) 0.885 0.860
round4 fullbody (yolov5) 0.889 0.862
round5 fullbody (yolov5) 0.887 0.863
round5 (微调) fullbody (yolox) 0.891 0.870

提交生成

常规的图像检索方法。计算与训练数据集的余弦相似度并获取 top5 的 ID。

使用固定的 0.5 余弦相似度阈值来插入 “new_individual”。没有特殊的后处理,例如针对特定物种的阈值。

最终集成

最终提交是以下 4 个 efficientnet_l2 模型的集成。(公开分数=0.897 / 私有分数=0.872)

集成模型: 所有 backbone = efficientnet_l2

伪标签轮次 图像大小 数据集
round3 (1024,