0

0

基于飞桨实现乒乓球时序动作定位大赛-baseline

P粉084495128

P粉084495128

发布时间:2025-07-17 16:53:43

|

681人浏览过

|

来源于php中文网

原创

时序动作定位(提案生成)是计算机视觉和视频分析领域一个具有的挑战性的任务。本次比赛不同于以往的ActivityNet-TAL,FineAction等视频时序检测动作定位比赛,我们采用了更精细的动作数据集--乒乓球转播画面,该数据集具有动作时间跨度短,分布密集等特点,给传统模型精确定位细粒度动作带来了很大挑战。

☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepSeek R1 模型☜☜☜

基于飞桨实现乒乓球时序动作定位大赛-baseline - php中文网

基于飞桨实现乒乓球时序动作定位大赛-baseline

基于飞桨实现乒乓球时序动作定位大赛:baseline模型现已开放,采用PaddleVideo中的BMN模型。欢迎开发者贡献更好的作品~

赛题介绍

时序动作定位(提案生成)是计算机视觉和视频分析领域一个具有的挑战性的任务。本次比赛不同于以往的ActivityNet-TAL,FineAction等视频时序检测动作定位比赛,我们采用了更精细的动作数据集--乒乓球转播画面,该数据集具有动作时间跨度短,分布密集等特点,给传统模型精确定位细粒度动作带来了很大挑战。本次比赛的任务即针对乒乓球转播画面视频面对镜头的运动员定位其挥拍动作(时序动作提案生成)。

基于飞桨实现乒乓球时序动作定位大赛-baseline - php中文网
视频来源:2020东京奥运会乒乓球男单决赛

竞赛数据集

数据集包含了19-21赛季兵乓球国际(世界杯、世锦赛、亚锦赛,奥运会)国内(全运会,乒超联赛)比赛标准单机位高清转播画面特征信息。其中包含912条视频特征文件,每个视频时长在0~6分钟不等,特征维度为2048,以pkl格式保存。我们对特征数据中面朝镜头的运动员的回合内挥拍动作进行了标注,单个动作时常在0~2秒不等,训练数据为729条标注视频,A测数据为91条视频,B测数据为92条视频,训练数据标签以json格式给出

  • 训练数据集与测试数据集的目录结构如下所示:
| - data
	| - data123004
		| - Features_competition_test_A.tar.gz
	| - data122998
		| - Features_competition_train.tar.gz
		| - label_cls14_train.json
  • 本次比赛最新发布的数据集共包含训练集、A榜测试集、B榜测试集(第二阶段公布)三个部分,其中训练集共729个样本(视频),A榜测试集共91个样本,B榜测试集共92个样本;
  • Features目录中包含912条ppTSM抽取的视频特征,特征保存为pkl格式,文件名对应视频名称,读取pkl之后以(num_of_frames, 2048)向量形式代表单个视频特征,如下示例
{'image_feature': array([[-0.00178786, -0.00247065,  0.00754537, ..., -0.00248864,
        -0.00233971,  0.00536158],
       [-0.00212389, -0.00323782,  0.0198264 , ...,  0.00029546,
        -0.00265382,  0.01696528],
       [-0.00230571, -0.00363361,  0.01017699, ...,  0.00989012,
        -0.00283369,  0.01878656],
       ...,
       [-0.00126995,  0.01113492, -0.00036558, ...,  0.00343453,
        -0.00191288, -0.00117079],
       [-0.00129959,  0.01329842,  0.00051888, ...,  0.01843636,
        -0.00191984, -0.00067066],
       [-0.00134973,  0.02784026, -0.00212213, ...,  0.05027904,
        -0.00198008, -0.00054018]], dtype=float32)}
<class 'numpy.ndarray'>
  • 训练标签见如下格式:
# label_cls14_train.json
{
    'fps': 25,    #视频帧率
    'gts': [
        {
            'url': 'name_of_clip.mp4',      #名称
            'total_frames': 6341,    #总帧数(这里总帧数不代表实际视频帧数,以特征数据集维度信息为准)
            'actions': [
                {
                    "label_ids": [7],   #动作类型编号
                    "label_names": ["name_of_action"],     #动作类型
                    "start_id": 201,  #动作起始时间,单位为秒
                    "end_id": 111    #动作结束时间,单位为秒
                },
                ...
            ]
        },
        ...
    ]
}

数据集下载

数据集可以从比赛链接处下载,报名成功后,即可获取数据集下载链接。数据集下载完成后,可以将数据集上传到aistudio项目中,上传后的数据集路径在/home/aistudio/data目录下。
如果是直接fork的本项目,在/home/aistudio/data 目录下已经包含了下载好的训练数据和测试数据。

In [ ]
# 检查数据集所在路径!tree -L 3 /home/aistudio/data

创建训练和测试特征数据集存放文件夹,并解压缩相应数据到其中:

