yolov5足球运动分析-速度分析-足球跟踪

足球分析项目

在这里插入图片描述

引言

在现代体育分析领域,利用先进的计算机视觉技术和机器学习模型对比赛视频进行深入解析已成为一种趋势。本项目旨在通过YOLO(You Only Look Once)这一顶级的人工智能目标检测模型来识别并跟踪足球比赛中的球员、裁判以及足球。此外,我们还将训练该模型以提高其性能,并使用K-means聚类算法基于球员队服颜色将他们分配到各自的队伍中。这将使我们能够计算出每场比赛中各队的控球率。同时,我们将采用光流技术测量帧间相机移动,从而更准确地衡量球员的实际位移。另外,通过实现透视变换,我们可以将场景深度和视角表示出来,进而以米而非像素为单位量化球员的移动距离。最后,我们会计算每位球员的速度及跑动距离。该项目涵盖了多个概念,解决了一系列实际问题,既适合初学者也适用于有经验的机器学习工程师。

截图

在这里插入图片描述

使用模块
  • YOLO:人工智能目标检测模型。
  • K-means:用于像素分割与聚类,以便于检测队服颜色。
  • 光流:用于测量相机移动。
  • 透视变换:用于表现场景深度与视角。
  • 速度与距离计算:针对每个球员的速度和覆盖距离进行计算。
训练模型
  • YOLOv5:经过特定数据集训练后的YOLOv5模型。
    在这里插入图片描述
示例视频
  • 输入视频样本:提供一段足球比赛的视频作为示例输入。
系统需求

为了运行此项目,您需要安装以下软件包:

  • Python 3.x
  • ultralytics
  • supervision
  • OpenCV
  • NumPy
  • Matplotlib
  • Pandas

项目详细说明

1. YOLOv5目标检测

YOLOv5是一种高效且精确的目标检测框架,它能够在单个前向传播过程中同时预测图像中的多个物体及其位置。在这个项目中,我们将首先使用预训练的YOLOv5模型来检测视频中的球员、裁判和足球。如果预训练模型对于我们的具体应用场景不够精准,还可以进一步对模型进行微调。

from ultralytics import YOLO# 加载预训练的YOLOv5模型
model = YOLO('yolov5s.pt')  # 选择一个合适的预训练权重文件# 对视频进行推理
results = model.predict(source='input_video.mp4', save=True, save_txt=True)
2. K-means聚类 - 队伍划分

为了区分不同队伍的球员,我们需要根据他们的队服颜色来进行分类。这里可以使用K-means聚类算法对每个球员区域内的像素点进行聚类,从而确定主要的颜色类别。这样就可以将球员归入不同的队伍。

import cv2
import numpy as np
from sklearn.cluster import KMeansdef get_dominant_color(image, k=2):image = cv2.cvtColor(image, cv2.COLOR_BGR2RGB)image = image.reshape((image.shape[0] * image.shape[1], 3))clt = KMeans(n_clusters=k)clt.fit(image)hist = centroid_histogram(clt)dominant_color = clt.cluster_centers_[np.argmax(hist)]return dominant_colordef centroid_histogram(clt):numLabels = np.arange(0, len(np.unique(clt.labels_)) + 1)(hist, _) = np.histogram(clt.labels_, bins=numLabels)hist = hist.astype("float")hist /= hist.sum()return hist
3. 光流 - 相机运动估计

光流是描述连续两帧之间像素运动的技术。通过对视频帧应用光流算法,我们可以估计相机自身的移动情况,这对于消除因摄像机抖动或平移造成的误差非常重要。

import cv2cap = cv2.VideoCapture('input_video.mp4')
ret, frame1 = cap.read()
prvs = cv2.cvtColor(frame1, cv2.COLOR_BGR2GRAY)while True:ret, frame2 = cap.read()if not ret: breaknext = cv2.cvtColor(frame2, cv2.COLOR_BGR2GRAY)flow = cv2.calcOpticalFlowFarneback(prvs, next, None, 0.5, 3, 15, 3, 5, 1.2, 0)# 显示结果hsv = np.zeros_like(frame1)hsv[..., 1] = 255mag, ang = cv2.cartToPolar(flow[..., 0], flow[..., 1])hsv[..., 0] = ang * 180 / np.pi / 2hsv[..., 2] = cv2.normalize(mag, None, 0, 255, cv2.NORM_MINMAX)rgb = cv2.cvtColor(hsv, cv2.COLOR_HSV2BGR)cv2.imshow('Optical Flow', rgb)if cv2.waitKey(1) & 0xFF == ord('q'):breakprvs = nextcap.release()
cv2.destroyAllWindows()
4. 透视变换 - 场景深度与视角

