522. DFL - Bundesliga Data Shootout | dfl-bundesliga-data-shootout
祝贺所有获奖者,特别是 Hydrogen 团队(@philippsinger, @ybabakhin, @ilu000)和 @kmat2019,你们的分数真的令人印象深刻!
下面我将总结我的解决方案。
最终这是一个非常简单的端到端 2.5d 模型。
主干网络是带有 TSM[1] 的 EfficientNet,头部是一个简单的 1D UNet。

但是在训练和推理中有很多技巧。
尽管我为 EfficientNet 使用了 ImageNet 预训练模型,但插入 TSM 模块极大地改变了模型结构,因此很难控制训练(例如,容易过拟合或发散)。直观上看,教模型关注球的周围似乎很重要,所以我使用 SoccerNet 跟踪数据集[2] 中的球标注来预训练模型。
预训练设置如下:
起初我不确定是否可以使用 SoccerNet,所以我决定自己为视频片段标注球的位置,最终超过 20,000 帧。但在确认可以使用 SoccerNet 后,我切换到了它。预训练性能比我的好,但最终分数差别不大。
预测效果如下。我尝试将其作为下一阶段的额外输入,但没有成功的结果。

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

还创建了一个二进制掩码来表示帧是否在评估间隔内。
一半正样本,一半负样本。正样本意味着标签中至少有 1 个事件,负样本意味着从评估间隔中随机采样。
基础增强如 RandomHorizontalFlip, RandomRotation, ColorJitter。
Manifold mixup[3] 效果也很好。我在图像特征上应用了 mixup。
基础损失是 focal loss[6]。
play、challenge 和 throwin 的任务实际上是独立的。但是 challenge 和 throwin 比 play 更难学习,因为样本少得多。所以我根据每个类的样本数量调整了 focal loss 中的 alpha 因子。这受到了 class balanced loss[7] 的启发,但公式进行了修改。这稳定了训练,特别是在