Gesture_cognition(手势识别)【附github地址】
Gesture_cognition(手势识别)有问题邮箱联系,免费开源,私信不常看,邮箱:xingchenziyi@163.com
一、项目信息
该项目基于Tensorflow2.1开发,自建六种手势数据集,内置图像预处理,图像增广,网络模型,识别等程序。可帮助新手掌握如何使用自制数据集进行模型训练,分类,调用训练好的模型进行目标检测。
因为计算机GPU资源有限,仅仅训练了2400张图片,采用的灰度二值化图像处理方式。在保存数据集的时候,我先将增广之后的图片进行保存,再读取图片保存为NumPy,这样导致了本来是两个维度的二值化图依旧有三个维度,可对代码进行修改,减少图像维度,减少计算量。
所有的数据集均为自制数据集,仅供学习使用,禁止用于商业用途。
二、软件环境
软件库及环境 | 版本信息 |
---|---|
Anaconda3 | Python3.7 |
Cuda | 10.2 |
Cudnn | 7.6.5 |
显卡 | GTX1650 |
OpenCV-python | 4.5.3.56 |
Tensorflow-gpu | 2.3.0 |
Numpy | 1.18.5 |
Matplotlib | 3.4.2 |
开发所用的IDE是Anaconda自带的Spyder,在开发项目的时候,可使用anaconda创建虚拟环境,创建Python3.7的环境,安装Tensorflow2.x以上的版本,Tensorflow2.x只支持Python3.7以上的版本.安装cuda和cudnn需要根据自己的电脑配置来进行安装,安装过程过于繁琐,读者加油!
三、项目结构
(1)文件目录
+---img_augment # 增广数据集
+---img_binary # 灰度二值化数据集
+---img_gray # 灰度数据集
+---img_hsv # HSV数据集
+---img_main # 原始数据集
+---weight # 保存的模型文件
+---alexNet.py # 训练模型
+---demo_cv.py # 调用模型进行识别检测
+---img_aug.py # 数据增广
+---img_augment_rename.py # 增广数据集命名重写
+---img_gray.py # 转换为灰度图并保存在img_gray
+---img_hsv.py # 转换为HSV并保存在img_hsv
+---img_main_rename.py #原始数据集命名重写
+---train_test.py # 数据集转换为numpy格式并保存
\---acc.png # 模型训练acc图
(2)网络模型结构
Model: "functional_9" # alexnet网络结构
_________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
input_5 (InputLayer) [(None, 224, 224, 3)] 0
_________________________________________________________________
zero_padding2d_4 (ZeroPaddin (None, 227, 227, 3) 0
_________________________________________________________________
conv2d_20 (Conv2D) (None, 55, 55, 48) 17472
_________________________________________________________________
max_pooling2d_12 (MaxPooling (None, 27, 27, 48) 0
_________________________________________________________________
conv2d_21 (Conv2D) (None, 27, 27, 128) 153728
_________________________________________________________________
max_pooling2d_13 (MaxPooling (None, 13, 13, 128) 0
_________________________________________________________________
conv2d_22 (Conv2D) (None, 13, 13, 192) 221376
_________________________________________________________________
conv2d_23 (Conv2D) (None, 13, 13, 192) 331968
_________________________________________________________________
conv2d_24 (Conv2D) (None, 13, 13, 128) 221312
_________________________________________________________________
max_pooling2d_14 (MaxPooling (None, 6, 6, 128) 0
_________________________________________________________________
flatten_4 (Flatten) (None, 4608) 0
_________________________________________________________________
dropout_8 (Dropout) (None, 4608) 0
_________________________________________________________________
dense_12 (Dense) (None, 2048) 9439232
_________________________________________________________________
dropout_9 (Dropout) (None, 2048) 0
_________________________________________________________________
dense_13 (Dense) (None, 1024) 2098176
_________________________________________________________________
dense_14 (Dense) (None, 6) 6150
_________________________________________________________________
softmax_4 (Softmax) (None, 6) 0
=================================================================
Total params: 12,489,414
Trainable params: 12,489,414
Non-trainable params: 0
_________________________________________________________________
(3)训练精度与预测精度
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DN4rUVi8-1635360547679)(README.assets/acc_.png)]
四、程序说明
在项目开始之前,请先建立好
img_gray、img_binary、img_hsv、img_augment、weight文件夹。
如果需要重新生成新的图片,记得把文件夹中的图片都删除,不要删除原始数据集即可。
先将原始数据集增广,然后进行灰度二值化或者hsv处理,最后生成特征数组和标签数组,运行神经网络进行模型训练,调用模型进行结果预测。
(1)img_main_rename.py
该程序仅仅只是修改了原始数据集的文件名,方便查看,阅读方便。读者可自己拍摄数据集,记得要进行归一化处理,可参考demo_cv文件中对图像的归一化处理,本项目未给出归一化处理程序。
(2)img_aug.py
增广数据集,将增广的数据集保存在img_augment文件夹中。
(3)img_augment_rename.py
该程序仅仅只是修改了增广数据集的文件名。
(4)img_gray.py
原始数据集准备好之后,可运行该函,转换为灰度图并保存在img_gray文件夹中(或者修改文件路径,保存二值图),我在程序里面是直接将增广数据集转为灰度图之后,二值化之后直接保存在img_binary文件夹里面,请注意。
(5)img_hsv.py
转换为灰度图并保存在img_hsv文件夹中。
(6)train_test.py
将img_binary数据集转换为NumPy格式并保存。
(7)alexNet.py
使用Alex net神经网络训练模型,并保存模型在weight中。
(8)demo_cv.py
调用模型,调用摄像头将图像信息传入模型中,得到预测结果。
五、模型评估
该模型因为训练数据量少,过拟合严重,在复杂环境下的识别精度低.可采用HSV的方式对图像进行二值化处理,本项目只保存了hsv图,因为GPU资源的原因,并没有训练hsv二值化之后的图像进行模型对比,读者自己尝试,或更改网络结构,增大数据集的数量,提高模型在复杂环境下的精确度。不过对于新手来说学习足矣。
gitee地址:.
https://gitee.com/mysterious-knight/pythonProject2/tree/master/gesture_recognition/gesture
github地址:https://github.com/AeneonLXC/pythonProject2/tree/master/gesture_recognition/gesture
Gesture_cognition(手势识别)【附github地址】相关推荐
- 【我的安卓进阶之旅】Opengl Es(5)三维图形绘制圆锥、圆柱和球体(附Github地址)
之前的博客中,我们绘制了三角形.正方形.圆形.立方体,今天我们将绘制圆锥.圆柱和球体.能够绘制这些基本的常规几何形体后,其他的常见几何形体的绘制对于我们来说就基本没问题了. 绘制圆锥 由之前的博客,我 ...
- dubbo-环境搭建,实现一个简单地dubbo实例(附github地址)
一.建立maven模块和provider.consumer.service子模块,其中service是开发接口的模块 建立一个maven模块,不选择样板,直接next知道完成,建立三 ...
- 高精度人脸表情识别(附GitHub地址)
编者按:本文原作者吴捷,目前于中山大学就读研究生.研究领域为计算机视觉与自然语言处理.本文原载于知乎,经作者授权发布.欢迎去GitHub给大佬加星. 先放出GitHub地址: https://gith ...
- Top10机器学习开源项目发布,历时一个月评出 | 附GitHub地址
原作:Mybridge 问耕 补充整理 量子位 出品 | 公众号 QbitAI 从将近250个机器学习开源项目中,综合各种条件进行打分排序,最终Mybridge团队评选出十大最新.最棒的机器学习开源项 ...
- 高并发 WEB 服务器 nginx 源码通读中文分析注释,带详细函数注释及函数调用注释,附 github 地址,后期持续维护更新...
github地址:https://github.com/y123456yz/reading-code-of-nginx-1.9.2 对源码通读注释,函数进行了详细注释.同时对相关功能进行了优化,日志功 ...
- react无缝滚动_react 实现一个无限循环的轮播器 附github地址
一个简单的轮播 为了更具有通用和参考性,轮播组件中,轮播只使用了react,没有添加其他的状态管理,或者参数类型限制的库. 所以这个轮播的方法,同样可以用于vue 等其他框架 github地址 最终效 ...
- SSM框架学习文档以及SSM整合(附Github地址=含SSM学习时的实例代码)
SSM框架学习 软件架构: 基于流行SSM框架:Spring+SpringMVC+Mybatis 项目配置: 使用Maven进行项目jar导入 使用Git进行版本控制,并将每次编写的代码上传到Gi ...
- ECCV18 | 如何正确使用样本扩充改进目标检测性能(附Github地址)
(欢迎关注"我爱计算机视觉"公众号,一个有价值有深度的公众号~) 众所周知,在计算机视觉识别任务中,对训练样本进行增广是非常重要的,可以减少过拟合.改进模型泛化性能. 在大多数视觉 ...
- ECCV18|这篇论文开源的车牌识别系统打败了目前最先进的商业软件(附Github地址)...
(欢迎关注"我爱计算机视觉"公众号,一个有价值有深度的公众号~) 来自巴西阿雷格里港大学的学者发表于ECCV2018的论文<License Plate Detection a ...
最新文章
- Nginx+Tomcat 负载均衡集群方案
- HashMap和Hashtable及HashSet的区别
- 微软Visual Studio 2019版本16.3 正式发布,支持 .NET Core 3.0
- 究极探秘!你知道程序员最喜欢做的四件事是什么吗?
- 如何做一个“千里马”
- 81. $GLOBALS['HTTP_RAW_POST_DATA'] 和$_POST的区别
- idea删除不用或者失效的jdk
- 文字转语音(Python pyttsx3)
- 基于K—近邻的车牌号识别小实验
- 微信服务号、订阅号和企业号的差别
- 服务器装win10性能怎样,Win10 藏着不给人看的卓越性能模式到底对电脑有什么影响?...
- 如何缩小png图片大小kb?如何让png图片变小?
- 软件测试-mocha入门
- 物联卡中心:物联网卡代理商这么多,我怎么选?
- python抓取视频中的人物动作,并生成3D的bvh
- SSM全注解开发的网上商城系统
- A4纸尺寸大小是多少
- 做为一个玩家如何架设传奇
- 【击穿、穿透、雪崩】
- 如何使用Gulp完成项目的自动化构建
热门文章
- 移动网关设置不了虚拟服务器,手动配置网关,解决VMWare虚拟机内可以访问主机但无法访问互联网的问题...
- 洗衣机洗涤部分c语言程序,51单片机洗衣机控制板及C语言程序
- Markdown 随笔:改变 typora 扩展Markdown语法【文字高亮颜色】
- BGP路由器协议排错教程:BGP 基本配置
- 服务器TIME_WAIT过多
- 十年之间的CVPR与我们
- JAVA中stuf什么意思_Stuf是什么意思
- **在Ubuntu系统下Copley CAN-PCI驱动的安转和开机自启动配置**
- python编程计算器_python编写计算器功能
- UC浏览器极速版-艳云脚本云控系统