姿态估计各种方法对比结果

  1. AlphaPose

Github地址:https://github.com/MVIG-SJTU/AlphaPose

官方网站:https://www.mvig.org/research/alphapose.html

论文地址:https://arxiv.org/pdf/1612.00137.pdf(2018年论文)

 

简介:AlphaPose是一种非常精确的实时多人位姿估计系统。它是第一个在COCO dataset上实现70+ mAP (72.3 mAP)和在MPII dataset上实现80+ mAP (82.1 mAP)的开源系统。

 

 

Alphapose是自上而下的算法,也就是先检测倒人体,再得到关键点和骨架。因此他的准确率、Ap值要比openpose高。但是缺点就是随着图片上的人数增加,他的计算量增大,速度变慢。
但是有个好处就是它被遮挡部分的关键点不会任意获取。即可以只显示看得到的部分。准确度方面也比openpose好。

网络模型基于resnet50、resnet101,因此计算量比较大,运算速度也比较慢。

 

  1. Pytorch-OpenPose

GitHub地址:https://github.com/Hzzone/pytorch-openpose

论文地址:https://arxiv.org/pdf/1611.08050.pdf(2017年论文)

 

OpenPose三大亮点

OpenPose是基于卷积神经网络和监督学习并以caffe为框架写成的开源库,可以实现人的面部表情、躯干和四肢甚至手指的跟踪,不仅适用于单人也适用于多人,同时具有较好的鲁棒性。可以称是世界上第一个基于深度学习的实时多人二维姿态估计,是人机交互上的一个里程碑,为机器理解人提供了一个高质量的信息维度。其理论基础来自Realtime Multi-Person 2D Pose Estimation using Part Affinity Fields ,是CVPR 2017的一篇论文。

主要流程

 

  1. 输入一幅图像,经过卷积网络提取特征,得到一组特征图,然后分成两个岔路,分别使用 CNN网络提取Part Confidence Maps 和 Part Affinity Fields;
  2. 得到这两个信息后,我们使用图论中的 Bipartite Matching(偶匹配) 求出Part Association,将同一个人的关节点连接起来,由于PAF自身的矢量性,使得生成的偶匹配很正确,最终合并为一个人的整体骨架;
  3. 最后基于PAFs求Multi-Person Parsing—>把Multi-person parsing问题转换成graphs问题—>Hungarian Algorithm(匈牙利算法)(匈牙利算法是部图匹配最常见的算法,该算法的核心就是寻找增广路径,它是一种用增广路径求二分图最大匹配的算法。)

亮点1:PAF-Part Affinity Fields(本paper的核心贡献):

人体姿态检测,通常是top-down的思路,也就是先做行人检测,然后把每一个人分割出来,最后基于每一个独立个体,找出各自的人体关键点。这个办法有两个问题:

1.结果严重依赖第一步行人检测器的结果,如果人都没找到,就无从进行找手手脚脚这一步了。

2.计算时间和人数正相关,人越多越耗费时间。

OpenPose 使用了另一种思路,即bottom-up,先找出图中所有的关键点,再用匹配的方法拼装成一个个人体骨架。这种办法有一个缺陷,就是没办法利用全局上下文的信息。

为了克服这个问题,本文想出了一个办法,就是PAF(Part Affinity Fields), 部分区域亲和。它负责在图像域编码着四肢位置和方向的2D矢量。同时,使用CMP(Part Detection Confidence Maps)标记每一个关键点的置信度(就是常说的“热图”)。通过两个分支,联合学习关键点位置和他们之间的联系。

同时推断这些自下而上的检测和关联的方式,利用贪婪分析算法(Greedy parsing Algorithm),能够对全局上下文进行足够的编码,获得高质量的结果,而只是消耗了一小部分计算成本。并行情况下基本达到实时,且耗时与图片中的人数无强关联。

亮点2: 高鲁棒性

亮点3:终于将人体、人手、人脸的landmarks三元归一

以前,人体骨骼关节点是行为分析动作识别的人做,人脸landmark提取是人脸识别或者美颜算法开发团队做,手部关节点是手势识别人机交互团队在做,属于不同的细分方向。

有什么短板?

耗显存

计算量本来就很大,为了达到实时的目的,使用了高并行的策略。基于cuda加速,所以非常吃显存,基本劝退显存低于4G的机器了(GTX 980ti+)。

特殊场景下检测效果差

比如人体姿势比较诡异的时候

 

  1. ***Openpifpaf(封装成pip库,可以直接pip安装使用,可以达到实时)

 

GitHub地址:https://github.com/vita-epfl/openpifpaf

论文地址:https://openaccess.thecvf.com/content_CVPR_2019/papers/Kreiss_PifPaf_Composite_Fields_for_Human_Pose_Estimation_CVPR_2019_paper.pdf(2019年CVPR论文)

官方API:https://vita-epfl.github.io/openpifpaf/intro.html

浏览器在线测试:https://vita-epfl.github.io/openpifpafwebdemo/

https://www.cnpython.com/pypi/openpifpafwebdemo

 

