本期推荐的是一个基于Python的基于图像的手语识别系统——
hand-keras-yolo3-recognize。
hand-keras-yolo3-recognize一个基于人体姿态研究的手语图像识别系统。根据OpenPose人体姿态开源模型和YOLOv3自训练手部模型检测视频和图像,再把数字特征进行分类器模型预测,将预测结果以文本形式展现出来。
软硬件环境:
基于人体姿态的手语图像识别系统采用了软硬件相结合的方法。硬件部分主要是用于采集手语图像的单目摄像头。软件部分主要是通过ffmpeg对视频图像进行处理,然后在Anaconda下配置Python3.6的开发环境,再结合Cmake编译OpenPose模型,最后在VScode编译器中结合OpenCV中的图像算法,实现了对手语图像识别系统所有程序的编译,通过wxFromBuilder框架整合设计了系统主界面。
- 硬件环境
手语视频图像采集主要采用的硬件设备有笔记本电脑摄像头和手机摄像头。 程序运行硬件环境详细参数如下:
(1)操作系统:Windows10家庭版,64bit
(2)GPU:Intel(R) Core(TM) i5-8300H,主频:2.30GHz
(3)内存:8G
- 软件环境
(1) 视频处理工具:ffmpeg-20181115
(2) 集成开发环境:Microsoft Visual Studio Code、Anaconda3
(3) 界面设计工具:wxFromBuilder
(4) 编程语言环境:python3.6
系统功能设计:
1. 视频帧处理
视频中保存每帧图片主要使用了OpenCV中的cv2.imwrite()函数;处理一段视频使用本地最大平均帧间差为局部最大值的帧来提取关键帧。
2. OpenPose人体姿态识别
Openpose人体骨骼、手势–静态图像标记及分类(附源码)_cungudafa的博客-CSDN博客_openpose骨骼点文件
Openpose人体骨骼、手势–静态图像标记及分类2(附源码)_cungudafa的博客-CSDN博客_openpose 动作分类
由于仅靠人体姿态4和7关键点不足以识别手部位置,容易误判,因此在最终设计中引入了yolo手部识别。
3. yolov3手部模型训练
项目结构主要分为两大部分:YOLOv3深度模型训练部分和YOLOv3和OpenPose手语姿态识别部分。
训练模型思路:
环境:【GPU】win10 (1050Ti)+anaconda3+python3.6+CUDA10.0+
tensorflow-gpu2.1.0_cungudafa的博客-CSDN博客训练模型:【Keras+TensorFlow+Yolo3】一文掌握图像标注、训练、识别(tf2填坑)_cungudafa的博客-CSDN博客
模型训练参考代码:https://gitee.com/cungudafa/keras-yolo3
yolo3识别这里参考于:
https://github.com/AaronJny/tf2-keras-yolo3
4. 人体姿态数字特征提取
识别完整过程思路:
在OpenPose设计中阐述过求解距离和角度的公式及方法,最终因为个体差异每个人的骨骼可能不同,目前优化为距离比(即小臂3-4关键点的距离与脖子长度0-1关键点距离之比)。
基于 keras的yolo3训练部分项目结构如下表所示:
keras-yolo3训练项目结构:
其中logs文件夹用于存放训练好的模型,VOCdevkit用于存放图片和标注信息。
model_data文件夹内容:
nets文件夹内容:
openpose和yolov3相结合参考:
5.beyes分类识别
识别部分代码结构:
视频文件处理filesUtils文件夹:
模型model文件夹:
基本算法pose和yolov3文件夹:
使用:
1.配置好相应环境(docs/requirements.txt)
docs/requirements.txt · cungudafa/hand-keras-yolo3-recognize – Gitee.com
2.修改相应路径,运行UI_main.py
更多内容大家可自行前往阅读。
开源地址:点击下载