461. NFL Health & Safety - Helmet Assignment | nfl-health-and-safety-helmet-assignment
非常感谢主办方组织这次比赛,也向所有获奖者致以最美好的祝愿。这是我在 Kaggle 参加过的最有趣的比赛之一。我很高兴能在这里获得一枚单人银牌。
简要总结我的第21名解决方案:
最终提交使用了两个模型:YoloV5l 和 YoloV5x。两者均在 1280 的图像尺寸上进行了训练。
1. 每一帧的头盔分配问题被构建为如下的线性分配问题:
输入:视频帧边界的球员,旋转角度
输出:视频帧中的所有球员
a. 假设你已经解决了视频帧边界(左、右、上、下)4名球员的问题,并且你知道旋转角度。
b. 通过将所有球员的地面位置(x中心,y中心)旋转角度,然后应用最小-最大缩放,来转换这些位置。
c. 使用最小-最大方法缩放视频坐标
d. 计算加权欧几里得距离矩阵:
对于 Sideline(边线):(0.5*x距离 + 0.5*y距离)
对于 Endzone(端区):(0.8*x距离 + 0.2*y距离)
e. 使用匈牙利算法解决线性分配问题以获取所有球员
2. 对边界球员和旋转角度的所有可能候选者进行网格搜索
假设 N_VIDEO = 视频中检测到的头盔数量
N_GROUND = 22
OFFSET = N_GROUND - N_VIDEO
a. 如果地面上由这些球员围成的矩形内的球员数量为 N_VIDEO-1、N_VIDEO 或 N_VIDEO+1,则称这4名球员的集合为有效候选者。
b. 对所有可能的4名球员和视图允许的旋转角度进行网格搜索,以通过线性分配方法获得最小距离。
c. Endzone 允许的旋转角度 = (90, 270)
d. Sideline 允许的旋转角度 = (-30, -15, 0, 15, 30, 150, 165, 180, 195, 210)
e. 如果 N_VIDEO > 22,反转问题 -> 从视频中选取4个有效框,并对地面上的边界球员应用网格搜索。
f. 如果 OFFSET <= 8,问题可以在不到1000次迭代内解决。
g. 如果 OFFSET > 8,为每个方向选取前8个候选者 -> 对坐标进行排序,并选取距离最近球员最远的那些。
例如:如果偏移量 = 9,且左侧球员的坐标为:[1,5,8,9,13,15,18,22,25]
-> 剔除 9,因为它与左侧最近球员的距离最小。然后对剩余的8个进行网格搜索。
每个视频大约有15次撞击。因此,公共测试集中大约有90次撞击。比赛指标受这些边界框的影响很大。基于这些观察,我决定采用完全 CV 的方法: