412. NFL 1st and Future - Impact Detection | nfl-impact-detection
大家好。这是一场激动人心的比赛,感谢这个全新的视频分析领域。在我深入技术细节之前,先简要介绍一下团队:
对我来说,以团队形式解决问题是一次很棒的经历。由于大部分活动都发生在圣诞节和新年假期期间,我们尽力在生活与 Kaggle 比赛之间找到适当的平衡 :) 我的队友的帮助是无价的,我很感激能成为这个团队的一员。@user189546 @blondinka 干得漂亮,看来我们获得了一些新的 Grandmaster 和 Master 徽章 :)
解决这个挑战有多种方式,以下是我们通向金牌区的路径:
我们使用了三个阶段:头盔检测、撞击分类和后处理。
数据被分成四个折叠,确保同一视频的两个视角(Endzone 和 Sideline)进入同一个折叠,以避免数据泄露。每个折叠有 15 个回合(30 个视频),我相信这与测试集的大小相同。
我们尝试了 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 集成模型本身就已经达到了金牌区的水平,但我们决定继续推进。
我们尝试了几种撞击分类的方法。大多数效果不够好。
对于 3D CNN 分类,我们只训练了一个折叠的 3D ResNet50,将其与 CenterNet 的预测堆叠在一起,在 LB 上将我们的分数提升了约 +0.05。
在后处理阶段,我们需要抑制重复项。我们使用 IoU 追踪头盔,并选择撞击概率得分最高的帧。
我们还尝试使用边界框的中心来追踪欧几里得距离,作为判断相似结果的标准。
起初,我们移除了前 30 帧和最后几帧的撞击,但随着模型变得更加准确,这并没有产生明显影响。