我们提出了一种新的自底向上的二维人体姿态估计方法,特别适合于城市交通,如自动驾驶汽车和送货机器人。该方法利用局部强度场(PIF)对人体部位进行定位,利用局部关联场(PAF)对人体各部位进行关联,形成完整的人体姿态。在低分辨率和拥挤、杂乱和闭塞的场景中,我们的方法优于以前的方法,这得益于(i)我们新的复合场PAF编码细粒度信息,(ii)回归时选择了包含不确定性概念的拉普拉斯损失。我们的架构是基于完全卷积、单镜头、无盒的设计。我们在标准COCO keypoint任务上的表现与现有的最先进的自下而上方法相同,并在运输领域的改进COCO keypoint任务上产生最先进的结果。

 

 

使用方法:

 

接口文档:https://www.cnpython.com/pypi/openpifpaf

 

 

 

 

 

启动本地服务,在浏览器中直接调用效果:

 

 

 

  1. MobilePose

Github地址:https://github.com/YuliangXiu/MobilePose-pytorch

 

mobilePose就是用轻量级网络来识别人体关键点,而且大部分都是单人姿态估计。因此可以先加上人体的侦测,如用yolo侦测到人的位置,然后在接上mobilepose,这样速度可以非常的快,而且准确性也比较好。
但是缺点就是,不管人体部分是不是被遮挡,都会生成所有关键点。

这个源码里面包括ResNet18、MobileNetV2、ShuffleNetV2、SqueezeNet1.1…几个轻量级的网络。
然后官方是直接对摄像头进行裁剪,只有中间一部分,(放得下一个人的位置)。而且即使没有框住人,也会生成骨架信息。例如下图,直到窗口有人出现才把骨架和人对上。

MobilePose 是一个轻量级的、基于 PyTorch 实现的单人姿态估计框架。目标旨在提供一个模型训练/推理/评估接口,以及具有各种数据增强选项的数据采集器。最终训练的模型在速度、大小和精度方面均可满足移动设备的基本需求。


默认生成的骨架

 

 

 

4.**lighttrack(效果也不错,但稍有延迟延迟不是很大

Github地址:https://github.com/Guanghan/lighttrack

论文地址:https://arxiv.org/pdf/1905.02822.pdf

论文提出了轻量级的多目标跟踪框架LightTrack。包含YOLOV3的目标检测,基于CPN_res101,MSRA152,mobile_deconv这3个网络种任意一个的关键点检测,基于SGCN的人体姿势匹配。整体结构是一种自上而下的结构。

主要贡献:

  1. 提出了一个通用的基于自上而下的骨架跟踪框架。
  2. 提出了SGCN作为一个REID模块进行姿势跟踪。
  3. 根据各种不同的设置进行了大量的实验。

 

 

 

5.***Lightweight OpenPose(可以达到实时)

GitHub地址:https://github.com/Daniil-Osokin/lightweight-human-pose-estimation.pytorch

论文地址:https://arxiv.org/pdf/1811.12004.pdf(2018论文)

Real-time 2D Multi-Person Pose Estimation on CPU: Lightweight OpenPose

这是Intel在OpenPose的基础上,提出一种轻量版本——Lightweight OpenPose,相对于2阶的OpenPose,其参数量只有15% ,但是性能缺相差无几(精度降低1%)。最主要的是,其模型可以在CPU上达到26fps 。

lightweight OpenPose,顾名思义,就是将OpenPose朝轻便的方向进行改进。具体改进的地方有三点:

1)特征backbone部分使用带空洞卷积的MobileNet结构代替原来的VGG结构

2)将OpenPose的两个branch合并成一个branch,只在输出再分叉出两个输出

3)使用作者提出的带空洞卷积的block结构代替7*7卷积

 

 

 

 

 

 

 

 

 

6.其他程序一些效果

(1)使用OpenCV  使用OpenPose MobileNet(可以实时,但效果不好)

 

 

 

AlphaPoseOpenPose都是人体姿态估计的开源框架,它们各有优缺点。 AlphaPose的优点是: 1.速度快:AlphaPose使用了一些优化技术,如多线程和GPU加速,可以实现实时的人体姿态估计。 2.精度高:AlphaPose采用了一些先进的算法,如卷积神经网络和卡尔曼滤波器,可以实现高精度的人体姿态估计。 3.支持多人姿态估计AlphaPose可以同时估计多个人的姿态,可以应用于人群监控等场景。 AlphaPose的缺点是: 1.对于复杂场景的适应性不强:AlphaPose对于复杂场景的适应性不如OpenPose,如人体遮挡、光照变化等情况下,估计精度会有所下降。 2.需要较高的硬件要求:AlphaPose需要较高的计算能力和显存,对于一些低端设备来说,可能无法运行。 OpenPose的优点是: 1.对于复杂场景的适应性强:OpenPose采用了多种算法和技术,如多尺度特征提取、空间金字塔池化等,可以适应各种复杂场景。 2.支持多种输入格式:OpenPose支持多种输入格式,如视频、图像、摄像头等,可以应用于不同的场景。 3.开发者社区活跃:OpenPose的开发者社区非常活跃,有大量的开发者贡献了各种算法和技术,可以满足不同用户的需求。 OpenPose的缺点是: 1.速度较慢:OpenPose的速度较慢,无法实现实时的人体姿态估计。 2.精度稍低:OpenPose的精度稍低于AlphaPose,但对于一般应用场景来说已经足够。 综上所述,AlphaPoseOpenPose各有优缺点,用户可以根据自己的需求选择适合自己的框架。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

乐亦亦乐

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值