AlaphPose初探 | 轻松实现人体姿态估计

背景

为什么要搞这个?

很凑巧,最近我的老师突然找我聊天和我说,他的学生的公司有一个项目需要外包出去,问我有没兴趣。

需求List

  1. 会使用python语言进行开发,对AlaphPose有一定的了解和研究,能二次开发。
  2. 根据输入视频参数判断视频中任务跳绳次数并输出对应结果。
  3. 人物切帧算法研究。

想法

  • 虽然我曾经写过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文件

pan.baidu.com/s/1Zb2REEIk...

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/
  1. python scripts/demo_inference.py 启动 AlphaPose 的演示推理脚本。
  2. --cfg configs/coco/resnet/256x192_res50_lr1e-3_1x-simple.yaml 指定模型的配置文件。
  3. --checkpoint pretrained_models/simple_res50_256x192.pth 指定预训练模型的权重文件。
  4. --indir examples/demo/ 指定包含要处理的图像或视频的输入目录。
  5. --save_img 是一个标志,指示脚本保存处理后的图像。
  6. 输出结果默认可能在脚本所在目录或一个预设的输出目录,但具体位置需要查看脚本或通过添加 --outdir 参数来指定

输入文件

有三张图片,我们挑一张来看

模型运行

输出结果

至此,一个轻量级和快速的人体姿态估计解决方案已经完成。

相关推荐
刀法如飞1 分钟前
一款Python语言Django框架DDD脚手架,助你快速搭建项目
python·ddd·脚手架
刀法如飞5 分钟前
一款Python语言Django框架DDD脚手架,适合中大型项目
后端·python·领域驱动设计
zb2006412014 分钟前
SpringBoot详解
java·spring boot·后端
与芯同行14 分钟前
单声道音频Codec在语音交互产品中的工程设计要点与常见问题分析
人工智能·语音识别·ai语音对话芯片·tp9311·天源中芯tpower
citi17 分钟前
OpenViking 源代码编译指南
人工智能·context
MediaTea27 分钟前
Scikit-learn:数据集
人工智能·python·机器学习·scikit-learn
sali-tec34 分钟前
C# 基于OpenCv的视觉工作流-章52-交点查找
图像处理·人工智能·opencv·算法·计算机视觉
冬奇Lab37 分钟前
一天一个开源项目(第81篇):YC 总裁亲自写代码,把自己的大脑开源了
人工智能·开源·资讯
冬奇Lab40 分钟前
SubAgent 原理深度解析:AI 系统如何通过委托实现专业化分工
人工智能·agent·claude
AI人工智能+电脑小能手43 分钟前
【大白话说Java面试题】【Java基础篇】第7题:HashMap的get流程是什么
java·后端·面试·哈希算法·散列表·hash-index·hash