Chinese number gestures recognition app(数字手势识别 APP, 识别 0-10)
基于卷积神经网络的数字手势识别 APP(安卓)
1, 项目简介
这是一个基于卷积神经网络的数字手势识别 APP(安卓), 主要功能为: 通过手机摄像头识别做出的数字手势, 能够识别数字 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 对应的手势.
Chinese-number-gestures-recognition 项目下包含两块代码: 1. DigitalGestureRecognition 为安卓 APP 代码; 2. digital_gesture_recognition 为 PC 端处理数据及训练模型代码, 编程语言为 python.
开发环境:
PC 端: python3.6, TensorFlow-gpu1.8, keras2.1.6, PIL, 硬件 NVIDIA GTX1070, 16GB momery
APP 端: Android studio3.1.2, TensorFlow Lite, opencv-3.4.0-android-sdk
2,APP 识别结果演示
2.1, 白天场景
2.2, 夜间场景
2.3, 复杂场景(正确率较低, 碰运气... 仅仅是会心一笑, 只是好奇试一试)
3, 数据集
3.1, 原始数据集
地址: https://pan.baidu.com/s/1whTtvo6GjIFbfKTYXzTZgQ
该数据集共 215 张数字手势图片, 该数据集由我, 女票 (李娜) 及好友: 蒋雯, 宋俞璋, 彭仲俊, 张蒙, 袁程, 邢守一和郑超自己拍照而来.(排名不分先后, 大家贡献一样), 感谢他们的帮助. 每张图片对应的标签已标记在图片的命名中, 图片命名格式为: 标签_编号. 例如:
数据集还是太少了, 因此, 有奉献精神的同学, 可以把您拍到的照片放到 collect_picture 文件下, 命名规则参照上面的命名, 原则上, 命名只要保证 "标签_" 即可,"_" 后面随意.
3.2, 数据增强 (data augmentation) 后的数据集
地址: https://pan.baidu.com/s/1_tLq_HcSmI1kg7VY9pnG5g
原始图片通过平移, 拉伸, 旋转等操作, 每张图片生成 100 张, 使用的生成代码为 digital_gesture_recognition/data_augmentation.py. 故生成后的数据集共 21592 张图片.
NOTE: 该数据集大小为 11.6GB, 压缩后约 11GB. 如果您的网络带宽下载速度较慢, 可以使用原始数据集和 digital_gesture_recognition/data_augmentation.py 自己重新生成.
3.3, 压缩后的数据集
把每张图片缩放到 64*64 大小, 形成的数据集为: digital_gesture_recognition/resized_img, 共 21592 张图片, 采用的压缩算法为 TensorFlow 中 area interpolation.digital_gesture_recognition/resized_img_split 数据集和 resized_img 是相同的, 只是分割成了 10 个小文件夹.
3.4,H5 数据集
地址: https://pan.baidu.com/s/1COV1UVM37X7jueg3wGfXWw
此 h5 数据集由 resized_img 中图片转化为 h5 文件得来. 此数据集的大小为: 215926464*3, 您可以使用 h5py 库来对此数据集进行操作. 比如, 你可以使用如下语句来载入数据集:
- data = h5py.File("dataset//data.h5","r")
- X_data = np.array(data['X']) #data['X']是 h5py._hl.dataset.Dataset 类型, 转化为 array
- Y_data = np.array(data['Y'])
4, 训练好的模型
digital_gesture_recognition/model_200 中为 epoch=200 训练得到的模型, 也是 APP 中使用的模型, model_2500 则为 epoch=2500 训练的模型. 在 PC 端训练得到的模型在训练集, 测试集上的 accuracy 分别为: 99.8% 和 99.5%. 在 APP 上因为面临的环境更加复杂, 准确率远没有达到这个数字. 在 PC 端随机测试几张好友拍的照片(在训练集, 测试集中均没有出现过), 测试结果比较满意, 测试结果如下:
来源: https://juejin.im/entry/5b540d98f265da0f574de812