In [14]
%cd /home/aistudio/data# 创建特征数据集存放目录%mkdir Features_train Features_test# 分别解压缩训练和测试特征数据到各自目录下,解压完成后删除原压缩文件,节省空间!tar -xf data122998/Features_competition_train.tar.gz -C /home/aistudio/data/Features_train --strip-components 1 && rm -rf data122998/Features_competition_train.tar.gz
!tar -xf data123004/Features_competition_test_A.tar.gz -C /home/aistudio/data/Features_test --strip-components 1 && rm -rf data123004/Features_competition_test_A.tar.gz 
# 复制训练标签到data目录下%cp data122998/label_cls14_train.json /home/aistudio/data

Baseline模型BMN介绍

BMN模型是百度自研,2019年ActivityNet夺冠方案,为视频动作定位问题中proposal的生成提供高效的解决方案,在PaddlePaddle上首次开源。此模型引入边界匹配(Boundary-Matching, BM)机制来评估proposal的置信度,按照proposal开始边界的位置及其长度将所有可能存在的proposal组合成一个二维的BM置信度图,图中每个点的数值代表其所对应的proposal的置信度分数。网络由三个模块组成,基础模块作为主干网络处理输入的特征序列,TEM模块预测每一个时序位置属于动作开始、动作结束的概率,PEM模块生成BM置信度图。

基于飞桨实现乒乓球时序动作定位大赛-baseline - php中文网

具体模型设计可参考原论文,BMN: Boundary-Matching Network for Temporal Action Proposal Generation, Lin et al., Baidu Inc.

基于PaddleVideo的BMN模型训练

本项目基于PaddleVideo项目完成识别网络训练:

  • PaddleVideo "develop" branch github
  • PaddlePaddle-gpu==2.1.2

下载PaddleVideo代码

In [1]
%cd ~/work/# 从Github上下载PaddleVideo代码#!git clone https://github.com/PaddlePaddle/PaddleVideo.git# 若网速较慢,可使用如下方法下载!git clone https://hub.fastgit.org/PaddlePaddle/PaddleVideo.git
In [11]
# 进入到PaddleVideo目录下%cd ~/work/PaddleVideo/
In [12]
# 检查源代码文件结构!tree /home/aistudio/work/ -L 2

配置代码环境,安装依赖库

In [13]
# 配置PaddleVideo环境!python3.7 -m pip install --upgrade pip
!python3.7 -m pip install --upgrade -r requirements.txt# 配置BMN前处理环境# %cd ~/work/BMN/ # !python3.7 -m pip install --upgrade -r requirements.txt

注:可忽略这里兼容性报错的报错

BMN训练数据处理

运行脚本get_instance_for_bmn.py,提取二分类的proposal,windows=8,根据gts和特征得到BMN训练所需要的数据集:

#数据格式
{
  "5679b8ad4eac486cbac82c4c496e278d_133.56_141.56": {     #视频名称_片段起始时间_片段结束时间(s)
          "duration_second": 8.0,
          "duration_frame": 200,
          "feature_frame": 200,
          "subset": "train",
          "annotations": [
              {
                  "segment": [
                      6.36,#动作起始时间
                      8.0  #动作结束时间
                  ],
                  "label": "11.0",
                  "label_name": "普通"
              }
          ]
      },
      ...
}

运行前更改输入输出路径:

GentleAI
GentleAI

GentleAI是一个高效的AI工作平台,为普通人提供智能计算、简单易用的界面和专业技术支持。让人工智能服务每一个人。

下载
dataset = "/home/aistudio/data"feat_dir = dataset + '/Features_train'out_dir = dataset + '/Input_for_bmn'label_files = {    'train': 'label_cls14_train.json',    'validation': 'label_cls14_val.json'  }
In [15]
# 数据预处理%cd /home/aistudio/work/PaddleVideo/applications/TableTennis/# 生成验证集!python3.7 val_split.py# 生成bmn训练数据和标签!python3.7 get_instance_for_bmn.py

完成该步骤后,数据存储位置/home/aistudio/data/Input_for_bmn/

In [16]
# 存放地址检查 -- BMN训练输入数据和标签!tree /home/aistudio/data/Input_for_bmn/ -L 1

训练BMN前矫正标签和数据是否一一对应,数据中一些无对应标签的feature将不参与训练; 运行前修改输入输出路径:

###
url = '/home/aistudio/data/Input_for_bmn/feature/'
###

###
with open('/home/aistudio/data/Input_for_bmn/label.json') as f:
    data = json.load(f)
###

###
jsonFile = open('/home/aistudio/data/Input_for_bmn/label_fixed.json', 'w')
###
In [17]
# 运行标签修正脚本!python3.7 fix_bad_label.py

BMN训练

数据准备完毕后,可以通过如下方式启动训练:

