当前位置: 首页 > 科技观察

今晚,为梅西和莫德里奇守夜!这个CV模型让你猜球赢

时间:2023-03-15 10:53:03 科技观察

前天,C罗的粉丝们很伤心。12月11日卡塔尔世界杯,葡萄牙不敌摩洛哥,止步八强。C罗的世界杯之旅以遗憾告终。#C罗说梦想了#在这个热搜之下,不知聚集了多少心碎的粉丝。这场葡萄牙与摩洛哥的比赛,出现了0:1的爆冷结果。C罗哭了,内马尔哭了,下一个会是谁?然而,还没等我们从为C罗的悲伤中走出来,今晚又将迎来梅西与莫德里奇的对决!怕心脏受不了?现在,有了这样的模型,你或许可以在比赛开始5分钟内,提前知道比赛是否会爆冷。当计算机视觉用在足球上时,这位出国的机器学习工程师一直希望能将计算机视觉(CV)和他最喜欢的足球结合起来。三年前,他尝试使用YOLOv3对篮球场上的球员进行检测和分类。本届世界杯让他重新拾起了这个念头。这一次,他使用YOLOv5和ByteTRACK的组合来跟踪球场上的足球运动员。第1步:构建预训练检测器最初,Skalski希望能够跳过自定义模型训练。他希望从开始到结束只需要几个小时,快速修复。因为用于训练YOLOv5和YOLOv7模型的流行COCO数据集包含他最感兴趣的两个类——人和运动球,这让他非常乐观地认为它可以从COCOcheckpoints进行训练。他很快从Kaggle的德甲数据大战中下载了几十个足球比赛短视频,并使用预训练好的模型进行测试。在尝试了iou_threshold、confidence_threshold、input_resolution等各种配置后,他得到了令人失望的结果。在此模型中,仅在几个视频帧上检测到球,因为数量太少,模型无法可靠地跟踪如此小且快速移动的物体。另一方面,模型会检测很多场外的冗余对象——教练、球迷、维修站工作人员、摄制组等。对于这些冗余对象,需要编写额外的检测和过滤逻辑,太麻烦了。可以看出,即使数据集包含所需的类别,用于推理的视频也必须与用于训练的图像有很大不同。在这种情况下,Skalski只能创建自己的数据集并训练自定义模型。第2步:构建自定义检测器训练自定义模型需要付出很多努力。主要原因是为了标注图像,需要做大量的手工工作。由于时间紧迫,需要尽可能简化流程。Skalski从上述Kaggle数据集中选择了数十个视频,并使用FFmpeg从每个视频中提取10帧——每3秒一个。接下来是对图像进行自动初步标注,将检测到的物体保存到txt文件中,以利用预训练好的YOLOv5模型。接下来,第二阶段是改善数据。虽然计算机已经完成了90%的工作,但人工修正仍然花费了Skalski将近五个小时。同时,他还引入了两个额外的对象类——裁判和守门员。他的工作成果在RoboflowUniverse上可见。该数据集是开源的,任何人都可以免费使用。预训练vs自定义足球运动员检测器自定义训练结果让Skalski有信心解决上述两个问题。但不幸的是,该模型在检测守门员类别时仍然存在问题,这可能是由于分类不平衡造成的。所以,接下来,斯卡尔斯基把每个守门员都当成了普通的足球运动员。Skalski的模型和他的数据集都可以在RoboflowUniverse上找到。只需拖放测试图像。第3步:跟踪对象Skalski使用SOTA多对象跟踪器之一的ByteTRACK来跟踪视频中的对象。ByteTRACK内部不使用任何神经网络。这个模型的力量完全来自一个简单的数学计算:比较跨帧的边界框位置。最重要的是,ByteTRACK不负责检测,只负责跟踪。因此,它不需要像其他一些跟踪器那样单独训练。因此,ByteTRACK使我们能够轻松更换检测器,而无需重新构建整个代码。下面是一个简化的代码片段,您需要在自己的项目中使用ByteTRACK起始代码。在ByteTRACK项目中,框架上的每个对象都有一个唯一的ID。以下是模型的结果:ByteTRACK单帧结果如您所见,每个玩家都被分配了一个唯一的编号并在帧之间进行跟踪。当然,检测和跟踪只是一个开始。有了这些,我们就可以更上一层楼了!例如,现在可以快速分析行动过程以了解球在球员之间的移动方式、计算球员移动的距离或定位他们最常出现的场地区域。网友:不赌可惜了。有网友表示:既然你掌握了这么多信息,不赌真的亏了。对此,有激动的网友表示:“这也太梦幻了吧!我一直想做这样的东西卖给赌徒。”“你可以呈现每个进攻球员每一秒的传球状态和Ready状态。甚至可以对从未被超越的选手进行360度的成绩评估,这比估计赔率准确多了!”也有网友说:梦见足球比赛的实时小地图。有认真的网友问:“这个脚本只适合固定的拍摄角度吗,比如从一侧覆盖整个场地?能不能用在其他的镜头角度,比如关注3-4个玩家。”主要回复这个帖子:“我觉得我们可以从其他角度的用例中添加数据,重新训练模型,它应该表现得像嗯。”而该网友表示:“感觉换个角度训练数据不行。我的想法是,继续在全视角运行脚本,但要注意球的位置和球周围的球员,并在任何其他提要上标记数据。”