返回列表

3rd Place Solution -- Simple 2-Stage Pipeline

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

开始: 2020-11-16 结束: 2021-01-04 运动员表现 数据算法赛
季军方案 -- 简单的两阶段流水线

季军方案 -- 简单的两阶段流水线

作者: Qishen Ha (Grandmaster) | 比赛: NFL Impact Detection | 排名: 3rd Place

感谢主办方,祝贺所有的获奖者以及我出色的队友!@boliu0 @garybios

这次比赛的数据集比通常的比赛要复杂得多,有很多值得探索的地方。

所以我更愿意称之为多视角视频事件检测任务,而不是简单的目标检测任务,因为:

  • 该数据集包含时间序列信息。
  • 该数据集中同一场景具有多视角画面。
  • 虽然撞击边界框标记在头盔上,但标记工作必然依赖于头盔周围的环境。

此外,对评估指标的理解在本次比赛中也至关重要。

摘要

  • 仅使用视频和图像。
  • 使用 EfficientDet 生成候选撞击边界框,并将其裁剪成小图像。
  • 使用二分类图像模型对通过9帧提取的头盔裁剪图像进行分类。
  • 利用多视角信息调整每个边界框的得分(后处理)。
  • 在9帧范围内去除相似的边界框(后处理)。

这是我们的流程示意图(不包括后处理):

Pipeline Illustration

生成候选边界框

我们在2个类别(头盔和撞击)上训练 EfficientDet,然后将所有类别为“撞击”且得分大于0.17的边界框作为候选框。

如果一名球员发生了撞击,我们将他在前后4帧内的所有边界框视为正样本框,因为评估指标将前后4帧内的预测视为真正例(TP)。基于此规则,如果一个正样本框出现在某一帧中,我们就将该帧视为正样本帧。

在训练 EfficientDet 时,我们使用了所有视频中的所有正样本帧和50%的负样本帧(即其中没有正样本框的帧),以及所有10,000张静态图像。

二分类模型

如图所示,我们使用二分类模型进一步预测边界框裁剪图像是否为撞击。

为了训练二分类模型,我们将视频中边界框的高度和宽度扩展为原始长度的3倍,从帧中裁剪出来,并将其作为二分类模型的训练数据。

在裁剪特定边界框时,我们通过9帧(t-4, t-3, t-2, t-1, t, t+1, t+2, t+3, t+4)进行裁剪,将其转换为灰度图并堆叠在一起,得到形状为 (h, w, 9) 的输入。

需要注意的是,这里的 9 是一个可变参数。

通过这种方法,我们可以获得大约90万个头盔裁剪图像,这与数据集中边界框的数量一致。

但与训练 EfficientDet 不同,在训练二分类模型时,我们仅将撞击边界框及其前后1帧对应的边界框视为正样本,这部分数量不到6千。

在预测时,我们对所有候选边界框使用相同的裁剪方法,然后通过二分类模型对这些裁剪图像进行推断。

通过二分类模型,结合我们的后处理方法,我们的单模型本地得分从0.3x跃升至接近0.6,这是我们流程中最大的亮点。

多视角后处理

我们发现,当一个视角发生撞击时,另一个视角在前后1帧范围内发生撞击的概率很高。因此,我们根据另一个视角中的预测结果调整了不同的阈值。例如,某个Endzone视角帧的阈值取决于Sideline视角在前后1帧内是否有预测边界框。如果有,阈值较低(如0.25);如果没有,阈值较高(如0.45)。

去除相似边界框

根据官方评估指标,虽然预测边界框在前后4帧范围内被算作真正例(TP),但一个真实标签只能接受一个预测边界框。因此,我们希望一次撞击只输出一个预测边界框。

所以我们设计了一个函数,在任何连续的9帧内丢弃除一个以外所有“相似”的边界框,只保留置信度最大的那个。为此,我们将跨帧边界框的 IoU > 0.25 定义为相似。

模型集成

最终,我们集成了7个 EfficientDet 模型和18个二分类模型,达到了本地得分0.64,Public LB 0.66 和 Private LB 0.

同比赛其他方案