【Modelground】个人AI产品MVP迭代平台(5)——神投手(实时投篮检测游戏)

本文主要是介绍【Modelground】个人AI产品MVP迭代平台(5)——神投手(实时投篮检测游戏),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

文章目录

  • 介绍
  • 篮框识别
  • 进球算法
  • 离屏渲染
  • 总结

介绍

神投手是我开发的一款移动端web实时投篮检测游戏,基于Mediapipe对象检测模型,提供数据集,训练出可识别篮框的模型。利用图像处理算法,检测篮球进框的场景。提供了两种模式:计数模式和计时模式,界面如下:
在这里插入图片描述在这里插入图片描述
点击开始按钮,进入游戏界面,对准篮框,手机保持静止后,点击录制,游戏开始。
在这里插入图片描述
左上角显示进球数,右侧可以退出和标定篮框。

篮框识别

篮框识别基于mediapipe的objectDetection模型,再训练。通过colab上的云服务器,在线训练,仅需要提供篮框的训练集即可。colab链接见:https://colab.research.google.com/github/googlesamples/mediapipe/blob/main/examples/customization/object_detector.ipynb#scrollTo=Mz3-eHe07FEX
在这里插入图片描述
篮框的识别不会稳定在真实篮框处,有时也会标错到其余的物体上,因此需要通过一个淘汰机制,来维持识别次数最多的矩形为篮框。不同的识别框也会根据覆盖度,确定新的篮框范围。

进球算法

进球算法使用图像处理,参考这篇论文Camera-based Basketball Scoring Detection Using Convolutional Neural Network。原理见下图:
在这里插入图片描述
简单讲就是每一张图片都和基准图片的灰度图做diff,得到的就是移动的物体,通过篮框周边范围的移动物体就是篮球,利用连通域算法,得到篮球的连通板块,再制定一些进球规则:

  1. 板块的bbox宽度比篮框宽度小
  2. 先经过篮框上边沿
  3. 后经过篮框下边沿

符合以上规则,计一次进球,清空缓存,重新计算。

离屏渲染

由于模型计算量较大,如果通过通过渲染,会有明显卡顿,帧率较低。因此采用offscreenCanvas(离屏canvas)技术,这样可以大大提升运算的性能。

总结

这种算法的缺点是,手机不能移动,强依赖于图片的diff,另外,篮框的识别的准度和精度都有待提升(训练集是700+图片,似乎不够)。

实际使用场景较弱,很少有人带手机支架去球场打球,只能依赖篮球场边可以竖放手机的支撑物。横屏时前置摄像头靠近地面,拍摄的范围很狭窄,如果后置摄像头,又无法看到实际的篮框识别结果,无法手动标定篮框。

总体而言,是一次教难的尝试,但是过程中学到了蛮多东西,特别是死磕算法确实很难。

如果你有好的建议,请及时反馈我!如果你是篮球爱好者,欢迎试用神投手游戏!

这篇关于【Modelground】个人AI产品MVP迭代平台(5)——神投手(实时投篮检测游戏)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


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

相关文章

Spring AI 实现 STDIO和SSE MCP Server的过程详解

《SpringAI实现STDIO和SSEMCPServer的过程详解》STDIO方式是基于进程间通信,MCPClient和MCPServer运行在同一主机,主要用于本地集成、命令行工具等场景... 目录Spring AI 实现 STDIO和SSE MCP Server1.新建Spring Boot项目2.a

C++迭代器失效的避坑指南

《C++迭代器失效的避坑指南》在C++中,迭代器(iterator)是一种类似指针的对象,用于遍历STL容器(如vector、list、map等),迭代器失效是指在对容器进行某些操作后... 目录1. 什么是迭代器失效?2. 哪些操作会导致迭代器失效?2.1 vector 的插入操作(push_back,

Android NDK版本迭代与FFmpeg交叉编译完全指南

《AndroidNDK版本迭代与FFmpeg交叉编译完全指南》在Android开发中,使用NDK进行原生代码开发是一项常见需求,特别是当我们需要集成FFmpeg这样的多媒体处理库时,本文将深入分析A... 目录一、android NDK版本迭代分界线二、FFmpeg交叉编译关键注意事项三、完整编译脚本示例四

使用Python实现实时金价监控并自动提醒功能

《使用Python实现实时金价监控并自动提醒功能》在日常投资中,很多朋友喜欢在一些平台买点黄金,低买高卖赚点小差价,但黄金价格实时波动频繁,总是盯着手机太累了,于是我用Python写了一个实时金价监控... 目录工具能干啥?手把手教你用1、先装好这些"食材"2、代码实现讲解1. 用户输入参数2. 设置无头浏

在.NET平台使用C#为PDF添加各种类型的表单域的方法

《在.NET平台使用C#为PDF添加各种类型的表单域的方法》在日常办公系统开发中,涉及PDF处理相关的开发时,生成可填写的PDF表单是一种常见需求,与静态PDF不同,带有**表单域的文档支持用户直接在... 目录引言使用 PdfTextBoxField 添加文本输入域使用 PdfComboBoxField

Python开发文字版随机事件游戏的项目实例

《Python开发文字版随机事件游戏的项目实例》随机事件游戏是一种通过生成不可预测的事件来增强游戏体验的类型,在这篇博文中,我们将使用Python开发一款文字版随机事件游戏,通过这个项目,读者不仅能够... 目录项目概述2.1 游戏概念2.2 游戏特色2.3 目标玩家群体技术选择与环境准备3.1 开发环境3

使用Python实现IP地址和端口状态检测与监控

《使用Python实现IP地址和端口状态检测与监控》在网络运维和服务器管理中,IP地址和端口的可用性监控是保障业务连续性的基础需求,本文将带你用Python从零打造一个高可用IP监控系统,感兴趣的小伙... 目录概述:为什么需要IP监控系统使用步骤说明1. 环境准备2. 系统部署3. 核心功能配置系统效果展

深入理解Apache Kafka(分布式流处理平台)

《深入理解ApacheKafka(分布式流处理平台)》ApacheKafka作为现代分布式系统中的核心中间件,为构建高吞吐量、低延迟的数据管道提供了强大支持,本文将深入探讨Kafka的核心概念、架构... 目录引言一、Apache Kafka概述1.1 什么是Kafka?1.2 Kafka的核心概念二、Ka

Python 迭代器和生成器概念及场景分析

《Python迭代器和生成器概念及场景分析》yield是Python中实现惰性计算和协程的核心工具,结合send()、throw()、close()等方法,能够构建高效、灵活的数据流和控制流模型,这... 目录迭代器的介绍自定义迭代器省略的迭代器生产器的介绍yield的普通用法yield的高级用法yidle

在Android平台上实现消息推送功能

《在Android平台上实现消息推送功能》随着移动互联网应用的飞速发展,消息推送已成为移动应用中不可或缺的功能,在Android平台上,实现消息推送涉及到服务端的消息发送、客户端的消息接收、通知渠道(... 目录一、项目概述二、相关知识介绍2.1 消息推送的基本原理2.2 Firebase Cloud Me