返回列表

public 3rd place solution

522. DFL - Bundesliga Data Shootout | dfl-bundesliga-data-shootout

开始: 2022-07-29 结束: 2022-12-20 计算机视觉 数据算法赛
公开第三名方案

公开第三名方案

作者: Camaro | 排名: 3

祝贺所有获奖者,特别是 Hydrogen 团队(@philippsinger, @ybabakhin, @ilu000)和 @kmat2019,你们的分数真的令人印象深刻!

下面我将总结我的解决方案。

基线模型

最终这是一个非常简单的端到端 2.5d 模型。
主干网络是带有 TSM[1] 的 EfficientNet,头部是一个简单的 1D UNet。
模型结构图
但是在训练和推理中有很多技巧。


训练

1. 使用球检测进行预训练

尽管我为 EfficientNet 使用了 ImageNet 预训练模型,但插入 TSM 模块极大地改变了模型结构,因此很难控制训练(例如,容易过拟合或发散)。直观上看,教模型关注球的周围似乎很重要,所以我使用 SoccerNet 跟踪数据集[2] 中的球标注来预训练模型。

预训练设置如下:

  • Efnet + TSM (+ 浅层 conv2d 头)
  • 输出分辨率与 efnet 的最终特征图相同,即 1/32 尺度的热力图。
  • 标签是类似 CenterNet 的 2d 高斯热力图,但为了简单起见没有添加回归分支。

起初我不确定是否可以使用 SoccerNet,所以我决定自己为视频片段标注球的位置,最终超过 20,000 帧。但在确认可以使用 SoccerNet 后,我切换到了它。预训练性能比我的好,但最终分数差别不大。

预测效果如下。我尝试将其作为下一阶段的额外输入,但没有成功的结果。
球检测预测

2. 标签设计

在事件前后 +- 5 帧范围内生成 1d 高斯热力图。这是第 13 帧发生挑战的示例(num_frames=16)。

还创建了一个二进制掩码来表示帧是否在评估间隔内。

3. 采样

一半正样本,一半负样本。正样本意味着标签中至少有 1 个事件,负样本意味着从评估间隔中随机采样。

4. 数据增强

基础增强如 RandomHorizontalFlip, RandomRotation, ColorJitter。
Manifold mixup[3] 效果也很好。我在图像特征上应用了 mixup。

5. 模型架构

  • EfficientNet + TSM 位于每个块的末尾
  • 简单的 1d UNet(某些变体在末尾有 LSTM 和 GRU)
  • UNet 中使用 LayerNorm 而不是 BatchNorm(由于 batch size 较小,BN 可能无法收敛)

6. 损失函数

基础损失是 focal loss[6]。
play、challenge 和 throwin 的任务实际上是独立的。但是 challenge 和 throwin 比 play 更难学习,因为样本少得多。所以我根据每个类的样本数量调整了 focal loss 中的 alpha 因子。这受到了 class balanced loss[7] 的启发,但公式进行了修改。这稳定了训练,特别是在

同比赛其他方案