项目文件列表如下:
-
data
:存放采集的数据。 -
dataset
:存放Train_model_tensorflow.py训练的数据。 -
model
:存放在网络训练中表现好的模型。 -
Collect.py
:采集界面。 -
Data_to_NPZ.py
:图片转.npz文件。用来制作数据集。 -
Frame.py
:UI界面。使用Python的PyQt5进行设计。 -
Gesture_CNN.py
:实时手语动作识别。将摄像头实时获取的帧图片送入已训练好的CNN模型中判断其手语动作。 -
Main.py
:主界面。 -
SaveGesture.py
:采集数据。利用OpenCV获取帧图像并转为.npz文件(.npz文件是数据训练的格式) -
Train_model_tensorflow.py
:模型训练,采用AlexNet结构。TensorFlow=1.4.0 -
Translate.py
:手语识别界面。 -
Data_rename
:图片批量重命名。 项目文件已经上传至我个人的GitHub,有需要的可自行下载。
项目设定可以识别5种手语动作,大家可根据自己的需求增减动作的种类,但是程序可能需要改动一些地方。采用的数据集是自己采集的。
A
动作 2.B
动作 3.C
动作 4.D
动作 5.F
动作
同时,项目准备对图像不进行肤色检测,即不对数据进行预处理,直接进行训练。采用的数据集是ASL Alphabet。ASL数据集包含 87,000 张图像,即 200x200 像素,总共有29个类。
整体的界面设计是利用PyQt5进行设计的,主要是因为PyQt5开发迅速,学习成本低,界面预览如下。
别的大佬解释肤色检测的基本原理更为详细,这里不做赘述。(下图为项目实现的肤色检测) 肤色检测
这个项目采用的是CNN经典模型的AlexNet,大家可以参考AlexNet设计者对AlexNet的分析。(论文链接如下)
ImageNet Classification with Deep Convolutional Neural Networks
具体测试还得回学校用高端机训练,笔记本过于乐色,训练太慢!!!
- 用YOLO代替肤色检测,解决了当人物离摄像头较远时肤色检测失效的问题,能够增强整体的鲁棒性。
- 这个项目只适用于静态手语动作的识别,而现实生活中更多的是动态的手语动作,希望大家在这个项目的基础之上能够加入时间序列,实现动态手语动作的识别。
这篇文章是我在寒假做大创的过程中突然想写的,这也是我第一次写这么正式的博客,可能中间有许多的漏洞,希望大家能多多指正。