欢迎光临散文网 会员登陆 & 注册

基于卷积神经网络实时识别手势动作

2023-04-27 14:02 作者:玟玟的大宝贝  | 我要投稿

访问【WRITE-BUG数字空间】_[内附完整源码和文档]


使用方法 先用Train.py训练好模型参数,然后运行CallFrame.py调用出界面窗口, 点击窗口的相应按钮就可以在线检测手势动作,其中的执行手势按钮是和下位机通信(如STM32单片机), 通过串口函数将识别结果传给下位机,实现根据手势动作控制的功能。

利用卷积神经网络实时识别手势动作

一共识别 5 种手势动作

  • 剪刀动作

  • 2.石头动作

  • 3.布动作

  • 4.OK 动作

  • 5.good 动作

主要思路:

1.构建数据集 2.建立神经网络 3.训练并调参 4.保存并调用

另外我还加了界面设计和机械臂控制(通过串口通信把判断结果发给单片机,所以代码中有 serial 模块)

训练集: 1~4 号动作各有 1300 张照片,5 号动作有 1450 张照片 测试集: 1~5 号动作各有 200 张照片

文件解释:

  • data 文件里面存放 test 数据集,train 数据集,实时保存的图像(用于在线检测)。

  • ges_ico 文件里面存放界面窗口显示的各种图标。

  • log 文件里面存放训练好的 CNN 网络的模型参数。

  • CallFrame.py 是界面窗口的逻辑文件,用来调用界面文件并编写信号与槽函数。

  • Frame.py 是界面窗口的界面文件,通过 PyQt5 的 designer 工具生成。

  • GetTestImage.py 是利用 OpenCV 获取图片并标记,用来制作测试集。

  • GetTrainImage.py 是利用 OpenCV 获取图片并标记,用来制作训练集。

  • SaveGesture.py 是利用 OpenCV 实时获取图片,并进行预处理,用于在线检测手势。

  • TestGesture.py 是将实时获取的图片送入已训练好的 CNN 中判断其手势动作。

  • TestInTest.py 是将测试集送入已训练好的 CNN 中判断该网络模型的准确率。

  • Train.py 是训练 CNN 模型函数,并将训练好的模型参数保存在本地。

  • Train_inputdata.py 是用来读取数据集的图像和标签,并打包成 batch 形式。

  • Train_model.py 是模型结构,这里用的是 AlexNet 结构。

使用方法:

先用 Train.py 训练好模型参数,然后运行 CallFrame.py 调用出界面窗口, 点击窗口的相应按钮就可以在线检测手势动作,其中的执行手势按钮是和下位机通信(如 STM32),通过串口函数将识别结果传给下位机,实现根据手势动作控制的功能。

测试结果:

使用该模型训练到 900 步的时候在测试集上正确率可以稳定在 95% 左右。

(训练集:1,2,3,4 号动作各有 1300 张照片,5 号动作有 1450 张照片;测试集:每种动作各有 200 张照片)


基于卷积神经网络实时识别手势动作的评论 (共 条)

分享到微博请遵守国家法律