Sports_Game_tracker 体育赛事主体识别追踪

Sports_Game_tracker是基于飞桨深度学习框架的实时行人分析工具PP-Human进行功能扩展的赛事识别追踪工具,目前的功能有:运动员追踪、足球控球检测、足球检测、动作关键点检测、运动速度粗算、球员队伍分类、单人环境过滤

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

1. 快速开始

1.1 环境准备

# 解压Sports_Game_Tracker
!unzip /home/aistudio/data/data161855/Sports_Game_Tracker.zip
# 安装依赖
!pip install -r /home/aistudio/Sports_Game_Tracker/requirements.txt

1.2 解压模型

功能模型名
球员检测mot_ppyoloe_l_36e_pipeline
足球检测ppyoloe_crn_l_80e_football
控球检测ppyoloe_crn_s_80e_person_football
# 解压模型
!unzip /home/aistudio/data/data161855/mot_ppyoloe_l_36e_pipeline.zip -d /home/aistudio/Sports_Game_Tracker/model
!unzip /home/aistudio/data/data161855/ppyoloe_crn_l_80e_football.zip -d /home/aistudio/Sports_Game_Tracker/model
!unzip /home/aistudio/data/data161855/ppyoloe_crn_s_80e_person_football.zip -d /home/aistudio/Sports_Game_Tracker/model

1.3 推理体验

足球追踪检测

运行以下代码可执行足球追踪与轨迹标识(定镜头效果会好一些)

在这里插入图片描述

# 足球追踪检测
%cd /home/aistudio/Sports_Game_Tracker
!python pipeline/pipeline.py --config pipeline/config/infer_cfg_pphuman_football.yml --draw_center_traj --device=gpu --output_dir=output/football --video_file=/home/aistudio/work/test-soccer.mp4
球员追踪及球队颜色分类

运行以下代码可执行球员追踪与球衣颜色分类

在这里插入图片描述

# 球员追踪、控球检测、队伍分类
!python pipeline/pipeline.py --config pipeline/config/infer_cfg_pphuman_player.yml --device=gpu --output_dir=output/football --video_file=/home/aistudio/work/test-soccer1.mp4 --team_clas white RMA red LIV
滑雪追踪、单人过滤、速度粗算

运行以下代码可执行动作追踪、单人环境过滤(过滤站立着的无关观众)与速度粗算(以滑雪为例)

在这里插入图片描述

# 单人滑雪追踪,包括动作追踪与速度粗算
!python pipeline/pipeline.py --config pipeline/config/infer_cfg_pphuman_ski.yml --video_file=/home/aistudio/work/test-ski.MP4 --device=gpu --output_dir=output/ski --singleplayer skier --speed_predict

2. 配置文件与参数说明

2.1 配置文件

相关配置位于pipeline/config路径下,功能及配置文件对应表单如下:

功能配置文件追踪配置文件
球员追踪与控球检测infer_cfg_pphuman_player.ymltracker_config_player.yml
足球追踪infer_cfg_pphuman_football.ymltracker_config_football.yml
滑雪追踪infer_cfg_pphuman_ski.ymltracker_config_player.yml

具体配置及模型替换等参阅:链接

2.2 参数说明

较PP-Human新增的参数:

参数是否必须含义
–speed_predictOption是否开启速度粗算,默认为False,未设置mapping_ratio时显示像素位移速度
–mapping_ratioOption视频像素与实际距离对应,默认为None,输入两个浮点数,分别代表x轴与y轴对应的实际距离,需先开启--speed_predict如:--mapping_ratio 30 100代表视频全宽30米,全高100米。(对有透视变化的视频请勿使用)
–x_ratioOptionx轴像素分段实际距离对应,每三个参数为一组。(x1,x2,dis)代表x1与x2之间映射x轴实际距离dis。需先开启--speed_predict如:--x_ratio 23 45.5 5 代表23到45.5之间实际距离为5米
–y_ratioOptiony轴像素分段实际距离对应,每三个参数为一组。(y1,y2,dis)代表x1与x2之间映射x轴实际距离dis。需先开启--speed_predict如:--y_ratio 23 45.5 5 代表23到45.5之间实际距离为5米
–team_clasOption基于颜色识别的运动员球队分类,接受4个字符串变量(color1,name1,color2,name2)。其中颜色接受的参数为:[black, white, blue, red, yellow, green, purple, orange]。如:--team_clas white RMA red LIV
–singleplayerOption是否开启单人过滤,默认为None,输入一个字符串代表运动员名称,主要过滤站立的观众。如:--singleplayer ZhangSan

