返回列表

2nd place solution

461. NFL Health & Safety - Helmet Assignment | nfl-health-and-safety-helmet-assignment

开始: 2021-08-10 结束: 2021-11-02 运动员表现 数据算法赛
第二名解决方案

第二名解决方案

作者:tito (Grandmaster)

恭喜所有的获奖者。特别祝贺 K_mat。你们的分数和解决方案真的很棒。

我要感谢 Kaggle 和主办方团队举办这场有趣的比赛。我特别想感谢 Rob。你对本次比赛的贡献非常显著!

这是我的解决方案简要总结。

1. 头盔检测

我仅使用补充照片训练了 YoloV5。
由于对小头盔的预测精度不佳,我将图像从 1280 上采样到 1664 进行训练。

2. 头盔聚类(队伍分类)

我使用头盔图像进行了两阶段 K-means 聚类。
第一阶段 K-means 聚类从整个视频帧中所有头盔图像的像素集合中提取了 20 种代表颜色。
在第二阶段 K-means 中,使用特征向量对头盔进行聚类,该向量显示了头盔拥有每种代表颜色的数量。
该模型达到了 97% 的准确率。
通过利用跟踪信息在后期处理中确保同一球员属于同一队伍,该模型的准确率提升到了 98%。
该队伍聚类的结果被用于球员分配和球员跟踪。
头盔聚类

3. 特征提取(用作匹配的距离度量)

除了上/下、左/右的 2D 信息、队伍(主队或客队)信息外,球员朝向以及头盔与传感器位置之间的视差也被用作映射球员的距离度量。

3-1 球员朝向

我创建了一个模型来预测跟踪数据中的 “o”(朝向),并在匹配时用于惩罚角度偏差过大的情况。
球员朝向预测
红色:预测值(主队)
橙色:预测值(客队)
浅蓝色:真实值(主队)
深蓝色:真实值(客队)

3-2 头盔与传感器位置的视差

例如,即使坐标相同,视头盔位置也会根据用户是站立还是蹲下而发生变化。
我建立了一个模型来预测这种偏移。
事先,我通过映射真实值和头盔框来获取位置差距。
然后我利用这些训练数据制作了一个模型来预测这种差距。
这张图片展示了根据差距更新后的头盔框。
你可以看到跪地和倒地球员的框已经得到了修正。
根据差距更新的框
对于这些特征提取,我使用了 CenterNet,并在此分享了我的代码。
https://www.kaggle.com/its7171/nfl-centernet

4. 坐标变换

我利用地面上的线条来对齐视频图像和跟踪数据的坐标。
我使用 CV2 来检测线条。
白线检测
通过从提取的线条中选取两条线并进行少量计算,即可实现几何坐标变换。

坐标变换 1(纵横比)
坐标变换

坐标变换 2(梯形校正)
坐标变换

坐标变换 3(旋转)
坐标变换

5. 球员分配

由于视频中经常出现少于 22 名球员的情况,我通过移除跟踪信息中位于上、下、左、右边缘的球员(通过矩形截断跟踪坐标)来调整球员数量,然后将其作为线性分配问题来解决。
移除球员的候选方案有很多,但我选择了所有候选方案中总最小距离最小的那个。

6. 球员跟踪

现代物体跟踪模型使用图像特征的相似度作为物体之间距离的度量。
然而,我认为这种方法可能不太适合本次比赛,因为同一队伍的所有头盔都是相同的。

同比赛其他方案