#4卡训练%cd ~/work/PaddleVideo/
export CUDA_VISIBLE_DEVICES=0,1,2,3python -B -m paddle.distributed.launch --gpus="0,1,2,3"  --log_dir=log_bmn main.py  --validate -c /home/aistudio/work/PaddleVideo/applications/TableTennis/configs/bmn_tabletennis.yaml

这里我们使用单卡训练:

python -B main.py  --validate -c /home/aistudio/work/PaddleVideo/applications/TableTennis/configs/bmn_tabletennis.yaml

训练前修改配置文件/home/aistudio/work/PaddleVideo/applications/TableTennis/configs/bmn_tabletennis.yaml中特征和标签的地址

###DATASET:                                            #DATASET field
  batch_size: 4                                 #single card bacth size
  test_batch_size: 1
  num_workers: 8
  train:    format: "BMNDataset"
    file_path: "/home/aistudio/data/Input_for_bmn/label_fixed.json"
    subset: "train"######PIPELINE:                                           #PIPELINE field
  train:                                            #Mandotary, indicate the pipeline to deal with the training data
    load_feat:
      name: "LoadFeat"
      feat_path: "/home/aistudio/data/Input_for_bmn/feature"###
In [ ]
# 回到PaddleVideo主目录下%cd ~/work/PaddleVideo/ 
# 运行训练脚本!python3.7 -B main.py  --validate -c /home/aistudio/work/PaddleVideo/applications/TableTennis/configs/bmn_tabletennis.yaml# !python3.7 -B main.py  --validate -c /home/aistudio/work/BMN/configs/bmn_tabletennis_v2.0.yaml

训练完毕后,参数模型可以在 /home/aistudio/work/PaddleVideo/output/BMN 中找到。

BMN预测推理

完成训练后,将训练好的BMN模型转为预测模式:
注:大家可以选择效果最佳的模型进行输出,我们也提供训练好的模型供大家下载测试,下载后直接替换-p后面的模型即可

In [ ]
# -c 指定配置文件,-p 指定训练好的模型参数, -o 指定模型输出目录 !python3.7 tools/export_model.py -c /home/aistudio/work/PaddleVideo/applications/TableTennis/configs/bmn_tabletennis.yaml -p /home/aistudio/work/PaddleVideo/output/BMN/BMN_epoch_00001.pdparams -o inference/BMN

在PaddleVideo/applications/TableTennis/目录下找到推理预测脚本:

In [ ]
# 跳转到脚本目录下%cd /home/aistudio/work/PaddleVideo/applications/TableTennis/extractor/

修改脚本extract_bmn_for_tabletennis.py中输入及输出路径:

###sys.path.append(    "/home/aistudio/work/PaddleVideo/applications/TableTennis/predict/action_detect/")######
    dataset_dir = '/home/aistudio/data/Features_test/'
    output_dir = '/home/aistudio/data'###

修改推理配置文件configs/configs.yaml中导出的预测模型路径:

###BMN:
    name: "BMN"
    model_file: "/home/aistudio/work/PaddleVideo/inference/BMN/BMN.pdmodel"
    params_file: "/home/aistudio/work/PaddleVideo/inference/BMN/BMN.pdiparams"###
In [ ]
# 运行推理预测脚本!python3.7 extract_bmn_for_tabletennis.py

将推理结果转换为比赛指定提交格式:

In [ ]
# 跳转至脚本目录下%cd /home/aistudio/work/PaddleVideo/applications/TableTennis/datasets/script/

修改脚本submission_format_transfer.py中输入及输出路径:

###with open('/home/aistudio/data/Output_for_bmn/prop.json') as f:
    data = json.load(f)######jsonFile = open('/home/aistudio/data/Output_for_bmn/submission.json', 'w')###
In [ ]
# 运行脚本!python3.7 submission_format_transfer.py

热门AI工具

更多
DeepSeek
DeepSeek

幻方量化公司旗下的开源大模型平台

豆包大模型
豆包大模型

字节跳动自主研发的一系列大型语言模型

WorkBuddy
WorkBuddy

腾讯云推出的AI原生桌面智能体工作台

腾讯元宝
腾讯元宝

腾讯混元平台推出的AI助手

文心一言
文心一言

文心一言是百度开发的AI聊天机器人,通过对话可以生成各种形式的内容。

讯飞写作
讯飞写作

基于讯飞星火大模型的AI写作工具,可以快速生成新闻稿件、品宣文案、工作总结、心得体会等各种文文稿

即梦AI
即梦AI

一站式AI创作平台,免费AI图片和视频生成。

ChatGPT
ChatGPT

最最强大的AI聊天机器人程序,ChatGPT不单是聊天机器人,还能进行撰写邮件、视频脚本、文案、翻译、代码等任务。

相关专题

更多
TypeScript类型系统进阶与大型前端项目实践
TypeScript类型系统进阶与大型前端项目实践

