返回列表

4th place solution

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

开始: 2022-02-01 结束: 2022-04-18 计算机视觉 数据算法赛
第4名方案
作者:Bo (Grandmaster) | 比赛排名:第4名

恭喜所有的获奖者。这是一场非常艰难的比赛。前两名的队伍在最后阶段发力很猛。再次感谢我的老队友 @haqishen 的精彩合作。

太长不看版 (TL;DR)

  • 使用 Yolov5 进行目标检测
  • 使用带有 DOLG CNN 骨干网络的 Dynamic Margin ArcFace
    • 最好的骨干网络是 ConvNext
  • 双头输出:同时预测 ID 和物种
  • 进行了 3 轮伪标签训练
  • 针对不同物种分别调整 new_individual 的阈值

目标检测 (Detection)

我们训练了图像尺寸为 512 的 yolov5m,共训练了 40 个 epoch。我们首先使用这个公共笔记本的预测结果作为标签。然后可视化那些 OOF(袋外)置信度较低的样本。如果预测的边界框是错误的,就将该样本从训练集中移除,或者修正其真实边界框。

我们对此过程迭代了 9 轮。最终,大多数 OOF 预测看起来都是正确的。OOF iou(交并比)达到了 0.93863。但是测试集中仍有一些预测边界框存在偏差。事后看来,我们也许应该像其他顶尖队伍那样从零开始标注数千张图像。

在获得预测的边界框后,我们将其扩展 20%,并将裁剪出的图像输入到 ArcFace 模型中。

模型

建模部分深受近期地标识别竞赛的影响。架构采用带有 DOLG CNN 骨干网络的 Dynamic Margin ArcFace。Dynamic margin arcface 是我们在去年的地标识别竞赛中引入的,详情见此处。DOLG 是由 @christofhenkel 在今年的地标检索竞赛中引入 Kaggle 社区的,详情见此处

不过,其他顶尖地标解决方案的组件在这里并不奏效,包括 sub-center arcface 和 Vision Transformers (ViT)。所有的 ViT 表现都不如 CNN。我们方案中表现最好的 CNN 是 ConvNext。

模型中唯一的变更是我们输出了两个头,同时预测 individual_id 和 species(物种)。

关于数据增强,我们使用了以下配置并加上了 mixup:

    A.HorizontalFlip(p=0.5),
    A.RandomContrast(limit=0.2, p=0.75),
    A.ShiftScaleRotate(shift_limit=0.0, scale_limit=0.3, rotate_limit=10, border_mode=0, p=0.7),
    A.HueSaturationValue(hue_shift_limit=20, sat_shift_limit=30, val_shift_limit=20, p=0.5),

训练步骤

  1. 在 5 折交叉验证上调整所有参数。即每折训练 80% 的数据,“牺牲”一部分 individual_id 以进行交叉验证。
  2. 集成 9 折模型来生成伪标签。
  3. 在 100% 的训练数据 + 伪标签测试数据上训练 6 个最佳模型。
  4. 从第 3 步的集成模型中生成新的伪标签。
  5. 重复第 3-4 步两轮。
  6. 集成最后两轮得到的 12 个模型。

在 3 轮伪标签训练中,单模型的平均 Public LB 分数分别为 0.855, 0.862, 0.865。

模型集成

表现最好的骨干网络是 ConvNext。为了增加多样性,我们还训练了 3 个非 ConvNext 模型。最终的 6 个模型为:ConvNext Base, Large, XLarge, EfficientNet B7, V2L, NFNet L2。我们针对不同模型使用了不同的图像尺寸:640, 672, 704, 736, 768, 800, 832, 864, 896, 960, 1024。

集成方式是在

同比赛其他方案