项目背景
这个项目的核心在于通过分析2D姿势数据来识别和分类人类和动物的活动。这种方法的独特之处在于它不依赖于更复杂的3D姿势数据或原始2D图像。相反,它使用一种特殊的人工智能网络,即长短时记忆循环神经网络(LSTM),来处理和解释2D姿势的时间序列数据。时间序列数据是指连续时间点上记录的数据,这在分析动态姿势和行为时特别有用。
项目目标
让我们逐个详细解释项目的三个主要目标:
- 实现视频中人物姿态的检测,追踪,与动作的分类:基于2D姿势数据,使用目标追踪算法来跟踪每个人物在视频中的位置和运动。提取每个人物的2D姿势数据序列,并使用深度学习模型,如循环神经网络(RNN),对姿势序列进行动作分类。
- 验证2D姿势也能实现3D姿势在活动识别任务上的效果:这个目标是为了验证2D姿势数据在活动识别方面是否与3D数据同样有效。如果2D数据足够准确,那么我们就可以使用更简单、更便宜的设备(如普通的RGB相机)来捕捉和分析人类和动物的行为,而不需要昂贵的RGBD相机或大型运动捕捉系统。
- 相较于图像数据,验证2D姿势数据在活动识别中的效果:这个目标是为了看看简化的2D姿势数据(详见下述数据集介绍)是否可以提供与复杂的RGB图像相当的识别准确性。如果可以,那么我们就可以使用更小、处理速度更快的模型来分析数据,这对于数据量有限的情况(如在野外监测动物活动)非常重要。
- 在未来的运动行为预测研究中应用2D图像:这个目标旨在验证和探索使用2D姿势数据在预测未来行为方面的潜力。这对于开发更智能的机器人和自动系统非常重要,它们需要能够理解和预测人类和动物的行为,以便更好地与他们互动。
通过这个项目,研究人员希望不仅能够提高机器对人类和动物行为的理解,还希望开发出更简单、更有效的技术来实现这一点。这种方法的成功将为人工智能、机器人学以及人机交互等领域带来革命性的改变,使得我们与机器人和智能系统的互动变得更加自然和高效。
数据集描述
这个数据集是基于伯克利多模态人类行为数据库(MHAD)的一个子集,通过OpenPose软件对视频中的人物姿态进行估计而生成的。OpenPose是一种用于实时多人二维姿态估计的开源工具,可以检测出人体关键点的位置。该数据集包含了12个参与者进行6种不同行动的1438个视频(共211200帧),这些行动包括跳跃、做跳跃运动、拳击、双手挥舞、单手挥舞和拍手。
每个视频的输入数据是由一系列帧组成的时间序列,每帧包含18个关节的2D位置,每个关节的位置由其在图像中的x和y坐标表示。因此,单个帧的输入数据格式如下:
\(j 0_x, j 0_y, j 1_x, j 1_y, j 2_x, j 2_y, j 3_x, j 3_y, \ldots, j 17_x, j 17_y\)
这里的 j0_x, j0_y
表示第一个关节的x和y坐标,以此类推。
该数据集的特点如下:
- 共有211200帧图像。
- 时间窗口(n_steps)为32帧,大约等于1.5秒(假设帧率为22Hz)。
- 如果检测到多于一个人的姿态,则只使用第一个检测结果。
- 数据集没有进行标准化处理,例如没有校正人物在画面中的位置、运动距离、人物大小或动作速度等。它基本上是每个关节从固定摄像机视角看到的原始2D位置。
- 在某些情况下,如果未能检测到某个关节,该关节的位置会被标记为 [0.0, 0.0]。
数据集分割情况如下:
- 训练集占比80%(Training_split = 0.8)。
- 每32帧中有26帧的重叠(Overlap = 0.8125),即每个数据点中的帧与下一个数据点中的帧有26帧的重叠。
- 训练集(X_train)包含22625个数据点,每个数据点由32帧组成。
- 测试集(X_test)包含5751个数据点,每个数据点由32帧组成。
- 训练集和测试集是完全分开的,根据活动重复次数进行划分,然后再进行帧重叠处理。
文件结构如下:
X_test.txt
:这个文件包含测试数据集的x输入。每行代表一个数据点(或样本),每个数据点都包括36个关键点的坐标。这些坐标表示了18个关节在32个连续的时间帧中的2D位置。所以,每个数据点有32行,每行包含36个坐标值。X_train.txt
:这个文件包含训练数据集的x输入,与X_test.txt
类似,每个数据点也包含36个关键点的坐标,共32个时间帧。Y_test.txt
:这个文件包含了与测试数据集中每个数据点相关的类别标签。每行的值对应于X_test.txt
中相同行的数据点的动作类别。Y_train.txt
:与Y_test.txt
类似,这个文件包含了与训练数据集中每个数据点相关的类别标签。X_val.txt
:这个文件是一个占位符,通常在模型训练之后用于单次推断或评估。它的格式与X_test.txt
和X_train.txt
相似,但在训练过程中不直接使用,而是在模型训练完毕后用于验证模型性能。
模型效果
我们可以选择在网页端上传一个视频,或使用示例视频。如下截图:
![图片[1]-基于LSTM与Web部署的视频人物姿态预测项目-点头深度学习网站](https://venusai-1311496010.cos.ap-beijing.myqcloud.com/wp-content/upload-images/2024/01/20240110231325991-1024x340.png)
处理后的网页端显示如下:
![图片[2]-基于LSTM与Web部署的视频人物姿态预测项目-点头深度学习网站](https://venusai-1311496010.cos.ap-beijing.myqcloud.com/wp-content/upload-images/2024/01/20240110231238108-1024x475.png)
示例视频处理后的视频展示如下:
项目目录
![图片[3]-基于LSTM与Web部署的视频人物姿态预测项目-点头深度学习网站](https://venusai-1311496010.cos.ap-beijing.myqcloud.com/wp-content/upload-images/2024/01/20240110235652925.png)
- models存储的是模型的训练参数文件。
- RNN-HAR-2D-Pose-database存储的是模型的训练数据。
- scr存储的是模型的训练代码,具体来说:lstm.py是模型创建代码,train.py是模型训练代码,utils.py是视频中关键点或线的绘制与显示代码;video_analyzer是视频的读取和处理流代码。
- templates存储的是网页端的显示设计代码。
- app.py是启动网页端中部署项目的代码。
- Human_Activaty_Recongination_.ipynb类似train.py是对数据进行处理并创建模型进行训练的jupyter脚本
- sample_video.mp4是示例输入视频。
项目运行
当前项目目录下,启动终端,输入命令 python app.py
即可。可详见上述gif动态图。
如果想重新训练模型,请在项目目录下启动终端,进入src文件夹,输入命令 python train.py
即可。建议大家重新训练,但是注意要将训练好的权重保存在相对于的文件夹目录中,即models文件夹中。
暂无评论内容