412. NFL 1st and Future - Impact Detection | nfl-impact-detection
首先,感谢 Kaggle 和主办方举办了如此有趣的比赛。同时也祝贺所有的获奖者。我认为这是最艰难的比赛之一,因为虽然参赛总人数相对较少,但其中不乏许多才华横溢的 Kaggle 大神。
在这里,我将简短总结我的解决方案,以及我失败的地方。
乍一看,这个任务似乎是目标跟踪的最佳应用场景,因为由于评估指标的设计,我们需要聚合时间序列信息。所以我选择了 FairMOT 作为我的基线,因为它是 MOT 基准测试中的 SOTA(当前最佳)模型。简而言之,FairMOT 是一个目标跟踪框架,它基于 CenterNet 并加入了基于度量学习的 ID 特征分支。除了头盔跟踪外,我的模型还预测每种撞击类型的概率以及用于区分对手头盔的球队特征。因此,我模型的总输出如下:
其中 N 是头盔的数量。
作为一个小技巧,我在两个视角中为同一个球员添加了相同的跟踪标签,这样我的模型应该在两个视角中为同一个球员输出相同的 ID 特征。在跟踪过程中,我关联了两个视角中的头盔。此外,我将视图中的头盔分为两组(即两队)。我只是简单地使用了 K-means 进行聚类,效果非常好。跟踪之后,我的模型输出如下(除上述内容外):
其他训练细节:
尽管我的模型预测了所有撞击类型的撞击概率,但在最佳提交中,我只使用了头盔之间撞击的预测结果。我的后处理过程严重依赖于一个假设,即头盔撞击发生在来自不同队伍的一对头盔之间。
我的后处理包括以下步骤:
如你所见,这里有很多超参数。我使用 Optuna 分别针对 Endzone 和 Sideline 优化了这些阈值。这样做之后,我的 CV(交叉验证)分数在 Endzone 上约为 0.42,在 Sideline 上约为 0.53,总体为 0.45。CV 和 LB(排行榜)的相关性还不错,我的最终得分在 Public 和 Private LB 上实际上都是 0.45。
显然,我错过了聚合时间序列信息的机会,例如大多数其他解决方案中使用的 3D 模型或两阶段模型。相反,我在最后一个月花了大部分时间来聚合同一帧和另一个视角中实例之间的关系。我相信这应该会有所突破,但我没能成功实现。我尝试过的方法包括: