返回列表

2nd Place Solution

522. DFL - Bundesliga Data Shootout | dfl-bundesliga-data-shootout

开始: 2022-07-29 结束: 2022-12-20 计算机视觉 数据算法赛
第二名解决方案
作者: K_mat (Grandmaster) | 排名: 第2名

感谢组织者提供这个有趣的挑战,祝贺所有参与并享受其中的人!由于这个比赛可以通过多种方式来解决,我很期待看到大家的解决方案。

解决方案概述

我的流程包括:

  • 光流获取全局(相机)运动。
  • 球检测器以找到场上的球。
  • 球轨迹代价最小化,以在多帧中精细化球的位置。
  • 2阶段动作识别以对事件进行分类。
  • 集成和后处理。

一旦我发现注意力机制或裁剪球附近的区域对提高动作分类器的准确性有效,我就专注于改进检测器和分类器的性能。

pipeline

1. 光流

在以下情况下很难检测到球:

  • 它被球员遮挡。
  • 背景是看台。
  • 不在比赛中的球被放置在边线附近。

所以我的想法是利用多帧来检测通常正在移动的比赛用球,这是通过光流实现的。
起初,我实现了高分辨率图像的光流,因为球非常小,但这很慢,不适合这个比赛。所以我采用了低分辨率光流来仅预测全局(相机)运动。光流本身无法分辨哪一个是比赛用球,但扭曲图像与原始图像之间的差异非常有信息量。
opticalflow_motivation
我使用RAFT来预测光流。它是通过自监督方式在提供的视频上进行训练的。
opticalflow_implementation


2. 球检测

为了制作球检测器,我重复了几次训练和标注。
(标注 -> 训练检测器 -> 预测 -> 标注 -> 训练检测器 -> 预测 -> …)
我选择了CenterNet,因为我不喜欢标注。标注点比标注矩形容易得多。

由于目标(球)非常小,模型的输入是高分辨率图像。
为了同时实现推理速度和准确性,我使用了编码器的初始部分。
balldetector

检测器的输入由9个通道组成:

  • 当前帧的正常RGB图像
  • 当前帧与由光流重建的上一帧之间的差异。
  • 当前帧与由光流重建的下一帧之间的差异。

后两者极大地提高了检测器的准确性,特别是在拥挤的场景中。
detection_example


3. 球轨迹代价最小化

利用多帧信息可以更准确地估计球的位置。我在选择球路径上应用了代价最小化。
如果我们知道球的轨迹,我们可以估计它接下来会去哪里。在下面的例子中,即使球很难看清,人们也可以正确选择下一个点。

同比赛其他方案