kaggle新赛DFL - Bundesliga Data Shootout(德甲)基础比赛思路分享
比赛介绍
本次给大家分享的是DFL - Bundesliga Data Shootout
比赛的介绍和基础的解决方案,同时也会给出比赛的基础baseline。 希望对各位同学有帮助。【关注“学姐带你玩AI”公众号回复“报名新赛”添加小享报名or领取基础baseline】
比赛介绍Deutsche Fußball Liga (DFL)总部
位于法兰克福,负责管理德国的职业足球联赛。在本次比赛中我们将使用DFL收集的足球视频,完成足球场上的自动事件监测。通过开发的算法模型,有助于深入了解球队和球员的表现。
比赛数据集包括分成两半的九场足球比赛的视频记录。您面临的挑战是在这些视频中检测三种足球事件。
足球场上事件介绍:
https://www.kaggle.com/competitions/dfl-bundesliga-data-shootout/overview/event-descriptions
challenge
play
throwin
比赛数据集介绍:
train文件夹:
用作训练数据的视频的文件夹,包括八场比赛的视频记录。其中四场比赛包括两半,而其他四场比赛只包括一半。test文件夹:
用作测试数据的视频的文件夹。公共排行榜的测试数据包括一场完整比赛和四场半场比赛的视频记录,每场比赛的另一半在训练集中。clips文件夹:
另外十场比赛的短片,没有事件注释。您可能希望使用这些剪辑来帮助您的模型泛化到训练数据中未表示的环境。train.csv:
train/ 文件夹中视频的事件标注。
评测指标
比赛评价指标:
https://www.kaggle.com/competitions/dfl-bundesliga-data-shootout/overview/evaluation
评测脚本:
https://www.kaggle.com/code/ryanholbrook/competition-metric-dfl-event-detection-ap
检测通过特定于类的误差容限与真实事件匹配,并按照置信度递减进行排序。每个类的时间戳误差容限(以秒为单位)为:
Challenge:
[ 0.30, 0.40, 0.50, 0.60, 0.70 ]Play:
[ 0.15, 0.20, 0.25, 0.30, 0.35 ]Throw-In:
[ 0.15, 0.20, 0.25, 0.30, 0.35 ]
提交要求
必须通过Notebook
提交本次比赛。为了在提交后“提交”按钮处于活动状态!且需要注意:
CPU Notebook <= 9 hours run-time
GPU Notebook <= 9 hours run-time
Internet access disabled
Freely & publicly available external data is allowed, including pre-trained models
Submission file must be named
submission.csv
这是一场代码竞赛(Kernel赛),这意味着您将提交一个对隐藏测试集进行预测的笔记本。此处可见的测试集只是帮助您编写提交代码的示例。当您提交笔记本进行评分时,此示例数据将替换为实际测试数据。
测试集示例测试视频只是短片(约30秒),而真正隐藏的测试视频是完整的一半(约50分钟)。视频的名称和数量也可能不同。 为确保您的提交成功完成,您应该使您的代码对此类变化具有健壮性。有关提示,请参阅我们的代码竞赛调试页面。
基础思路
本次比赛的任务是对足球视频中的事件进行检测,主要是3种类型。当然除了3种类型事件之外还有一类背景类,也需要考虑。
我们可以从以下几个角度解决:
思路1:从单张图片进行识别
思路2:从视频角度进行识别
思路3:从球员运动规律进行识别
在本次比赛中虽然比赛数据集只有40GB以内,但由于需要对视频的角度进行事件监测,因此需要考虑磁盘大小和预测速度。
如果对视频每帧进行抽帧,则需要100GB+磁盘;
如果对视频事件前后进行抽帧,则需要10GB+磁盘;
如果对视频切分为片段,也需要10GB+磁盘;
这里我们主要介绍思路1的解决方法,也就是从图片的角度进行解决。具体包括的步骤为:
对训练集进行抽帧
对事件训练模型进行分类
对测试集进行抽帧进行预测
步骤1:对训练集进行抽帧
对于视频事件在训练集中有事件的时间,结合时间的误差范围我们可以大致确定事件的视频范围,大致可以整理为如下的思路。在误差范围内是一个对应的事件,在范围之外则为backgraund类型
。
对应的代码为:
步骤2:对事件训练模型进行分类
接下来我们需要做的事情为定义模型,对图像进行分类训练:
常规的训练函数,需要提前定义优化器和训练过程:
步骤3:对测试集抽帧进行预测
对测试集视频依次进行抽帧:
接下来需要对测试集所有的图片依次进行预测,得到类别结果。当然也可以考虑对视频的类别序列进行划窗和过滤的后处理操作。这个我们后续将会介绍。
后续思路
如果各位同学使用视频抽帧分类的思路,需要运行2部分代码:
抽帧部分代码,4小时 + 训练训练代码,6小时
模型线上预测代码,3小时
上述思路如果在训练比较完整的过程中可以取得0.3左右的分数,当然这个比赛也是非常吃资源的。后续我们将分享更多的思路。【关注“学姐带你玩AI”公众号回复“报名新赛”添加小享报名or领取基础baseline】