一 背景介绍
最近可谓是足球的一场狂欢盛宴,大家不知道是走上了天台,还是足球反买,别墅靠海。其中也有几场比赛引起了全球范围的讨论,例如阿根廷爆冷输给沙特的比赛,其中对于阿根廷几次越位的判罚引起了很大争议。而日本队上演了一出电影都不敢这么拍的剧情,在小组赛中依次战胜德国和西班牙并以小组第一的身份成功在死亡之组突围,并在对阵西班牙时一例界外球的判断引发了网络热议。另一场葡萄牙2比0战胜乌拉圭的比赛中,C罗到底有没有顶到球也引发了网友的讨论。
虽然人工智能技术已经渗透到了生活的方方面面,但提到足球与AI的时候,大部分人的第一反应仍然是这两者有什么关系吗,AI是怎么应用到足球中的呢?但其实在足球场景中科技前沿一直致力于对运动员行为的智能分析与自主判定,AI与足球已经进行了深度结合,最近比赛中出现的半自动越位技术的使用,足球内嵌传感器等等。在国外用AI进行足球智能分析或者辅助球队训练的训练已经非常成熟,甚至达到了商用级别。例如Pixellot,是一家基于AI技术提供体育完整解决方案的公司,其与巴塞罗那足球俱乐部达成了合作协议,在训练场内布置四台相机矩阵来捕获场地全景,并自动追踪足球和球员的动作,提供生成训练视频等功能。下面就让我们浅谈下那些足球中的智能分析技术。
二 足球视频智能分析原理
首先,要回答为什么进行足球视频智能分析,以及分析视频中的什么内容呢?
技术的快速发展促进了视频记录和媒体存储设备的扩展和生产。 如今,每分钟约有 500 小时的视频内容上传到 YouTube 等网站,全球不同用户每天观看约 50 亿个视频。 在这些视频中,体育视频特别是足球比赛视频非常受欢迎,因为足球是世界上最具吸引力的运动之一。足球比赛的吸引力和流行度引起了球迷的关注,足球视频通常是是被用户观看次数最多的视频类目之一。 足球比赛的持续时间长被视为其特点之一,这在某些情况下可以被视为优势,而在其他情况下则可以视为劣势。 如此长的持续时间导致许多人不会完整观看 90 分钟的足球比赛,然而另一方面,他们打算至少观看最重要和最激动人心的比赛时刻。 因此,通过图像/帧或视频处理对足球视频进行分析的综合研究变得尤为重要。
如今,深度学习方法在图像和视频分析中展现出了卓越的效果,足球视频智能分析是指使用计算机视觉技术等检测并跟踪足球、球员等,并智能识别比赛中任意球、射门、进球等关键时刻,对于分析比赛统计数据、预测足球比赛结果、总结足球比赛视频等有重要作用。
那么足球视频智能分析都在做什么呢?要进行足球视频智能分析,首先要找到足球视频中我们所关注的目标,有足球、球员、守门员、裁判、球场、球门、红黄牌,我们会在下文简要介绍足球与球员的检测与跟踪。找到这些目标之后,需要将足球与球员的坐标投影到球场平面上,我们才能判断各种交互关系。最后,我们基于足球、球员的位置可以进行任意球、射门、进球等关键事件的识别,这一部分会在下文关键事件识别部分介绍。
2.1 足球与球员的检测与跟踪
正如上文提到,足球视频智能分析,首先要找到一段足球视频里我们所关注的目标,只有检测到这些基本目标后才能进行更智能的分析。对于基础目标检测可以拆解为以下几个问题:
参考系统和球员位置映射(如何将球员位置从摄像机视图投影到2D平面);物体检测(球员/球/裁判是什么以及在哪里);对象跟踪(也就是如何跨帧跟踪实体);球员识别(也就是如何跨帧识别球员);球员身份识别(如何确定一名球员属于哪支球队)。
其具体流程为,给一定一段待处理的视频,我们使用目标检测(足球、球员检测)顺序处理每一帧,球场和球门的检测只需要在视频开始阶段处理;一旦我们有了一系列几乎连续的检测结果,我们就可以开始跟踪每位球员并识别其所属的队伍。 同时,我们通过摄像机估计足球场的位置,并将每个球员的位置从图像坐标系投影到球场俯视平面。接下来我们对其中涉及的部分技术进行介绍。
2.1.1 足球与球员检测
2.1.1.1 足球检测难点:
准确高效的足球和球员检测是足球视频智能分析的关键要素。从足球比赛的长镜头视频片段中检测球是一个具有挑战性的问题,使球定位变得困难的因素有以下几点。 首先,与场景中可见的其他物体相比,球非常小,而且它的大小根据位置的不同而有很大的不同,在足球比赛的长镜头记录中,当球位于球场的远端,与摄像机相对时,球可能看起来小至8个像素,当它在场地的近侧时,球会大到20个像素。 在如此小的尺寸下,很难将足球与球员身体的某些部位(例如头部或白袜子)或杂乱的背景区分开来(例如球场上的小垃圾或体育场广告的一部分)。足球的形状也会发生变化,当它高速移动的时候会变得模糊,变成椭圆形而不是圆形,而且由于阴影和光照变化会导致我们看到球的颜色出现变化。 当球员控球或足球被球员部分挡住的情况下检测也会变得困难,在这种情况下,基于运动背景减法的简单球检测方法会失败。下图说明了足球外观的变化和足球检测任务的难度。
2.1.1.2 球员检测难点:
球员比球的尺寸要大,通常更容易被发现。但在某些情况下,球员的检测也可能会出现问题。球员有时会彼此紧密接触导致球员部分肢体被遮挡。由于在球场上绊倒和摔倒,他们也可能会摆出不寻常的姿势。下图展示了有关球员检测任务难度的示例图像。
2.1.1.3 足球与球员检测方案:
我们使用一个检测网络同时检测足球和球员,在模型结构设计上,采用双backbone的架构,并使用RepVGG的重参数化卷积模组,训练时学习多路特征,推理时合并为单路,加快推理速度。
为了解决足球目标过小的问题,在网络Neck部分使用FPN(Feature Pyramid Network ),可以更有效地将高分辨率但low level的特征图与编码high level特征具有更大感受野的低分辨率特征图结合起来。这一操作通过更大的视觉语境可以将球与球员身体的部分和背景部分区分开来,提高了在困难场景下足球的定位和检测精度。具体来说,使用PAN,同时使用自顶向下和自下而上两条路径来融合特征。
为了解决足球发生形变、模糊、遮挡导致的检测失败问题,使用FairMOT的跟踪算法来建立足球的运动轨迹,即使目标丢失时也能结合历史帧的轨迹预测目标所在的位置。
为了解决球员相互遮挡的问题,我们在grid的划分策略上做了处理。通用的单阶段目标检测方法通常将图像划分为相对粗略的网格(例如 YOLO 中的 7x7 网格),并且每个网格单元检测不超过一个具有特定纵横比的感兴趣目标。 当两个球员彼此靠近时,检测结果就会发生错误。因此我们使用更密集的网格,对于 1920x1080 像素的输入图像,我们使用 480x270 网格(输入图像尺寸缩小 4 倍)进行足球检测,使用 120x68 网格(输入图像尺寸缩小 16 倍)进行球员检测,这样就可以将两个靠近的球员检测为两个独立的对象。
为了解决球员摔倒或其他奇怪姿势时的球员检测问题,我们还另外加入了瑜伽数据集进行训练,这个数据集里存在各种各样的瑜伽姿势,可以有效提升奇怪姿势下球员检测的精度。
同时在训练时,我们使用了Mosaic增强、RandAugment的数据增广方式,正则化使用Label Smoothing,标签匹配策略上采用SimOTA的动态匹配策略,来优化检测的效果。
2.1.1.4 足球与球员检测效果:
下面的视频展示了足球和球员的检测效果。
2.1.1.5 足球与球员的跟踪:
目前为止我们只是对每一帧执行相同操作,并没有建立时间维度的联系。但是如果我们想通过检测结果建立每个球员的运动轨迹,同时想应对检测失败的情况,就需要一个精准的多目标跟踪器,并配以卡尔曼滤波来完成我们的目标。跟踪器是完全基于位置的,并从球员检测器接受一系列检测框作为观测结果,这些观测结果与跟踪对象(卡尔曼滤波预测的结果)通过二分图匹配,将分配问题公式化为最小权重匹配问题进行求解。
然后,使用一个简单的跟踪逻辑定义被跟踪对象的生命周期(活动/非活动),并确保通过观察更新卡尔曼状态。
2.1.2 球员所属队伍、裁判、守门员
足球队伍都是两支由在球场上穿着相同球衣的球员(加上裁判和守门员)组成的球队,可以使用K-means 算法对球员进行聚类。具体为使用球员检测框在HSV颜色空间上将两个球队聚类,并使用tf-idf权重过滤掉每个检测框中的绿色草地。裁判和守门员可以检测为一类特殊的“离群值”,离球门更近的为守门员,同时还要根据进攻方向确定守门员的归属。
2.2 将足球和球员坐标映射到球场平面
这项任务需要将球员位置从2D图片中投影到球场的俯视平面上。具体来说我们首先选取几个关键点,球场禁区线的四个点,中场线的点,然后就可以构造仿射变换矩阵。在我们从图像中得到球员的坐标后,就可以利用仿射变换矩阵将球员坐标变换到球场平面上了。
2.3 关键事件识别
关键事件识别主要是指对足球比赛中的一些关键时刻,例如射门、任意球、角球、进球等的识别。上文提到的足球和球员等目标的检测完成了对足球比赛中客观存在对象的分析,而关键事件识别则上升到了事件的维度,这里的事件是指行为或者状态,射门、任意球、角球是行为,进球是状态。
足球、球员等目标的检测,与关键事件识别这两者的关系就好比与识字和读书,识字意味着我们知道一句话中的每个字怎么读,但并不理解这句话所表达的意思,但读书就意味着不仅识字还能理解这句话所表达的意思,因此关键事件识别是一种更高阶、更富含语义的行为。
关键事件的识别一般是对某个时序片段的识别,如果使用LSTM对时序序列进行分类的方式,数据的获取与标注都是极大的问题,因此我们更多采用状态判断的方式对时序片段分析,如果达到了所有我们所要求的状态,则该事件被成功识别,这种方式无需数据的依赖以及模型的训练。
2.3.1 射门识别
这一步需要用到足球检测,球员检测以及球门检测。对于待分析的视频片段,射门识别是通过以下流程检测得到的:
- 计算足球的运动特征(速度、加速度、足球与球门位置关系),将运动特征与预设条件进行比对,确定一些候选射门片段。
- 根据候选射门片段,确定候选射门者。
- 对候选射门者进行人体姿态分析,判断其是否满足射门姿势,如满足,则发生了射门行为。
足球的运动特征,主要包括足球运动过程中速度、加速度、与球门位置关系的计算。首先可以对基础目标检测到的足球进行跟踪,得到足球的运动轨迹,然后根据轨迹计算运动特征,并将运动特征与预设射门条件匹配。预设的射门条件是指足球的运动状态突然改变,向球门的方向做加速运动。匹配主要为对速度、加速度与位置向量的夹角是否满足阈值进行判断,速度方向是向量,加速度方向也是向量,位置向量是足球位置指向球门位置的向量,因此分别判断速度方向向量与位置向量,加速度方向向量与位置向量的夹角是否小于设定的阈值,这样确保了球是朝着球门做加速运动的,因此我们可以挑选出候选射门片段。
有了候选射门片段后,需要确定有哪些人可能发生了射门行为。具体确定候选射门者的方法为,对于候选射门片段,计算每一名球员与足球的距离,如果距离小于设定阈值,则作为候选射门者,画面里没出现球员的帧会被忽略。
有了射门候选者后,我们仍不能确定一定是发生了射门,例如球员在传球时,足球碰到了某名球员从而发生反弹,弹向球门。因此我们需要进一步确定候选射门者,通过对候选射门者的身体姿态分析,我们可以确定是不是发生了射门行为。像刚才提到的球反弹到其他球员身上满足射门条件的,此时候选射门者的身体姿势是不符合射门姿势的,因此该射门候选片段会被判断为无效射门。
2.3.2 进球识别
进球是一场足球比赛中最重要的时刻,因此对于进球的自动检测对于足球视频智能分析有重大意义。进球识别需要足球检测、球门检测。进球识别主要有以下流程:
- 判断足球与球门的位置关系,如果足球在球门外则肯定没进球。
- 判断足球运动轨迹,如果足球轨迹发生了大角度的突变,或者轨迹的运动速度逐渐衰减为0,则确定为进球。
基于当前帧以及几帧历史帧的轨迹,确定与球门线是否相交,如果未相交,则不是进球。相交之后,还要根据轨迹的运动状态进一步确定是否发生了进球。当轨迹的角度发生了较大的变化,例如超过90度,此时球员有可能从球门区域以外的地方发生了射门,然后足球转向球门进球。另外足球在进球并且落地后,受到守门员的扑救或者球网的阻力,速度肯定会逐渐慢下来衰减到0,因此通过这两点可以进一步确定是不是发生了进球。
三 未来展望
检测、追踪、识别等技术的发展也促进了足球视频智能分析精度的提升,但在检测追踪等领域面临的问题在足球智能分析中会被进一步放大,足球像素过小、足球的高速移动、球员的相互遮挡、球员跌倒等都对检测与追踪提出了很大的挑战,未来这些问题的解决仍依赖于检测和跟踪技术的发展。
同时人体分析与理解,Transformer、多模态等技术也有可能引入到足球视频智能分析中来,让足球的智能分析手段变得更丰富多彩,后续我们也会引入篮球领域的智能分析、舞蹈领域的智能分析,谢谢大家。