412. NFL 1st and Future - Impact Detection | nfl-impact-detection
当我开始解决这个比赛时,论坛上已经发布了一种基于二类检测器和后处理的解决方案。起初我想使用这种方法,但在仔细查看了数据后,我意识到为了获得高分,必须使用时间上下文。因此,我选择了一种两阶段的方法:头盔检测和使用3D卷积网络的ROI分类。
为了方便起见,我将所有视频帧提取为单独的文件。帧数不是很多,所以我毫无问题地将它们保存到了SSD中。然后我按game_id随机将所有数据分为训练集和验证集(20%)。
这是最简单的部分。我使用 detectron2 训练了带有ResNet-50 FPN主干网络的Faster-RCNN。我对 标准 配置做了以下修改:
第一个训练好的模型达到了相当不错的检测精度。在验证集上,AP50为93.607(具有明确冲击标签的真实框的召回率为84%)。我没有对检测器做更多的实验,但也许更精确的检测器会给出更好的最终结果。
我使用FAIR的 SlowFast 库来训练ROI分类器。利用这个库,我实现了两种替代方法:
该方法如下:将一系列完整帧输入到3D CNN中,计算特征图,并使用ROIAlign操作提取ROI的特征并进行分类。我使用了带有ResNet50主干网络的SlowFast模型,并进行了以下修改:
该模型在私有排行榜上的结果为0.3915。
该方法如下:裁剪目标框周围的一系列帧,然后将裁剪序列输入到3D CNN中,然后直接计算冲击概率。我再次使用了带有ResNet50主干网络的SlowFast模型,并进行了以下修改:
该模型在私有排行榜上的结果为0.6037。然后我添加了水平翻转作为TTA(测试时增强),将分数提高到了0.6341。最后,我将上述动作检测器添加到集成中,并获得了微小的提升:私有排行榜分数为0.6355。