返回列表

7-th place solution from AlphaGoal Team [2.5D CenterNet, 3D CNN]

412. NFL 1st and Future - Impact Detection | nfl-impact-detection

开始: 2020-11-16 结束: 2021-01-04 运动员表现 数据算法赛
AlphaGoal 团队第 7 名解决方案 [2.5D CenterNet, 3D CNN]

简介

大家好。这是一场激动人心的比赛,感谢这个全新的视频分析领域。在我深入技术细节之前,先简要介绍一下团队:

对我来说,以团队形式解决问题是一次很棒的经历。由于大部分活动都发生在圣诞节和新年假期期间,我们尽力在生活与 Kaggle 比赛之间找到适当的平衡 :) 我的队友的帮助是无价的,我很感激能成为这个团队的一员。@user189546 @blondinka 干得漂亮,看来我们获得了一些新的 Grandmaster 和 Master 徽章 :)

方法

解决这个挑战有多种方式,以下是我们通向金牌区的路径:

我们使用了三个阶段:头盔检测、撞击分类和后处理。

数据被分成四个折叠,确保同一视频的两个视角(Endzone 和 Sideline)进入同一个折叠,以避免数据泄露。每个折叠有 15 个回合(30 个视频),我相信这与测试集的大小相同。

太长不看版(TL;DR):

  • 4 个 CenterNet 模型用于检测
  • 1 个 3D CNN 模型用于分类
  • 后处理

头盔检测

我们尝试了 CenterNet 和 EfficientDet 检测器。我们最终的检测管道被我称为 2.5D CenterNet。模型的输入是一段包含 8 个连续帧的短视频片段,这些帧单独通过编码器(就像在连体网络中做的那样),然后中间层连接起来并通过类似 UNet 的解码器,生成 8 帧的输出热力图和撞击图。我们发现这种方法比常规的 3D-CenterNet 需要更少的内存。

我们尝试了不同的编码器,基于 DenseNet 的编码器在头盔 F1 检测和撞击 F1 检测分数方面表现最好。EfficientNets 表现稍差,ResNet 表现最差。平均而言,每个折叠的头盔 F1 分数约为 0.93-0.94,撞击 F1 约为 0.43。

关于数据增强,我们使用了 albumentations 库:https://github.com/albumentations-team/albumentations

结合 4 个折叠并对 CenterNet 检测器使用 TTA(测试时增强),配合 densenet121 骨干网络和中等强度的增强,获得了 0.95 的 f1 分数。2.5D CenterNet 集成模型本身就已经达到了金牌区的水平,但我们决定继续推进。

撞击分类:

我们尝试了几种撞击分类的方法。大多数效果不够好。

  1. 在头盔检测模型预测结果之上使用 1D CNN 的二级模型 —— 经过后处理 f1 约为 0.32(1 个折叠,无 TTA)
  2. EfficientDet 在 1 个类别上预训练用于头盔检测,并调整为 2 个类别,配合中等增强和采样 → 经过后处理 f1 约为 0.33(1 个折叠,无 TTA)
  3. 前两种方法的混合 —— LB 上 f1 = 0.34(1 个折叠,无 TTA)
  4. 视频中的连体网络
  5. 在 2D 头盔预测结果之上的 3D CNN 分类器 —— 这个方法给出了最好的结果 —— 后处理后 f1 为 0.57

对于 3D CNN 分类,我们只训练了一个折叠的 3D ResNet50,将其与 CenterNet 的预测堆叠在一起,在 LB 上将我们的分数提升了约 +0.05。

后处理

在后处理阶段,我们需要抑制重复项。我们使用 IoU 追踪头盔,并选择撞击概率得分最高的帧。

我们还尝试使用边界框的中心来追踪欧几里得距离,作为判断相似结果的标准。

起初,我们移除了前 30 帧和最后几帧的撞击,但随着模型变得更加准确,这并没有产生明显影响。

同比赛其他方案