返回列表

9th Place - 2D Detection 3D Classification

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

开始: 2020-11-16 结束: 2021-01-04 运动员表现 数据算法赛
第9名方案 - 2D检测 3D分类

概览

我们的解决方案(像许多其他团队一样)由两步流程(检测和分类)以及一些后处理组成。我们使用 2D 检测来寻找可能的撞击框,然后使用 3D 分类来确定哪些框是真正的撞击。

仅使用 2D,这是头盔撞击吗?

我们的检测模型将黄色框识别为可能的头盔撞击。

2D检测示例

仅从 2D 图像来看,无法知道这些头盔是否即将发生撞击。看起来很有可能,但也许银色头盔正要从白色头盔后面经过。

使用 3D,这是头盔撞击吗?

我们的分类模型使用了该帧之前和之后的帧。利用这些信息,我们的分类模型正确地识别出这两个头盔并没有发生撞击,而是彼此擦肩而过。

3D分类示例

撞击检测模型

(由 @jinssaa 撰写)

我们使用了 DetectoRS(ResNeXt-101-32x4d) 模型来检测撞击。https://github.com/open-mmlab/mmdetection 该模型的构建分为两步:

  • 用于热身的头盔检测模型: 我们使用图像文件夹中的训练头盔数据集训练了一个头盔检测模型,共 12 个 epoch,该模型的 'bbox_mAP_50' 验证得分为 0.877。
  • 2 类检测模型: 我们使用头盔检测模型的最终权重(作为预训练权重)构建了头盔/撞击检测模型。我们对比了 @tito 的笔记本,并将撞击前后的 ±4 帧设定为撞击类别。
    使用头盔检测模型作为预训练权重使得 2 类模型收敛得更快,也更容易检测到撞击。

这种方法在检测撞击方面表现出了良好的性能。我们将置信度分数设定为 0.9,经过简单的后处理(没有任何分类器),Public LB 得分为 0.39。然后,我们设定了较低的置信度分数,以便在接入分类器后捕捉到更多的真阳性。DetectoRS 在检测撞击方面表现出色,但测试我们的想法需要很长时间。

撞击分类模型

(由 @theoviel 撰写)

2D 模型

我一直在努力改进我的 EfficientDet 模型,因为我没有目标检测方面的经验,我发现最好还是回到我擅长的领域:分类模型。主要思想是,围绕头盔的裁剪图像在判断是否发生撞击方面,与整张图像包含的信息是一样的。

因此,我提取了训练数据中所有框周围的 64x64 裁剪图像,并开始构建模型来预测裁剪图像是否包含撞击。为了解决不平衡问题,我像很多人一样使用了 [-4, +4] 的扩展标签。经过一些调整,我得到了一堆 AUC 超过 0.9 的模型(按比赛分层 5 折):Resnet-18 & 34, EfficientNet b0 -> b3。

2D 模型使用的技巧包括:

  • 限制每个 epoch 每个玩家采样的框数量,以便更好地控制收敛
  • 带预热的线性学习率调度
  • 移除第一层的步幅:64x64 是较小的图像尺寸,最好不要过快降低网络分辨率
  • 随机加权平均
  • 常规数据增强

然后,我使用 @tjungblut 的检测器来评估我的模型在公共排行榜上的表现。结果发现,经过一些后处理,resnet-18 + efficientnet-b1 + efficientnet-b3 的融合达到了 0.33+,当时这处于金牌区。

团队合并

不久之后,我与团队其他成员合并,目标是将我的分类模型接入强大的检测模型之上,以发挥其潜力。距离比赛结束还有大约两周时间

同比赛其他方案