PP-Human原有的参数:

来自PP-Human文档链接

参数是否必须含义
–configYes配置文件路径
–model_dirOptionPP-Human中各任务模型路径,优先级高于配置文件, 例如--model_dir det=better_det/ attr=better_attr/
–image_fileOption需要预测的图片
–image_dirOption要预测的图片文件夹路径
–video_fileOption需要预测的视频
–camera_idOption用来预测的摄像头ID,默认为-1(表示不使用摄像头预测,可设置为:0 - (摄像头数目-1) ),预测过程中在可视化界面按q退出输出预测结果到:output/output.mp4
–deviceOption运行时的设备,可选择CPU/GPU/XPU,默认为CPU
–output_dirOption可视化结果保存的根目录,默认为output/
–run_modeOption使用GPU时,默认为paddle, 可选(paddle/trt_fp32/trt_fp16/trt_int8)
–enable_mkldnnOptionCPU预测中是否开启MKLDNN加速,默认为False
–cpu_threadsOption设置cpu线程数,默认为1
–trt_calib_modeOptionTensorRT是否使用校准功能,默认为False。使用TensorRT的int8功能时,需设置为True,使用PaddleSlim量化后的模型时需要设置为False
–do_entrance_countingOption是否统计出入口流量,默认为False
–draw_center_trajOption是否绘制跟踪轨迹,默认为False

3. 模型训练与二次开发

Sports_Game_trackerPP-Human二次开发而来,可视化功能扩展教程等可参阅:利用PP-Human完成足球赛追踪二次开发

3.1 足球追踪

使用PP-yoloe模型训练,数据集链接:足球赛环境下足球目标标注 - 飞桨AI Studio (baidu.com)

训练教程可参考:多目标跟踪任务二次开发

配置文件:

_BASE_: [
  '../datasets/final_dataset-football.yml',
  '../runtime.yml',
  '../ppyoloe/_base_/optimizer_300e.yml',
  '../ppyoloe/_base_/ppyoloe_crn.yml',
  '../ppyoloe/_base_/ppyoloe_reader.yml',
]

log_iter: 40
snapshot_epoch: 2
weights: output/ppyoloe_crn_l_80e_football/model_final

pretrain_weights: https://paddledet.bj.bcebos.com/models/ppyoloe_crn_l_80e_visdrone.pdparams
depth_mult: 1.0
width_mult: 1.0


epoch: 150
LearningRate:
  base_lr: 0.001
  schedulers:
    - !CosineDecay
      max_epochs: 150
    - !LinearWarmup
      start_factor: 0.
      epochs: 1

PPYOLOEHead:
  static_assigner_epoch: -1

3.2 控球检测

使用PP-yoloe模型训练,数据集链接:足球赛环境下足球目标标注 - 飞桨AI Studio (baidu.com)

训练教程可参考:基于人体id的检测模型开发

配置文件:

_BASE_: [
  '../datasets/football.yml',
  '../runtime.yml',
  '../ppyoloe/_base_/optimizer_300e.yml',
  '../ppyoloe/_base_/ppyoloe_crn.yml',
  '../ppyoloe/_base_/ppyoloe_reader.yml',
]

log_iter: 100
snapshot_epoch: 10
weights: output/ppyoloe_crn_l_80e_person_football/model_final

pretrain_weights: https://paddledet.bj.bcebos.com/models/ppyoloe_crn_s_80e_visdrone.pdparams
depth_mult: 0.33
width_mult: 0.50


TrainReader:
  batch_size: 16

LearningRate:
  base_lr: 0.001

epoch: 80
LearningRate:
  base_lr: 0.001
  schedulers:
    - !CosineDecay
      max_epochs: 80
    - !LinearWarmup
      start_factor: 0.
      epochs: 1

PPYOLOEHead:
  static_assigner_epoch: -1

3.3 球员追踪

使用PP-Human的默认行人追踪模型

PP-YOLOE Human 检测模型

4. 贡献者与问题

AIstudio主页:链接

面临的问题:足球小目标检测效果待优化,后续可能改用PPYOLOE的小目标检测专版

此文章为搬运
原项目链接

Logo

学大模型,用大模型上飞桨星河社区!每天8点V100G算力免费领!免费领取ERNIE 4.0 100w Token >>>

更多推荐