本专题围绕 TypeScript 在大型前端项目中的应用展开,深入讲解类型系统设计与工程化开发方法。内容包括泛型与高级类型、类型推断机制、声明文件编写、模块化结构设计以及代码规范管理。通过真实项目案例分析,帮助开发者构建类型安全、结构清晰、易维护的前端工程体系,提高团队协作效率与代码质量。

26

2026.03.13

Python异步编程与Asyncio高并发应用实践
Python异步编程与Asyncio高并发应用实践

本专题围绕 Python 异步编程模型展开,深入讲解 Asyncio 框架的核心原理与应用实践。内容包括事件循环机制、协程任务调度、异步 IO 处理以及并发任务管理策略。通过构建高并发网络请求与异步数据处理案例,帮助开发者掌握 Python 在高并发场景中的高效开发方法,并提升系统资源利用率与整体运行性能。

46

2026.03.12

C# ASP.NET Core微服务架构与API网关实践
C# ASP.NET Core微服务架构与API网关实践

本专题围绕 C# 在现代后端架构中的微服务实践展开,系统讲解基于 ASP.NET Core 构建可扩展服务体系的核心方法。内容涵盖服务拆分策略、RESTful API 设计、服务间通信、API 网关统一入口管理以及服务治理机制。通过真实项目案例,帮助开发者掌握构建高可用微服务系统的关键技术,提高系统的可扩展性与维护效率。

178

2026.03.11

Go高并发任务调度与Goroutine池化实践
Go高并发任务调度与Goroutine池化实践

本专题围绕 Go 语言在高并发任务处理场景中的实践展开,系统讲解 Goroutine 调度模型、Channel 通信机制以及并发控制策略。内容包括任务队列设计、Goroutine 池化管理、资源限制控制以及并发任务的性能优化方法。通过实际案例演示,帮助开发者构建稳定高效的 Go 并发任务处理系统,提高系统在高负载环境下的处理能力与稳定性。

51

2026.03.10

Kotlin Android模块化架构与组件化开发实践
Kotlin Android模块化架构与组件化开发实践

本专题围绕 Kotlin 在 Android 应用开发中的架构实践展开,重点讲解模块化设计与组件化开发的实现思路。内容包括项目模块拆分策略、公共组件封装、依赖管理优化、路由通信机制以及大型项目的工程化管理方法。通过真实项目案例分析,帮助开发者构建结构清晰、易扩展且维护成本低的 Android 应用架构体系,提升团队协作效率与项目迭代速度。

92

2026.03.09

JavaScript浏览器渲染机制与前端性能优化实践
JavaScript浏览器渲染机制与前端性能优化实践

本专题围绕 JavaScript 在浏览器中的执行与渲染机制展开,系统讲解 DOM 构建、CSSOM 解析、重排与重绘原理,以及关键渲染路径优化方法。内容涵盖事件循环机制、异步任务调度、资源加载优化、代码拆分与懒加载等性能优化策略。通过真实前端项目案例,帮助开发者理解浏览器底层工作原理,并掌握提升网页加载速度与交互体验的实用技巧。

102

2026.03.06

Rust内存安全机制与所有权模型深度实践
Rust内存安全机制与所有权模型深度实践

本专题围绕 Rust 语言核心特性展开,深入讲解所有权机制、借用规则、生命周期管理以及智能指针等关键概念。通过系统级开发案例,分析内存安全保障原理与零成本抽象优势,并结合并发场景讲解 Send 与 Sync 特性实现机制。帮助开发者真正理解 Rust 的设计哲学,掌握在高性能与安全性并重场景中的工程实践能力。

227

2026.03.05

PHP高性能API设计与Laravel服务架构实践
PHP高性能API设计与Laravel服务架构实践

本专题围绕 PHP 在现代 Web 后端开发中的高性能实践展开,重点讲解基于 Laravel 框架构建可扩展 API 服务的核心方法。内容涵盖路由与中间件机制、服务容器与依赖注入、接口版本管理、缓存策略设计以及队列异步处理方案。同时结合高并发场景,深入分析性能瓶颈定位与优化思路,帮助开发者构建稳定、高效、易维护的 PHP 后端服务体系。

532

2026.03.04

AI安装教程大全
AI安装教程大全

2026最全AI工具安装教程专题:包含各版本AI绘图、AI视频、智能办公软件的本地化部署手册。全篇零基础友好,附带最新模型下载地址、一键安装脚本及常见报错修复方案。每日更新,收藏这一篇就够了,让AI安装不再报错!

171

2026.03.04

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
最新Python教程 从入门到精通
最新Python教程 从入门到精通

共4课时 | 22.5万人学习

Django 教程
Django 教程

共28课时 | 5万人学习

SciPy 教程
SciPy 教程

共10课时 | 1.9万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号