透视变换可以帮助我们从二维图像恢复三维信息。通过标定球场上的关键点,我们可以构建一个变换矩阵,将图像转换成俯视图形式,从而方便地测量球员的真实移动距离。

import cv2
import numpy as np# 假设已经知道了四个角点坐标
pts1 = np.float32([[x1, y1], [x2, y2], [x3, y3], [x4, y4]])
pts2 = np.float32([[0, 0], [width, 0], [0, height], [width, height]])M = cv2.getPerspectiveTransform(pts1, pts2)
dst = cv2.warpPerspective(img, M, (width, height))cv2.imshow('Perspective Transform', dst)
cv2.waitKey(0)
cv2.destroyAllWindows()
5. 速度与距离计算

结合上述步骤得到的数据,我们可以计算出每位球员在场上的实际移动速度及总跑动距离。这些指标对于评估运动员的表现具有重要意义。

# 假设我们已经有了每帧中球员的位置列表positions
distances = []
for i in range(1, len(positions)):distance = np.linalg.norm(np.array(positions[i]) - np.array(positions[i-1]))distances.append(distance)total_distance = sum(distances)
average_speed = total_distance / (len(positions) * time_per_frame)
结论

这个项目不仅展示了如何利用先进的计算机视觉技术来解决实际问题,还提供了一个很好的平台供学习者实践各种算法和技术。无论是对于想要深入了解计算机视觉领域的初学者,还是希望提升自己技能的专业人士来说,这都是一个非常有价值的项目。通过参与这样的项目,不仅可以加深对相关理论知识的理解,还能锻炼解决复杂问题的能力。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/147116.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

软件开发详解:通过源码搭建高效的食堂采购与供应链管理平台

通过源码构建定制化的系统,能够让企业根据自身需求灵活调整功能,打造符合其业务流程的高效管理平台。接下来,小编将详细介绍如何通过源码搭建一套高效的食堂采购与供应链管理平台,并分析其在技术架构、功能实现及优化策略方面的关…

大模型入门 ch04:实现一个GPT模型

本文是github上的大模型教程LLMs-from-scratch的学习笔记,教程地址:教程链接 LLM大模型主要是参数量大,而不是代码量大。 这是本节的具体内容 首先实现一个GPT的骨架分别实现GPT骨架内的各个部分,包括LayerNorm,GELU,…

有什么好用的电容笔?2024总结apple pencil平替笔排名TOP五!

在这个信息高度发展的社会,iPad等触控设备日益普及,电容笔的市场需求也不断扩大,因为它们在一定程度上可以替代传统的笔和纸,携带它们就无需携带厚重的书本,这种环保、便捷、方便的特点吸引了越来越多的用户。但电容笔…

动态线程池(五)

动态线程池 Filter过滤器 AlarmBaseFilter NoticeBaseFilter NotifyRedisTateLimiterFilter RedisRateLimiter redis限流器 NotifierHandler DtpNotifier动态线程池通知者 Notifier通知者 关于发送Email消息的额外说明

分布式Id生成策略-美团Leaf

之前在做物流相关的项目时候,需要在分布式系统生成运单的id。 1.需求: 1.全局唯一性:不能出现重复的ID。(基本要求) 2.递增:大多数关系型数据库(如 MySQL)使用 B 树作为索引结构。…

三菱FX3U-4DA(4通道模拟量输出)使用说明

FX3U-4DA连接在FX3G/FX3GC/FX3U/FX3UC可编程控制器上,是将来自可编程控制器的4个通道的数字值转换成模拟量值(电压/电流)并输出的模拟量特殊功能模块。 1、FX3G/FX3GC/FX3U/FX3UC可编程控制器上最多可以连接8台*1(包括其它特殊功能模块的连接台数。) 2、可以对各通道…

Global Attention Decoder for Chinese Spelling Error Correction(ACL2021)

Global Attention Decoder for Chinese Spelling Error Correction(ACL2021) 一.概述 作者认为现有的纠错方法大多是基于局部上下文信息进行纠错,没有考虑句子中错词的影响。将注意力放在错误上下文信息上可能会误导并降低CSC(Chinese Spelling Correction)的整体性…

shopro前端 短信登录只显示模板不能正常切换

