背景
为什么要搞这个?
很凑巧,最近我的老师突然找我聊天和我说,他的学生的公司有一个项目需要外包出去,问我有没兴趣。
需求List
- 会使用python语言进行开发,对AlaphPose有一定的了解和研究,能二次开发。
- 根据输入视频参数判断视频中任务跳绳次数并输出对应结果。
- 人物切帧算法研究。
想法
- 虽然我曾经写过python并简单了解和实践过深度学习的一些东西,但是对于AlaphPose这个开源项目显然我是陌生的,本着没有百分百把握不轻易接外包的原则,我一开始是拒绝的,直到我看到了聊天记录的后面这句话,我发现我可能得试试了。
- 当然不能只因为钱就盲目答应下来,我们分析一下,前面两点利用AlaphPose二次开发实现显然不会太难,最后一点或许才是最重要的,所以我想先把前面两点先跑通再稍微了解一下任务切帧相关的识别算法再去回复是否能做。
今日目标
- 成功安装并跑通一个简单的训练模型Demo
- 输入一个跳绳视频,成功获取输出结果数据
AlaphPose介绍
仓库地址:github.com/MVIG-SJTU/A...
安装
1.环境准备
- 前置操作还不少,我这以Window为例使用WSL安装Linux的发行版 Ubuntu
- WSL安装Ubuntu步骤:learn.microsoft.com/zh-cn/windo...
- 接下来打开Ubuntu的命令行界面 安装conda
- 安装conda具体步骤参考:blog.csdn.net/lojloj/arti... 注意选择对应自己写系统的版本
- 接下来安装CUDA,CUDA具体安装步骤参考:blog.csdn.net/Sihang_Xie/... 这是一个NVIDIA开发的GPU的并行计算平台和编程模型,AlaphPose是基于此可以方便的利用GPU进行并行计算,安装成功如图
- 接着安装Python、Pip,这个就不用详说了
2.开始安装
- 前置依赖都安装完毕后开始看AlaphPose的安装文档:
github.com/MVIG-SJTU/A...但是我一开始按照这个文档安装是出现了一些版本兼容问题的,后面去看了下issue,发现一个issue的安装步骤完美解决了我的问题:github.com/MVIG-SJTU/A... 根据此issue的安装步骤依次执行即可
别人也说了,文档这一块确实没补充完整,而且没有把对应依赖和对应的版本加上去requirements.txt,所以你得对着每个依赖对应支持的版本号进行正确安装,按照步骤安装过程中可能会遇到一些小问题,切记多看报错信息,整个步骤是没问题的,已经实践过。
-执行安装时又报错了
看Issue有没类似问题,还真有:github.com/MVIG-SJTU/A...
根据报错信息,按要求完成安装
3.实战
AlaphPose中的几个关键要点
训练数据集:
- 深度学习训练数据集是用于训练模型的基础。它包含了大量的标注数据,这些数据可以是图像、视频、音频等,具体取决于我们想要解决的问题。例如,在使用AlphaPose进行人体姿态估计时,我们可能会使用包含标记人体关键点的图像或视频作为训练数据集。通常,这些数据集会被分为训练集、验证集和测试集,以评估模型的性能和泛化能力。
模型文件:
- 模型文件包含了训练好的模型的结构和权重。通过保存模型到一个文件,我们可以在不同的时间和地点重复使用这个模型,而不需要每次都重新训练。在AlphaPose的场景中,模型文件将包含了用于估计人体姿态的神经网络的结构和权重。
预训练模型:
- AlphaPose项目提供了一些预训练的模型,这些模型已经在大量数据上训练过,可以直接用于评估新的图像和视频。预训练的模型可以节省很多时间,因为你不需要从头开始训练模型。
Simple模型:
- Simple模型是AlphaPose提供的一种简化版本的预训练模型。它旨在提供一个轻量级、快速而准确的人体姿态估计解决方案。由于其结构较为简单和优化,Simple模型通常适用于资源受限或需要快速处理的场景。
输入和输出:
- 输入是指我们提供给模型的数据,例如一张图片或一个视频帧。在AlphaPose的场景中,输入通常是一张图片或一个视频帧,目标是在其中识别人体姿态。 - 输出是指模型根据输入数据产生的结果。对于AlphaPose,输出通常会是人体的关键点坐标,它们标记了人体的主要关节,如头、肩、肘、膝和脚等。
YOLOv3-SPP
- YOLOv3-SPP 是一个目标检测算法,它定义了如何从输入图像中检测和识别对象的过程。
执行Simple模型
下载yolov3-spp.weights文件
yolov3-spp.weights
文件本身不是算法,而是一个包含预训练权重的文件。这些权重是通过在大量标注的数据上运行 YOLOv3-SPP 算法得到的。在这个上下文中,YOLOv3-SPP 是算法,它是 YOLOv3 算法的一个变体,增加了 Spatial Pyramid Pooling (SPP) 层以改进对象检测性能。
我们把它放到对应的权重文件目录中:
下载预训练过的simple模型
drive.google.com/u/0/uc?id=1...
下载地址谷歌文档,要墙才能下,没有墙的话你们需要去网上搜索下载。
下载预训练好的模型后,我们把它放到此目录下:
然后我们根据文档写一条执行命令:
python3
python scripts/demo_inference.py
--cfg configs/coco/resnet/256x192_res50_lr1e-3_1x-simple.yaml
--checkpoint pretrained_models/simple_res50_256x192.pth
--indir examples/demo/
--save_img --outdir examples/results/
python scripts/demo_inference.py
启动 AlphaPose 的演示推理脚本。--cfg configs/coco/resnet/256x192_res50_lr1e-3_1x-simple.yaml
指定模型的配置文件。--checkpoint pretrained_models/simple_res50_256x192.pth
指定预训练模型的权重文件。--indir examples/demo/
指定包含要处理的图像或视频的输入目录。--save_img
是一个标志,指示脚本保存处理后的图像。- 输出结果默认可能在脚本所在目录或一个预设的输出目录,但具体位置需要查看脚本或通过添加
--outdir
参数来指定
输入文件
有三张图片,我们挑一张来看
模型运行
输出结果
至此,一个轻量级和快速的人体姿态估计解决方案已经完成。