返回列表

2nd place solution - Team Hydrogen

537. 1st and Future - Player Contact Detection | nfl-player-contact-detection

开始: 2022-12-05 结束: 2023-03-01 运动员表现 数据算法赛
第二名解决方案 - Team Hydrogen

第二名解决方案 - Team Hydrogen

作者: Pascal Pfeiffer, Psi, Yauhen Babakhin
比赛: NFL Player Contact Detection

感谢主办方举办又一次精彩的 NFL 挑战赛!与往届 NFL 竞赛一样,比赛组织得非常完善,并且每当社区有疑问时,反馈周期都很迅速。我们要特别感谢 @robikscube,他是主办方之一,甚至提供了一个强大的表格基线帮助我们入门。

验证

与庞大的训练集相比,测试数据相当小,仅包含 61 次进攻。因此,本地验证变得比往常更加重要。为了评估我们的模型,我们在 game_key 上使用了分层分组 KFold 交叉验证,公共 LB 通常紧随任何本地 CV 的改进,只有很小的随机范围(几分),并且混合模型比单一模型(5 折或少量全拟合)更稳定。我们包含第二阶段的最佳本地 CV 为 0.807,包含第二阶段的单一模型约为 0.802。

模型与架构

我们模型的核心思想和中心构建块基于我们在上一次 DFL 竞赛中的概念,利用 2D/3D CNN 捕捉视频的时间特性。这种架构已经在多个视频体育项目和竞赛中为我们提供了良好的服务,在这里也被证明具有很强的竞争力。

在本次竞赛中,我们发现较长的时间步长效果更好,我们使用 24 帧的时间步长(双向各两次)获得了最佳单一模型结果。我们根据头盔框信息裁剪每个潜在接触的兴趣区域。在大多数模型中,我们调整裁剪大小,使所有框的大小大致相同。我们将端区和边线视图水平连接以实现早期融合。此外,我们将追踪数据直接编码到 CNN 模型中。这具有主要优势,即我们可以主要依赖单阶段解决方案,并且不太容易通过带有非折叠 CNN 预测的 2 阶段方法过拟合。我们根据追踪特征在表格模型中的重要性逐步对其进行编码。

我们方法的主要架构如下所示:

模型架构图

我们现在将详细解释每个通道。我们在集成模型的各个模型中对这些通道有细微的变化,但核心概念是相同的。请注意,通道的顺序始终相同,在上面的架构可视化中,顺序仅为视觉清晰度而更改,并且仅显示了三个通道,而我们的模型大多使用五个。帧 552、600 和 648 显示前景中的第一个通道,而帧 576 显示第二帧,624 显示第五帧。

第一通道
第一通道仅使用灰度图像描绘潜在接触的兴趣区域。对于每个视图,我们取两个(或一个)框的中心,然后裁剪一个宽度为 128、高度为 256 的矩形。然后我们将两个视图并排放置,产生 256x256 的输入大小。对于我们的大多数模型,我们尝试根据框信息保持纵横比,并向下裁剪更多信息而不是向上,以更好地捕捉球员的全身。

第二通道
在这里我们放置框的掩码,允许模型清楚地学习它应该尝试为哪些球员预测接触。我们用值 255 掩盖两个框。如果只有一个框,或者存在地面接触,我们只掩盖这一个框。我们还用 128 掩盖此裁剪中的所有其他框。

第三通道
最重要的特征是两名球员之间的距离。CNN 模型本身只能在某种程度上学习球员之间的距离。因此,在这个通道中,我们直接解码从追踪信息得出的距离。方便的是,在大约 2 码处有一个很好的截止点,基本上不再存在接触。所以我们只需将距离乘以 128,得到 0 到 255 之间的值,我们在这个通道中对其进行编码。

第四通道
一个非常重要的特征是两名球员是否来自同一球队。所以如果两者来自同一球队,我们编码为 255,否则为 128。

第五通道
最后,我们看到球员从上一时间点移动的距离在表格模型中很有帮助。因此,与球员之间的距离类似,我们分别为两名球员(或地面接触情况下的一名球员)编码此特征。

对于所有追踪特征通道,我们坚持使用 uint8 编码,这意味着我们会损失特征的一些精度,但这有助于防止过拟合,并且可以看作是 256 个分箱之间的分箱,类似于 GBM 模型所做的。编码这些特征的巨大好处是 CNN 可以直接学习此类追踪特征的所有空间和时间信息。

作为 2D 主干,我们使用了 tf_efficientnetv2_s.in21k_ft_in1ktf_efficientnetv2_b3 架构以及 timm 库中的预训练权重。我们训练所有模型 4 个 epoch,使用余弦调度衰减和 AdamW 优化器。检查点总是在最后一个 epoch

同比赛其他方案