412. NFL 1st and Future - Impact Detection | nfl-impact-detection
感谢主办方,祝贺所有的获奖者以及我出色的队友!@boliu0 @garybios
这次比赛的数据集比通常的比赛要复杂得多,有很多值得探索的地方。
所以我更愿意称之为多视角视频事件检测任务,而不是简单的目标检测任务,因为:
此外,对评估指标的理解在本次比赛中也至关重要。
这是我们的流程示意图(不包括后处理):
我们在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.