Post on 14-Mar-2021
transcript
I
文件编号:ing_master-SWC2018-[TEAMNUMBER]受控状态:■受控 □非受控
保密级别:□公司级 □部门级 ■项目级 □普通级
采纳标准:CMMI DEV V1.2
基于人工智能的乒乓球发球机器人AI based ping pong robot
项目开发文档
Version 1.0
2018.05.11Written by ing_master
All Rights Reserved
II
目录
1 引言............................................................................................................................................................11.1 编写目的.....................................................................................................................11.2 项目背景.....................................................................................................................11.3 术语和缩略语.............................................................................................................11.4 参考资料.....................................................................................................................21.5 项目定位.....................................................................................................................2
1.5.1 应用场景.............................................................................................................21.5.2 目标人群.............................................................................................................2
1.6 项目功能.....................................................................................................................21.7 项目目标.....................................................................................................................21.8 解决思路.....................................................................................................................3
2 参赛作品构思的创意与价值................................................................................................................... 32.1 开发的动机与目的.....................................................................................................32.2 市场调查和评价.........................................................................................................32.3 模式创新.....................................................................................................................32.4 产品对比.....................................................................................................................4
3 需求分析................................................................................................................................................... 43.1 数据描述.....................................................................................................................4
3.1.1 静态数据.............................................................................................................43.1.2 动态数据.............................................................................................................43.1.3 数据词典.............................................................................................................43.1.4 数据采集.............................................................................................................5
3.2 功能需求.....................................................................................................................53.2.1 功能模块结构图.................................................................................................53.2.2 核心功能模块描述.............................................................................................5
3.3 非功能性需求.............................................................................................................63.3.1 扩展性和可维护性.............................................................................................63.3.2 易用性.................................................................................................................6
3.4 运行需求.....................................................................................................................73.4.1 用户界面.............................................................................................................73.4.2 硬件接口.............................................................................................................73.4.3 软件接口.............................................................................................................83.4.4 故障处理.............................................................................................................8
3.5 用例图.........................................................................................................................83.6 用例规约.....................................................................................................................83.7 可移植性...................................................................................................................10
4 概要设计................................................................................................................................................. 104.1 处理流程...................................................................................................................104.2 总体结构和模块设计...............................................................................................114.3 功能分配...................................................................................................................11
III
4.4 接口设计...................................................................................................................124.4.1 外部接口...........................................................................................................124.4.2 内部接口...........................................................................................................12
4.5 运行设计...................................................................................................................124.5.1 运行模块关系...................................................................................................124.5.2 运行控制...........................................................................................................134.5.3 运行时间...........................................................................................................13
4.6 错误/异常处理设计................................................................................................. 134.6.1 错误/异常输出信息......................................................................................... 134.6.2 错误/异常处理对策......................................................................................... 13
4.7 系统配置策略...........................................................................................................134.8 系统部署方案...........................................................................................................13
5 详细设计................................................................................................................................................. 145.1 发球机控制...............................................................................................................14
5.1.1 硬件设计...........................................................................................................145.1.2 功能描述...........................................................................................................145.1.3 算法...................................................................................................................145.1.4 性能描述...........................................................................................................155.1.5 输入输出...........................................................................................................155.1.6 程序逻辑...........................................................................................................155.1.7 接口...................................................................................................................155.1.8 错误/异常处理................................................................................................. 165.1.9 存储分配...........................................................................................................165.1.10 限制条件...........................................................................................................16
5.2 人脸检测...................................................................................................................165.2.1 功能描述...........................................................................................................165.2.2 算法...................................................................................................................175.2.3 性能描述...........................................................................................................175.2.4 输入输出...........................................................................................................175.2.5 程序逻辑...........................................................................................................17
5.3 乒乓球识别...............................................................................................................185.3.1 功能描述...........................................................................................................185.3.2 算法...................................................................................................................185.3.3 性能描述...........................................................................................................185.3.4 输入输出...........................................................................................................185.3.5 程序逻辑...........................................................................................................185.3.6 错误/异常处理................................................................................................. 195.3.7 限制条件...........................................................................................................195.3.8 创新点...............................................................................................................19
5.4 强化学习...................................................................................................................195.4.1 功能描述...........................................................................................................195.4.2 算法...................................................................................................................195.4.3 性能描述...........................................................................................................205.4.4 输入输出...........................................................................................................20
IV
5.4.5 程序逻辑...........................................................................................................205.4.6 创新性...............................................................................................................21
6 数据库设计............................................................................................................................................. 216.1.1 E-R图............................................................................................................... 216.1.2 逻辑模型...........................................................................................................226.1.3 物理模型...........................................................................................................22
记录更改历史
序号 更改原因 版本 作者 更改日期 备 注
1 首次编写 0.1 A.B.C 2018.5.11 无
2 初次审查 0.2 A 2018.5.15 无
3 复审 0.3 B 2018.5.16 无
4 正式版本 1.0 A.B.C 2018.5.18 无
项目名称 文件编号:[ing_master]-SWC2018-[TEAMNUMBER]
1
1 引言
1.1 编写目的
《项目开发文档》的编写目的在于直观明了地展示本项目的创新性和实用性,并详细介
绍本项目的功能和技术。
1.2 项目背景
经过考察,当前市场上的全自动发球机并不智能.这些发球机只是按照预先设置的模式
进行发球。在此单调的模式下,训练效果会大打折扣。而人工智能在各个领域都有出色的表
现,体育行业与人工智能的结合将会是一个崭新的机遇和挑战。
1.3 术语和缩略语
[1] Android: Android是一种基于 Linux的自由及开放源代码的操作系统,主要使用于
移动设备,如智能手机和平板电脑,由 Google 公司和开放手机联盟领导及开发。
[2]Python: Python 是一种面向对象的解释型计算机程序设计语言,由荷兰人 Guido
van Rossum于 1989年发明,第一个公开发行版发行于 1991 年。
[3]Ubuntu: Ubuntu是一个以桌面应用为主的开源 GNU/Linux操作系统,支持 x86、
amd64和 ppc架构,由全球化的专业开发团队(Canonical Ltd)打造。
[4]串口通信:接受来自 CPU的并行数据字符转换为连续的串行数据流发送出去,同时
可将接受的串行数据流转换为并行的数据字符供给 CPU的器件。
[5]JSON:(JavaScript Object Notation, JS 对象简谱) 是一种轻量级的数据交换格式。
[6]GPIO:通用可编程 IO接口
[7]计算中心(TX2):该项目中使用的高性能的计算平台,负责深度学习、强化学习等
高 CPU密度的计算以及向树莓派发送电机控制信号。
[8]YOLOv2(You Only Look Once: Unified, Real-Time Object Detection)一种实时的多目
标检测深度学习网络模型
[9] DQN:(Deep Q-Learning)可谓是深度强化学习(Deep Reinforcement Learning,DRL)
的开山之作,是将深度学习与强化学习结合起来从而实现从感知(Perception)到动作
( Action )的端对端(End-to-end)学习的一种全新的算法。
项目名称 文件编号:[ing_master]-SWC2018-[TEAMNUMBER]
2
1.4 参考资料
[1] Android API
[2]树莓派用户指南. 人民邮电出版社. 出版日期:2016-02-01
[3]陈锴. 基于 OpenCV技术对乒乓球比赛中运动乒乓球的检测与跟踪[A]. 中国体育科
学学会体育计算机应用分会.2013 体育计算机应用论文集[C].中国体育科学学会体育计算机
应用分会:,2013:6.
[4]徐方明,卢官明.基于改进 surendra 背景更新算法的运动目标检测算法[J].山西电子技
术,2009(05):39-40+71.
[5] Joseph Redmon,Ali Farhadi YOLO9000:Better,Faster,Stronger Computer Secience 2016
[6] DeepMind Human-level control through Deep Reinforcement Learning Nature 2015
1.5 项目定位
1.5.1 应用场景
本产品的可应用于乒乓球领域,其设计模式也可应用于羽毛球、网球等新型的发球
机领域。
1.5.2 目标人群
体育馆、健身中心、少年宫等运动场所、娱乐型家庭运动健身用户、竞技型职业运动员。
1.6 项目功能
①、通过手机 App 控制,发球机器人具备全台发球、上下旋球和规律发球等基本功能。
②、在用户回击乒乓球后,发球机器人将判断球是否被击中,然后在训练结束后给用
户数据分析和建议。
③、发球机器人能通过深度学习实时监测用户位置,通过位置关系发高训练强度的球。
④、发球机器人会利用击球反馈信息进行强化学习,从而提升自身发球水平。
⑤、用户可根据自身需求为发球机更换不同的模型,从而让发球机拥有不同的决策思
路。
⑥、在发球机闲置时,用户可共享发球机性能,进行联网训练并换取积分。
1.7 项目目标
借助人工智能,解决竞技体育、体育教育、全民健身等领域中存在的问题,同时探索新
的球类运动训练方式,开发智能化的训练机器人。
项目名称 文件编号:[ing_master]-SWC2018-[TEAMNUMBER]
3
1.8 解决思路
不管是深度学习、强化学习,还是其他的机器学习方式,最关键的过程都是“学习”。
学习在深度学习中,体现的是其重复性,通过对多个特征重复,细节变化的数据训练学
习,达到精确判断的效果。将深度学习应用在发球机上,使其能够获取人和球的位置,这是
训练智能化的第一步。
在强化学习中,体现的是其进步的特点,机器从一个随机的状态经过一系列的自我学习,
逐渐强化某个特征,从而达到一种有序的随机。结合 alphago的成功,我们联想到乒乓球的
训练也是一种对弈,在人机对弈的过程中,机器得到训练,人也会逐渐解决自身的短板。
2 参赛作品构思的创意与价值
2.1 开发的动机与目的
我们希望能够借助深度学习和强化学习解决当下运动领域的一些问题。
在体育领域中,我们发现了深度学习的介入点,比如球员击球挥拍姿势的矫正、击球战
术的选择。通过深度学习的模型建立、学习训练、调整参数、输出结果,我们希望能让球员
技艺有更大的提升。
另一方面,在运动辅导机构中,教练的成本非常大,一个人性化、智能的发球机将有可
能大程度得辅助教练的工作。而通过强化学习,在训练过程中,球员与机器相互促进,获得
进步。
2.2 市场调查和评价
从网上商城的搜索数据来看,发球机采用的普遍都是硬编码的芯片电路,不仅功能单一
而且不易于拓展。通过调研周边的体育馆、健身中心、少年宫等运动场所,发现当前市场并
没有很好地普及发球机这样低成本的机器,往往是教练监督学员班或是一对一辅导。我们认
为人工智能技术的介入,能提升训练效果,节约人力和时间成本,可以很好地优化当下市场
环境。
2.3 模式创新
2.3.1、通过对比国内外的产品,发现国内外的乒乓球发球机几乎都要通过一个沉重的控
制盒进行工作。因此,我们做出了可直接通过手机控制的发球机,希望能改变市场上发球机
复杂笨重的现状。
2.3.2、项目提出的技术思路在其他球类运动中同样适用。例如,“高强度训练模式”、“成
功回击算法”、“发球机强化学习”等技术不仅可以用于乒乓球发球机,还可以在羽毛球、网
球发球机中使用。
2.3.3、提出了根据人体位置发球这一个理念,使得发球机不再是按照生硬的逻辑工作,
而是能根据人体位置灵活的发球。
项目名称 文件编号:[ing_master]-SWC2018-[TEAMNUMBER]
4
2.3.4、提出了发球机强化学习这一个理念。它会一边工作一边收集反馈信息,来修改自
己的权值。因此,发球机会随着训练量的增多而变得越来越智能。
2.3.5、提出了共享性能理念。用户可在发球机闲置时,利用发球机里面的高性能计算机
对云端数据进行训练,随后将训练好的模型上传服务器,为大家提供更好的发球策略,同时
也提升了运算板的利用率。
2.4 产品对比
功能 本产品 Robo-Pong
2050
泰德发球机
V-989E2
汇乓 S6 发
球机
上下旋球 √ √ √ √
侧旋球 √ √ √ √
随机发球 √ √ √ √
选择落点 √ √ √
可电脑编程 √ √
手机 app 控制 √
联网训练 √
识别乒乓球成功回击 √
查看训练数据 √
根据人体位置关系发高强度球 √
根据反馈信息强化学习 √
3 需求分析
3.1 数据描述
3.1.1 静态数据
用户信息、注册短信模板、乒乓球落点信息、人脸检测模型等
3.1.2 动态数据
用户积分、人脸位置、击球预测点、摄像头拍摄的图像、击球反馈数据、强化学习模型
3.1.3 数据词典
人脸位置:指在打球时人体位于发球机前方的相对位置。
击球预测点:指根据系统分析得出的下一个击球位置。
摄像头图像:指用户在训练时采集到的正侧面图像。
击球反馈数据:指训练时的落点记录和回击记录。
强化学习模型:指用于发球机落点决策的模型。
项目名称 文件编号:[ing_master]-SWC2018-[TEAMNUMBER]
5
3.1.4 数据采集
用户信息:App注册时采集
人脸位置:使用 YOLOv2 模型识别人脸位置
击球预测点:由强化学习输出结果指定
摄像头图像:使用 IMX322摄像头采集正面图像,使用 120fps摄像头采集侧面图像
击球反馈数据:通过识别乒乓球及回击判定算法,得出反馈数据
强化学习模型:用户训练时会强化模型,也能进行联网强化,随后得出更好的模型。
3.2 功能需求
3.2.1 功能模块结构图
图 1 功能模块结构图
3.2.2 核心功能模块描述
功能模块 功能 功能描述 优先级
发球控制模块
底层硬件控制 使用单板计算机控制发球机 0
硬件数据交互 Tx2通过串口协议与单板计算机交互 1
App 模块 控制发球机 App通过热点和 Http协议与发球机交互 2
项目名称 文件编号:[ing_master]-SWC2018-[TEAMNUMBER]
6
数据分析 在训练结束后,进行数据分析及建议 5
模型更换 为发球机更换不同的模型,从而让发球
机拥有不同的决策思路
5
联网训练 在发球机闲置时,进行联网训练 5
数据采集
正面图像采集 采集用户正面图像 3
侧面图像采集 采集乒乓球桌侧面图像 3
人工智能模块
乒乓球识别 使用机器视觉算法识别乒乓球 4
人脸检测 使用 YOLOv2 识别人脸位置 4
强化学习模块 使用 DQN 算法进行强化学习 4
联网训练模块
数据共享 分享数据到服务器 5
联网训练 利用发球机闲置性能训练模型 5
3.3 非功能性需求
3.3.1 扩展性和可维护性
分层进行的模块化设计,可以轻松的移除、修改或增加某个功能模块
图 2 可扩展性图
3.3.2 易用性
充分采用图形化的界面,有专门的设计师(团队成员之一)负责交互设计,保证交互流
程简洁精确。
用户可以选择手机控制或者使用发球机自带触摸屏幕控制。
项目名称 文件编号:[ing_master]-SWC2018-[TEAMNUMBER]
7
3.4 运行需求
3.4.1 用户界面
3.4.2 硬件接口
硬件设备主要由 Tx2、树莓派、电机驱动板和电机模块构成。硬件之间使用串口协议和
GPIO互相通信。
项目名称 文件编号:[ing_master]-SWC2018-[TEAMNUMBER]
8
3.4.3 软件接口
Tx2通过 Http 协议与手机 App 进行通信,通信内容包括:发球控制信号、训练数据、
打球视频和强化学习模型
3.4.4 故障处理
1 、如果出现手机无法连接发球机的问题,需要检查手机是否成功连上” SmartPing”热点或者检查 TX2 wifi天线是否成功安装。
2 、如果发球机出现了卡球行为,请打开 app,点击右上方卸球按钮即可解决问题。
3 、如果发球机发球过高或者过低,请手动调节发球机仰角,以达到最佳发球状态。
4 、如果人脸检测失败或者乒乓球识别失败,请打开屋内电灯,保证充足的光照。
5 、如果手机发出请求后,发球机获取请求失败,可重新尝试发送指令
3.5 用例图
图 3 用例图
3.6 用例规约
表 发球机训练用例规约
用例名称 乒乓球发球机训练
功能简述 该用例规定了用户如何使用发球机进行训练
项目名称 文件编号:[ing_master]-SWC2018-[TEAMNUMBER]
9
用例编号 001
执行者 用户
前置条件 发球机开机,并处于就绪状态
用户使用安卓手机安装好 APP
后置条件 无
涉众利益 用户:能够流畅有效地使用多种训练模式进行训练
基本路径 1.用户使用 APP进行登录
2.用户选择发球模式
3.用户开始训练
4.用户再次进行步骤 23来切换发球模式
扩展路径 无
未解决的问题 无
备注 无
表 强化学习模型上传切换用例规约
用例名称 强化学习网络模型上传切换
功能简述 该用例规定了用户如何上传切换网络模型
用例编号 002
执行者 用户
前置条件 发球机开机,并处于就绪状态
用户使用安卓手机安装好 APP
app处于良好的网络状态
后置条件 能够在云端保存网络模型,并加载到发球机。
涉众利益 用户:能够流畅地对网络模型进行分享更换
基本路径 1.用户使用 APP进行登录
2.用户上传网络模型
3.系统返回上传成功
4.用户选择网络模型并更换
5系统返回更换成功
扩展路径 2a系统返回上传网络模型失败
1检查网络状态并重试
4a 系统返回更换网络模型失败
1 检查网络状态并重试
未解决的问题 无
备注 无
项目名称 文件编号:[ing_master]-SWC2018-[TEAMNUMBER]
10
3.7 可移植性
电机驱动程序可移植性体现在代码结构为分层设计,如果切换电机控制系统,只需提供
底层的电机驱动包即可。
树莓派与 TX2之间串口通信程序不依赖系统,只需搭配 python环境,设置好相应的常
量(串口相关常量和运行相关常量)即可轻松移植到其他系统中。
终端与发球机的通信通过网络实现,所以并不依赖终端平台,可以轻松移植到 IOS 或
者网页等其他平台。
4 概要设计
4.1 处理流程
图 4 程序流程图
图 5 数据流程图
项目名称 文件编号:[ing_master]-SWC2018-[TEAMNUMBER]
11
4.2 总体结构和模块设计
图 6 系统架构图
4.3 功能分配
图 7 功能分配图
项目名称 文件编号:[ing_master]-SWC2018-[TEAMNUMBER]
12
4.4 接口设计
4.4.1 外部接口
外部接口有以下几种:
用户接口(APP 交互):
命令 语法 信息正确 信息错误
提交 IF&ELSE 实现命令 系统提示,返回当前
界面
修改 点击 清空输入的数据 无
取消 点击 返回当前界面 无
硬件接口:
硬件类型 接入方式 功能
高速摄像头 预留 USB口 检测乒乓球回击情况
高感光摄像头 预留 USB口 检测人体动作
无线网卡 预置无线网络 远程移动端控制
触摸屏 预置 HMDI接口 简单操作发球机
4.4.2 内部接口
与硬件的接口:计算中心(TX2)和下位机(树莓派)通过串口通信,类型为文本流,
格式为 JSON。与移动设备的接口:计算中心(TX2)和移动设备(Android等)通过无线网络通信。
4.5 运行设计
4.5.1 运行模块关系
各模块采取流水线式的组合方式。从用户开始依次经过各个模块,最后发球机将获取的
结果输出(发相应类型的球)。
图 8 运行模块关系图
项目名称 文件编号:[ing_master]-SWC2018-[TEAMNUMBER]
13
4.5.2 运行控制
发球机可以通过预置显示屏(可触摸)对发球机简单操作或者通过移动端 APP 进行更
多功能的使用
树莓派通过监听串口的消息接受计算中心(TX2)发出的控制信号。
4.5.3 运行时间
APP启动时间:0.4s发球机启动时间:30s回击策略计算速度:1s深度学习、强化学习程式启动时间:1min
4.6 错误/异常处理设计
4.6.1 错误/异常输出信息
当用户通过手机控制发球机发送的请求发送失败时,会弹出提示框
当无法连接发球机时,会弹出“请检查是否成功连接发球机”提示
4.6.2 错误/异常处理对策
控制发球机发送的请求发送失败时,用户可再次尝试操控,直至成功
无法连接发球机时,用户可再次尝试连接或者重启设备,直至成功
4.7 系统配置策略
1、配置操作系统 Linux For Tegra ,勾选其中的 Cuda、Cudnn、Opencv可选项
2、配置必要开发工具:build-essential 、cmake、git、Python3、PyQt、TensorFlow3、配置必要库:V4L2、ssl、protobuf、leveldb、hdf5、openblas、jpeg8、png12、gtk、
x264
4.8 系统部署方案
1、安装 caffe,pycaffe,并配置相应的环境变量。
2、到指定 git目录下载项目源码
3、从指定位置下载深度学习及强化学习模型
4、进入主程序入口 main.py,并将其脚本添加至开机启动项
项目名称 文件编号:[ing_master]-SWC2018-[TEAMNUMBER]
14
5 详细设计
5.1 发球机控制
5.1.1 硬件设计
图 9 硬件设计图
5.1.2 功能描述
图 10 控制模块 UML图
5.1.3 算法
对于电机驱动模块(driver),该模块难点主要是选择一种合适的步进电机控制方式,树
莓派自带的 PWM 电机控制包对电机的控制基于系统时间,但由于树莓派并不是实时系统,
这种控制方式会造成对电机步数控制的极其不精确。
我们最后采取的是基于脉冲的控制方式:通过 GPIO控制高低电平,模拟脉冲。
对于串口通信部分(serialDriver serialTransmitter),为了保证实时性,采取了 UART串
口通信,并使用 JSON格式的字符流。
项目名称 文件编号:[ing_master]-SWC2018-[TEAMNUMBER]
15
5.1.4 性能描述
串口波特率设置为 9600时,性能良好,速度和延时不会影响到上层程序。
5.1.5 输入输出
TX2按照格式发送指定数据包,树莓派会操纵各个电机执行相应的操作
5.1.6 程序逻辑
接收端逻辑:
图 11 发球机控制程序逻辑图
5.1.7 接口
serial.start()
启动电机
项目名称 文件编号:[ing_master]-SWC2018-[TEAMNUMBER]
16
serial.shutdown()
关闭电机
serial.loadBalls()
开始装载球
serial.unloadBalls()
开始卸载球
serial.stopLoadMotor()
关闭装/卸载电机
serial.move(pos)
改变转速和角度实现定点发球
parameter type description
pos int 落点位置 0-9
5.1.8 错误/异常处理
遇到无法识别的指令,发球机会简单输出错误信息,不会执行程序。
5.1.9 存储分配
由于不涉及存储、IO等功能,运行时内存和存储内存都不会占用太多
5.1.10 限制条件
由于树莓派上串口紧缺,所以需要将蓝牙功能禁用,并解除其占用的串口,用作指令传输。
5.2 人脸检测
5.2.1 功能描述
本功能使用深度学习目标检测算法,通过人脸检测获取用户位置,并根据用户位置决定
发球动作策略。
项目名称 文件编号:[ing_master]-SWC2018-[TEAMNUMBER]
17
5.2.2 算法
图 12 YOLOv2网络模型图(压缩图)使用 YOLOv2网络模型来进行目标检测,YOLOv2 模型与其他模型相比有着更快的识别
速度,和更高的准确率
5.2.3 性能描述
使用 YOLOv2 模型在 Nvidia-tx2 上处理一张照片仅需 0.2s,且检测准确率达到能够到达
90%以上。
5.2.4 输入输出
输入任意大小的图片,输出为人脸在图片中的矩形位置。
5.2.5 程序逻辑
图 13 人脸检测程序逻辑图
项目名称 文件编号:[ing_master]-SWC2018-[TEAMNUMBER]
18
5.3 乒乓球识别
5.3.1 功能描述
对用户回击的球进行检测,判断回击是否成功。
5.3.2 算法
对乒乓球的检测实际上是特殊的运动目标的检测。可供选择技术有多种,比较流行的有
帧差法、背景减法 、光流法。
因为在拍摄过程中摄像头是固定的,所以背景并不需要经常更新。所以我们采用的是多
帧平均的背景建模算法的背景减法。
同时乒乓球这一物体是具有许多特性的,比如球形、呈橘黄色,所以我们在背景减法得
到前景图之后,又根据图像像素的饱和度对比度等颜色信息和形状信息得到另一幅只含乒乓
球的前景图,然后两图取交集得到最终乒乓球位置。
注:虽然在 opencv中有多种背景剔除算法可供调用,但考虑到我们的程序对计算速度
要求较高,同时乒乓球特征已经足够明显,我们编写了自己的检测算法。
5.3.3 性能描述
每秒可稳定处理 20-30帧图像,足够判断乒乓球运行轨迹
5.3.4 输入输出
输入:RGB格式图像像素信息
输出:乒乓球位置。 [box(x,y)]
5.3.5 程序逻辑
图 14 乒乓球识别程序逻辑图
项目名称 文件编号:[ing_master]-SWC2018-[TEAMNUMBER]
19
5.3.6 错误/异常处理
对于检测失败的帧(即乒乓球在视野内但算法没有识别成功),将跳过此帧同时控制台
输出错误的日志
5.3.7 限制条件
1. 过高帧率拍摄会影响曝光度;
2. 过高分辨率会影响处理速度;
3. 环境光源过复杂会影响处理精度
5.3.8 创新点
1. 对现有的背景检测算法结合环境改进,设计出更适合情境的算法;
2. 提取乒乓球的颜色形状信息将其与背景检测算法结合起来共同得到乒乓球位置
5.4 强化学习
5.4.1 功能描述
该功能使用强化学习算法对发球机进行控制,并利用摄像头自动检测乒乓球位置获取反
馈信息对发球机进行增强训练。
5.4.2 算法
图 15 强化学习网络模型图
项目名称 文件编号:[ing_master]-SWC2018-[TEAMNUMBER]
20
用 tensorflow实现了 Deep Q Network强化学习算法。利用两个摄像头来自动获取信息。
其中,正面的摄像头用来获取当前训练者的状态信息(环境感知)。侧面的摄像头用来实时
检测乒乓球位置,通过乒乓球位置变化轨迹判断乒乓球是否被成功回击,以此来为乒乓球的
这一次动作给出一个打分(获取奖励)。利用环境和奖励来训练发球机,使其在对应的状态
下执行更好的动作。
对于网络模型,首先利用 VGGNet 提取图像特征,再通过 Fully Connected Layer 进行动
作选择。如果直接随机初始化参数,很难有较好的效果,所以我们迁移了VGGNet 在 ImageNet上的训练模型,并对其进行微调作为我们的预训练模型。
5.4.3 性能描述
DQN算法在 Nvidia Jetson TX2运行,从输入图片到获取最优动作只需要 0.1s,同时此算法依赖的乒乓球识别算法识别一张图片只需要 0.03秒,完全能够实时检测到乒乓
球位置。同时此算法会在一定的训练间隔内更新模型参数,参数更新在新的线程中进行,不
会影响正常的训练过程。
5.4.4 输入输出
输入为初始状态或执行动作后的下一个状态,执行动作奖励,游戏是否结束
输出为执行动作
5.4.5 程序逻辑
图 16 DQN算法图
项目名称 文件编号:[ing_master]-SWC2018-[TEAMNUMBER]
21
图 17 DQN参数更新图
5.4.6 创新性
受到 alphaGo启发,我们将强化学习算法利用的发球机中,将人工智能算法与传统机械
相结合,提供了一个智能发球机的新型解决方案。
6 数据库设计
6.1.1 E-R图
图 18 ER图
项目名称 文件编号:[ing_master]-SWC2018-[TEAMNUMBER]
22
6.1.2 逻辑模型
①.账户信息表(user):用户名,昵称,电子邮箱,手机号,密码,性别,积分
②.乒乓球回击记录表(pingcallback):用户名,记录时间,落点,旋度,回击详情
③.权重文件表(weight):id,用户名,描述,总训练时间,上传时间
④.训练数据表(traindata):id,用户名,上传时间,描述
6.1.3 物理模型
①、账户信息表(AccountDatabase)序号 字段名 字段含义 类型 允许为空 主键
1 username 用户名 varchar 否 是
2 name 昵称 varchar 否 否
3 email 电子邮箱 varchar 是 否
4 phone 手机号 varchar 否 否
5 password 密码 varchar 否 否
6 gender 性别 char 是 否
7 score 积分 number 是 否
②、乒乓球回击记录表(PingCallBack)序号 字段名 字段含义 类型 允许为空 主键
1 username 用户名 varchar 否 是
2 Date 日期 datetime 否 否
3 droppoint 落点 Int 否 否
4 whirling 旋度 Double 否 否
5 callback 回击详情 Boolean 否 否
③、权重文件表(Weight):用户名,训练数据,总训练时间,用户描述
序号 字段名 字段含义 类型 允许为空 主键
1 id Weight id varchar 否 是
2 username 用户名 varchar 否 否
3 desc 描述 varchar 否 否
4 totaltime 总训练时间 Int 否 否
5 date 上传时间 datetime 否 否
④、训练数据表(TrainData)序号 字段名 字段含义 类型 允许为空 主键
1 id 数据 id varchar 否 是
2 date 上传时间 datetime 否 否
3 username 用户名 varchar 否 否
4 desc 描述 varchar 否 否