posture_recognition
posture_recognition copied to clipboard
Posture recognition based on common camera
最新提示(2022-01-05):openpose的最新接口可能有所改动,需要对用地方改改。
0. 创新点

:octocat: 两个手工定制的特征,实现快速识别
:octocat: 第一个是距离,两个关键点的距离会随着动作不同而不同。
:octocat: 第二个是角度,考虑到距离会随着摄像头位置发生变化,而三个点的夹角不同,不论远近,夹角固定,同时夹角会随着动作不同而不同。
1. Overview 
- 基于普通摄像头的太极姿势识别(分类),通过openpose采集的骨骼点数据做分类。
- 第一就是通过openpose采集的骨骼数据做一个自定义特征的全连接网络的训练分类。(已完成)
- 第二就是通过openpose采集的骨骼图片做卷积神经网络(CNN)分类(已完成)
- 相关:基于Kinect的姿态识别(分类)
1.1. 安装与使用
首先根据OpenPose WindowsAPI安装说明安装,调用方式为Python调用。
OpenPose GitHub地址
OpenPose安装说明
最近迁移至Ubuntu,Windows的更新后cuda与caffee不兼容。部分程序有改动。总体不变。
- 若有需要和问题可提issues.我在Windows,Ubuntu,Mac上均安装过OpenPose。
1.1.1. 程序开发目录说明
git clone下来后cmake进行编译,其中要勾选BUILD_PYTHON进行编译才能被python调用。
workspace 程序开发目录详细说明
- 📂workspace
- 📁data_collection(数据采集)
- data_collection_window.py
- data_collection_window.ui
- data_collection.py
- 📁dataset (数据集)
- 📁taichi
- 📁marked_pic
- 🎴 p_2_0.jpg(最后一个下划线后面是类别,此处
0是类别,前一个数字2代表大概数量) - 🎴 ...
- 🎴 p_2_0.jpg(最后一个下划线后面是类别,此处
- 📄bone_dataSet.data(骨骼特征数据)
- 📄marked_pictrain.txt(图片路径)
- 📁marked_pic
- 📁taichi
- 📁main_program
- main.py 主程序入口
- mainWindow.py
- mainWindow.ui
- 📁model_pth (模型保存位置)
- 23classification_eigenvalue.pth
- 23classification_pic.pth
- 📁neural_network
- 📁runs (tensorboard 可视化,如果有必要)
- 📃classification23_taichi_eigenvalue.py
- 📃classification23_taichi_pic.py
- 📃data_process.py
- 📃predict_eigenvalue.py
- 📃predict_pic.py
- 📁openpose_python_demos (包含一些python使用openpose的例子)
- 📃flags.hpp(调用openpose的参数设置)
- 📃use_camera_by_opencv.py
- 📃use_camera.py
- 📁sundry (包含一些界面设计的图片等杂项)
- ...
- 📁data_collection(数据采集)
1.2. 训练效果
(注意此处没有测试集,研一的时候我又利用此数据集,并且划分训练集测试集,利用四层卷积+池化能达到97%以上的效果)
| 全连接 | 卷积网络 |
|---|---|
![]() |
![]() |
1.3. 展示效果
| 数据采集系统 | 识别系统 |
|---|---|
![]() |
![]() |
说明:由于在Ubuntu下选择了桌面是unity所以不能录屏,展示为GIF图片。
由于电脑的摄像头在下方,使用iPad来作为输入。效果依旧是实时效果,但是数据量较小。
马赛克保护隐私。。。。。。
1.4. 关于更更更更具体的思路
论文地址:腾讯文档 (权限设置,需要申请才能开放查看)
1.5. 答辩结果
校级答辩
优秀哈哈哈哈哈,承蒙老师指导,承蒙答辩老师欣赏,承蒙被抽到校级答辩。
写在最后
这个属于特别简单的一个本科生的毕业设计,思路可以模仿而内容不可照搬。
禁止商用



