基于百度飞桨PaddlePaddle模型训练的手势识别模型控制音乐播放器
基于百度飞桨paddle模型训练的手势识别模型控制音乐播放器
- 前言
- 一、什么是百度飞桨PaddlePaddle?
- 一.1 飞桨AI Studio
- 二、实际使用
- 1.配置虚拟环境
- 2.安装
- 三、实战
- 四、 效果展示:
- 总结
前言
随着机器学习深度学习的爆火,百度近期推出了百度飞桨模型,秉承着玩玩看看的想法基于百度飞桨模型做了一套代码。目前实现的功能是识别5种手势,控制音乐播放器的开始关闭上一首下一首以及暂停。在开始之前,不得不说,百度飞桨的社区有待壮大。
一、什么是百度飞桨PaddlePaddle?
PaddlePaddle简介:
(PArallel Distributed Deep LEarning 并行分布式深度学习)
飞桨(PaddlePaddle)以百度多年的深度学习技术研究和业务应用为基础,是中国首个自主研发、功能完备、 开源开放的产业级深度学习平台,集深度学习核心训练和推理框架、基础模型库、端到端开发套件和丰富的工具组件于一体。目前,飞桨累计开发者265万,服务企业10万家,基于飞桨开源深度学习平台产生了34万个模型。飞桨助力开发者快速实现AI想法,快速上线AI业务。帮助越来越多的行业完成AI赋能,实现产业智能化升级。
百度飞桨使用指南
特别指出:百度飞桨研究了多套模型,如
PaddleNLP自然语言处理模型库与PaddleCV视觉模型库,仅基于本项目我采用了PaddlePaddle模型而已。关于其它可移步官网。
一.1 飞桨AI Studio
这是目前我找到的,可以在线跑模型的唯一一个网站(如果各位有知道其他的欢迎评论)每周可以 领取(白嫖)一定时间的算力卡,用来在线跑模型,另外这也是一个学习社区,内部有许多基于百度飞桨的课程供大家参考学习,学习完成还可以领取算力卡。
大家直接百度搜索飞桨AI Studio即可 我不再附上链接(因为之前写爬虫附链接太多被官方大大提醒了)
二、实际使用
1.配置虚拟环境
学python嘛,虚拟环境必不可少,环境的坑我是踩了一次又一次(我恨啊),继上次我整理文件结果格式化了我的电脑以后我谨慎了很多。近期对于手上的许多项目基本上是一个项目一个虚拟环境。在使用过程中可以完全隔绝环境污染等问题,但是也出现了另一个问题。python以大量的第三方库而出名,所以使用一套虚拟环境稍微整理一下就小几个G,对于电脑又是一种负担。所以一定要随用随清理。
对于虚拟环境的配置我在其它博客中已经提到。没有看过的朋友务必创建一个虚拟环境再进行下一步。少壮不整理,老大修bug。
袁六加.:linux和windows下虚拟环境的配置
2.安装
代码如下(示例):
个人感觉官方文档还是非常良心的 ,进入官网后点击菜单栏的安装 选择自己的环境 如笔者环境 windows10 python pip 无GPU (所以选择cpu)
进入虚拟环境复制命令即可
安装验证:
import paddle
paddle.utils.run_check()
运行出现
PaddlePaddle is installed successfully!
证明安装成功
测试实例:
三、实战
飞桨AI Studio内部有大量数据集可供选择下载
数据集选择:
数据集我使用的是现成的,文件解压后内部有十种手势,一种大概200张笔者采用了其中的12345手势。
关于训练本人训练了150层cnn实际上在训练到110层左右时损失函数就已经准确到小数点后三位了,本人电脑没有GPU,挂着跑了三天三夜(哭死)。模型最后跑完了准确度还是非常不错的。
在投入使用的时候采用opencv进行了一个简单的中值滤波,以及镜像反转并框定区域对指定区域保存其图片传递给模型进行手势识别。在音乐播放方面采用了pygame。
在以上方式投入使用时会出现播放音乐则视频进程卡死现象。基于此状况采用了多线程的方式进行优化,最后的效果是比较流畅的。
核心代码概览
训练代码:
EPOCH_NUM = 150
print('开始训练...')
model_save_dir = r"E:\deeplearning_finger\model_cnn"for pass_id in range(EPOCH_NUM):# 进行训练train_cost = 0for batch_id, data in enumerate(train_reader()):# 遍历train_reader的迭代器,并为数据加上索引batch_idtrain_cost, train_acc = exe.run(program=fluid.default_main_program(), # 运行主程序feed=feeder.feed(data), # 喂入一个batch的数据fetch_list=[avg_cost, accuracy]) # fetch均方误差和准确率all_train_iter = all_train_iter + BATCH_SIZEall_train_iters.append(all_train_iter)all_train_costs.append(train_cost[0])all_train_accs.append(train_acc[0])if batch_id % 10 == 0: # 每10次batch打印一次训练、误差、准确率print("\nPass %d, batch %d, Cost %f, Acc %f" %(pass_id, batch_id, train_cost[0], train_acc[0]))# 开始测试test_accs = [] # 测试的损失值test_costs = [] # 测试的准确率# 每训练一轮 进行一次测试for batch_id, data in enumerate(test_reader()): # 遍历test_readertest_cost, test_acc = exe.run(program=fluid.default_main_program(), # #运行测试主程序feed=feeder.feed(data), # 喂入一个batch的数据fetch_list=[avg_cost, accuracy]) # fetch均方误差、准确率test_accs.append(test_acc[0]) # 记录每个batch的误差test_costs.append(test_cost[0]) # 记录每个batch的准确率# 求测试结果的平均值test_cost = (sum(test_costs) / len(test_costs)) # 每轮的平均误差test_acc = (sum(test_accs) / len(test_accs)) # 每轮的平均准确率print('Test:%d, Cost:%0.5f, ACC:%0.5f' % (pass_id, test_cost, test_acc))
识别代码:
while (cap.isOpened()):# print(finger_num)if finger_num == '1':cv2.putText(frame, '1', (0, 50), font, 2, (0, 0, 255), 3, cv2.LINE_AA)# pygame.mixer.music.stop()if pygame.mixer.music.get_busy():passelse:pygame.mixer.music.stop()music = pygame.mixer.music.load(songs_list[index])# print(songs_list[index])pygame.mixer.music.play()elif finger_num == '2':cv2.putText(frame, '2', (0, 50), font, 2, (0, 0, 255), 3, cv2.LINE_AA)pygame.mixer.music.pause()elif finger_num == '3':cv2.putText(frame, '3', (0, 50), font, 2, (0, 0, 255), 3, cv2.LINE_AA)if index >= len(songs_list) - 1:passelse:pygame.mixer.music.stop() # 暂停音乐意为无论播放什么都中断music = pygame.mixer.music.load(songs_list[index])pygame.mixer.music.play()index += 1elif finger_num == '4' or canny_num == '4':cv2.putText(frame, '4', (0, 50), font, 2, (0, 0, 255), 3, cv2.LINE_AA)if index <= 0:passelse:music = pygame.mixer.music.load(songs_list[index])pygame.mixer.music.play()index -= 1elif finger_num == '5':cv2.putText(frame, '5', (0, 50), font, 2, (0, 0, 255), 3, cv2.LINE_AA)pygame.mixer.music.stop()stop_thread(t5)cv2.destroyAllWindows()cap.release()# 键盘Esc键退出else:pass
如需完整代码请私信我
四、 效果展示:
基于百度飞桨的手势识别控制音乐
总结
以上就是今天全部内容,如有问题欢迎批评指正。
基于百度飞桨PaddlePaddle模型训练的手势识别模型控制音乐播放器相关推荐
- 工程师程序员的自我修养 Episode.4 基于百度飞桨PaddlePaddle框架的女朋友情绪分析防被打消息推荐深度学习系统
具体为什么想到这个题目呢...大概是我也想不出别的什么有趣的话题或者项目的工作了吧. 有一天,柏拉图问老师苏格拉底什么是爱情?老师就让他到理论麦田里去,摘一棵全麦田里最大最金黄的麦穗来,期间只能摘一次 ...
- 百度飞桨PaddlePaddle图像分割七日打卡营 class4 deeplab实现
百度飞桨PaddlePaddle图像分割七日打卡营 class4 deeplab实现 deeplab.py import numpy as np import paddle.fluid as flui ...
- python基于yolov3实现的手势控制音乐播放器
python基于yolov3实现的手势控制音乐播放器 效果演示 总体框架 手势识别模块 音乐播放器模块 一个小总结吧 效果演示 话不多说,先上最后的成品展示. python基于yolov3实现的手势控 ...
- 基于qt开发的智能系统:电子相册,监控摄像头模块,音乐播放器,视频播放器,电子时钟
登录模块 源码请移步 //登录验证按钮函数 void MainWindow::on_loginBtn_clicked() {//获得userNameLEd输入框的文本userNameLEd->t ...
- 第十一届 “中国软件杯”大学生软件设计大赛——基于百度飞桨EasyDL平台的芯片质检系统分区赛
本赛题由百度飞桨和广州万维视景科技有限公司联合设置,要求选手基于"芯片质量检测"的场景任务,使用 百度飞桨EasyDL平台 完 成数据标注.模型训练.模型部署等工作,并将模型部署到 ...
- 基于百度飞桨的皮影戏生成器
前言 飞桨(PaddlePaddle)是集深度学习核心框架.工具组件和服务平台为一体的技术先进.功能完备的开源深度学习平台,已被中国企业广泛使 用,深度契合企业应用需求,拥有活跃的开发者社区生态.提供 ...
- 百度飞桨助力高校培养AI大模型人才,2023年飞桨产学合作项目申报启动
7月7日,教育部产学合作协同育人项目公布项目指南通过的企业名单,百度被列入2023年(5月)批次名单:其中百度飞桨与文心大模型项目40个,包含教学内容和课程体系改革.实践条件和实践基地建设.师资培训项 ...
- 基于百度飞桨PaddleOCR的图片文字识别
PaddleOCR项目源码:https://github.com/PaddlePaddle/PaddleOCR 飞桨开源文字识别模型套件PaddleOCR,目标是打造丰富.领先.实用的文本识别模型/工 ...
- python画饼图_百度飞桨PaddlePaddle之[Python小白逆袭大神]7天训练营
第三次参加百度的7天训练营了 这次参加的主题是[Python小白逆袭大神],不过你别看是小白逆势...除非你一开始参加就逆袭完,不然你真的是python小白,这个课程还是有难难度的. 说一下个训练营的 ...
最新文章
- 课堂上我们为什么不发言
- 就linux学习的一点感受,谈谈前天面试后的感受吧,关于学习Linux
- re.findall为什么返回的元素会是个元素为元组的列表类型呢
- 大四上学期的分数和分析感悟
- 组合框绑定字符串数组的数据 c# 1614236088
- 【更新】火星人敏捷开发手册2012-02-24新增敏捷计划内容
- 聊聊网络安全行业这十年(2010-2019)
- UVALive - 7267 Mysterious Antiques in Sackler Museum
- 【风电功率预测】基于matlab遗传算法优化BP神经网络风电功率预测【含Matlab源码 760期】
- 2019年最新,免费检测僵尸粉软件,无打扰检测清理微信僵尸粉
- Robotframework基础篇(一):使用ride编辑器
- 广州电子路考视频发布 2014广州电子路考考点
- DTD(文档类型定义)介绍
- 如何设置WiFi密码才不会被WiFi万能钥匙破解
- 菜鸟供应链实时数仓的架构演进及应用场景
- 用c语言程序判断谁是小偷
- 原生js实现canvas粒子特效
- 小学计算机教师集体备课计实,小学科学集体备课记录(年.doc
- scrapy 爬取链家二手房数据
- Introduction to Python(2)