删掉 换成下面的代码 // 打开授权弹框 export function showAuthModal(type smsLogin) {const modal $store(modal);setTimeout(() > {modal.$patch((state) > {state.auth type;});}, 100); }

数据集 InterHand2.6M 双手交互 三维手势建模 >> DataBall

数据集 InterHand2.6M 双手交互 三维手势建模 人工智能 深度学习 >> DataBall 数据集 InterHand2.6M,双手/单手交互 ---------------------------------------------------------------------------------------------------------- Train set * Train (H):…

MybatisPlus代码生成器使用

一、前言 Mybatis逆向工程也可以生成代码,但配置太过复杂,不便于后期维护,Mybatis Plus 主动集成了代码的自动生成,用起来也很方便,两种代码自动生成我都用过,没有好坏之分,如果非要我推荐哪一…

跨游戏引擎的H5渲染解决方案(腾讯)

本文是腾讯的一篇H5 跨引擎解决方案的精炼。 介绍 本文通过实现基于精简版的HTML5(HyperText Mark Language 5)来屏蔽不同引擎,平台底层的差异。 好处: 采用H5的开发方式,可以将开发和运营分离,运营部门自…

一个安卓鸿蒙化工具

DevEco插件,为已有安卓项目鸿蒙化加速。 目前支持: 1、安卓Vector Assets转svg; 2、json转ets model; 3、kotlin model转ets model; 下载地址:andtoharplugin1.1.0 安装: deveco插件安装选硬…

傻白甜萌妹爆改成长型女主!男频番的花瓶也有高光?

“师父,师妹不是任何人的依附,也不是小琼峰的一个摆件。” 能说出这句话的男主,堪称人间清醒。 男频作品的女性塑造向来是备受瞩目的话题。“镶边”、“挂件”、“花瓶”…总有这样的标签一个个打在“她们”身上,看似暗讽&#…

seL4 Untyped(二)

链接: Untyped Untyped 这篇主要是针对seL4物理内存管理的介绍。 物理内存 在seL4系统中,除了内核占用的一小部分静态内存之外,其他的所有的物理内存都是用户一级管理的。seL4在启动时创建的对象能力,以及seL4管理的其余物理资源&#xf…

tensorflow底层架构

tensorflow底层架构 架构图 Training libraries 和 Inference libs(训练库和推理库) Training libraries:用于模型的训练过程,包括定义模型、计算梯度、更新模型权重等。这些库提供了在训练过程中所需的所有功能。Inference lib…

推荐几本值得阅读的书籍!

大家好,这里是大话硬件。 初次关注我公众号的朋友第一反应基本都是认为内容太专业! 其实不然,大话硬件公众号除了有硬件设计方面的内容,还包含书籍推荐,个人反思总结模块等内容。 今天这篇文章继上篇荐书《相见恨晚的…

学习IEC 62055付费系统标准

1.IEC 62055 国际标准 IEC 62055 是目前关于付费系统的唯一国际标准,涵盖了付费系统、CIS 用户信息系统、售电系统、传输介质、数据传输标准、预付费电能表以及接口标准等内容。 IEC 62055-21 标准化架构IEC 62055-31 1 级和 2 级有功预付费电能表IEC 62055-41 STS…

如何快速恢复误删除的文件?教你一招,不花一分钱,三步就可以搞定!

电脑文件越存越多,我们都会不定时的进行清理,但有时候,我们难免会误删除一些重要文件。当遇到类似情况的时候,不要着急,很多时候,删除的文件是有办法恢复的。 市面上有很多文件恢复软件,就可以帮…

常用工具推荐!分享7款AI论文修改软件工具网站

在当今学术研究和写作领域,AI论文修改软件工具已经成为了不可或缺的助手。这些工具不仅能够帮助研究人员提高写作效率,还能确保论文的质量和原创性。以下是七款值得推荐的AI论文修改软件工具网站,其中特别推荐千笔-AIPassPaper。 1. 千笔-AI…

YOLOv8改进 | 特征融合篇,YOLOv8添加iAFF(多尺度通道注意力模块),并与C2f结构融合,提升小目标检测能力

摘要 特征融合,即来自不同层或分支的特征的组合,是现代网络架构中无处不在的一部分。虽然它通常通过简单的操作(如求和或拼接)来实现,但这种方式可能并不是最佳选择。在这项工作中,提出了一种统一且通用的方案,即注意力特征融合(Attentional Feature Fusion),适用于…