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

  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)的开源系统。

姿态估计各种方法对比结果_第1张图片

姿态估计各种方法对比结果_第2张图片

 

 

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的一篇论文。

主要流程

姿态估计各种方法对比结果_第3张图片

 

  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+)。

特殊场景下检测效果差

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

姿态估计各种方法对比结果_第4张图片

 

  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任务上产生最先进的结果。

 

 

使用方法:

姿态估计各种方法对比结果_第5张图片

 

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

 

 

 

姿态估计各种方法对比结果_第6张图片

姿态估计各种方法对比结果_第7张图片

姿态估计各种方法对比结果_第8张图片

 

 

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

姿态估计各种方法对比结果_第9张图片

 

 

 

  1. MobilePose

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

 

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

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

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

姿态估计各种方法对比结果_第10张图片
默认生成的骨架

 

 

姿态估计各种方法对比结果_第11张图片

姿态估计各种方法对比结果_第12张图片

 

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. 根据各种不同的设置进行了大量的实验。

 

 

姿态估计各种方法对比结果_第13张图片

姿态估计各种方法对比结果_第14张图片

姿态估计各种方法对比结果_第15张图片

 

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卷积

姿态估计各种方法对比结果_第16张图片

 

 

 

 

 

 

 

 

 

6.其他程序一些效果

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

 

 

姿态估计各种方法对比结果_第17张图片

 

你可能感兴趣的:(深度学习,姿态估计,深度学习)