姿态估计Rethinking on Multi-Stage Networks for Human Pose Estimation论文梗概及代码解读

本文主要是介绍姿态估计Rethinking on Multi-Stage Networks for Human Pose Estimation论文梗概及代码解读,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

2018年COCO关键点检测冠军算法MSPN,姿态估计,Top-down的技术路线
应该是截止2019年10月26日时开源的最好的姿态估计算法之一了
旷世出品
代码链接点这,是基于Pytorch的
论文链接点这

摘要

姿态估计方法以基本形成one-stage 和 multi-stage两个路线
多阶段看上去更适合任务,但是现在多阶段的性能还是不如单阶段的
我们论文就来研究这个问题,我们讨论当下多阶段方法中不够高效的设计。
提出一些改进措施,包括单模块设计、跨阶段特征聚合、由粗到细的监督。
在MS COCO和MPII都是stage of the art (SOTA),证明了多阶段结构的有效性。

1介绍

最几年卷积神经网络在解决姿态估计方面发展很快。之前表现好的网络大多是one-stage的。由于姿态估计需要一个高的空间分辨率,所以上采样或者反卷积通常加在backbone主干网络之后,来提高空间分辨率的深层特征
姿态估计性能
(stege越来越多,MSPN的效果可以随之提高,其他网络不能显著提高)
之前多阶段性能不如单阶段网络,主要由于 the insufficiency in various design choices各种设计的选择不同。我看展示了多阶段网络的潜力。
MSPN有三大提高。

  1. 单阶段网络在当前多阶段方法中不够好。如Hourglass模型对不同层的channel使用相同的下采样、上采样。这样的设计明显与高性能网络(如ResNet)不适应。我们发现使用现有更好的结构(如CPN中的GlobalNet)座位单阶段模型就足够好了
  2. 由于重复下采样、上采样,信息很容易丢失,优化容易丢失。我们在不同层之前加强信息流,提出聚集特征。
  3. 观察到多阶段中pose定位准确度的提高,采用由粗到细的监督策略。

表1中可见,Res-152包含COCO minival数据集上73.6AP。相同的FLOPs上,MSPN在准确率和FLOP上平衡的很好。

2相关进度

Single-stage Approach backbone为训练好的分类骨架,如VGG ResNet等。Papandreou[31]设计网络得到heat maps来预测最后关键点。何凯明提出Mask R-CNN,先产生person box proposals然后应用单人姿态估计方法。2017coco冠军[17]提出Cascade Pyramid Network(CPN)来进行姿态估计,提出在线难样例挖掘loss,即online hard key points mining (OHKM)loss挖掘难样例。图1,表1中显示他们的方法简单的 提高模型能力并不能提高系统性能。
都是top-down方法。
Multi-stage Approach 可以是bottom-up,也可以是Top-down, 但是sinage方法都是top-down
bottom-up方法首先预测关键点,再组合成人
top-down使用检测器定位人。再使用单人姿态估计。Hourglass允许一个中间的监督来重复下采样、上采样过程。[48]使用Hourglass设计一个残差金字塔网络(PRMs)Pyramid Residual Module 来提高不同尺寸的变化。大多论文都基于Hourglass来改进。
2017年top模型都是single-stage

Multi-stage Pose Network

我们在两个步骤中使用top-down,第一步,行人检测器。实验表明,检测器足够好之后,检测器mAP再提高,对姿态估计影响不大了就。
第二步,Multi-stage Pose Network(MSPN)应用在检测包围框之后。如图2.(作者说工程中会将包围框扩大一部分再输入)
姿态估计网络
多阶段姿态估计网络有三个提高的地方:

  1. 采用的single-stage module不够优秀, 并且说明了为什么可以利用先进的single-stage 姿态估计网络
  2. 为了减少信息丢失,早期stage到后面stage质检加入特征聚集策略,将信息传送过去
  3. 由粗到细的监督。靠后的层更精细

3.1 Analysis of a Single-Stage Module

多数multi-stage方法都基于Hourglass,但是Hourglass每个module在重复下采样、上采样过程时时使用相同数量的卷积核数量。这种equal-channel-width设计从图1上来看效果不好。因为大量信息在每次下采样中丢失。
作为对比,现代网络结构就不同了,下采样时feature maps会增加(即channel会增加),相同的,我们注意到Hourglass的一些变体使用不同宽的channels。这些变体也只能到71.7的AP,当15.4G的FLOPS(的计算量)时,如表2.
我们的MSPN网络在上采样时保持了小数量的feature maps,在计算下采样时花费更多计算能力。这样的话,feature maps在每次下采样后加倍。我们旨在下采样过程提取更多有代表性的特征,因而这样做是有意义的,而且信息的损失在上采样中其实很难被恢复的。因此,增加下采样过程的计算量通常更有意义。最后得到2stage的MSPN,在9.6G的FLOP计算量下达到74.5AP
图3跨阶段融合
采用CPN中基于ResNet的GlobalNet来作为single-stage 模块,如图2.这是一个U型结构,从多尺度中提取特征用于预测。
注意到single-stage结构并不新颖,但是应用在multi-stage中是创新举动,并且展现出了有效果的地方。

3.2 Cross Stage Feature Aggregation

多级网络在下采样上采样时容易丢失信息,为解决这个问题,跨阶段特征聚合策略就很好用。
图2中显示,每个尺寸中,两个分离的信息流,一个下采样,一个上采样。我们在图3中加入1X1卷积。为聚集当前阶段的下采样特征,增加了三个组件来产生融合的额结果。
在这种设计下,当前stage可以充分从之前信息中提取更有代表性的特征。特征聚集可以被认为是额外的残差设计,可以帮助解决梯度消失问题。

3.3 Coarse-to-fine Supervision

姿态估计任务中上下文信息至关重要,它为可见关节提供信息。
小的定位误差会严重影响姿态估计性能。如图2.特别的,我们每个关键点的的ground truth heat map被认为是高斯的,大多数都是这样的,本工作中,我们进一步强调不同阶段使用不同的高斯核大小。早期stage中用大高斯核,后面的会小一些。
不同大小高斯核
如图4,这个策略是观察到多阶段热度图也是类似于由粗到细的。
另外,中间监督在提高深层神经网络性能中有至关重要的作用。因此,我们引入多尺度监督模型,每个stage执行4个维度的中间超维,这可以在不同层次上获得大量上下文信息,以帮助定位哪些很有挑战性的姿态。图2中可看到,在线难样例挖掘OHKM被大规模的应用,L2loss在所有尺寸中应用

4.Experiments

4.1Dataset and Evalution Protocal

MSCOCO,我们同[9]一样,把train 和validataion合并,并切割为train-val数据集,将近57k张图,150k个人,还有minival数据集,将近5k张图。分别被用来训练和评估。
基于OKS的mAP作为评判标准

4.2 Implementation Details

行人检测器 应用效果最好的MegDet[32]检测器,MegDet在COCO所有类中都训练,所有类别中,所有类别的100个最好的框中被检测出来的人 (Only human boxes out of the best 100 ones of all categories are selected),被选为单人姿态估计的数入。所有boxex被扩大为固定比例4:3
训练:8块GTX1080Ti,mini-batch=32, 90k iterations Adam , linear learning rate 5e-4 to 0, weight decay 1e-5
每张图随机进行一系列数据增强:裁剪、翻转、旋转、缩放。在裁剪crop时,超过8个关节点的实例将被以同样的可能性被裁剪为上半部分身体或者下半部分身体
旋转角度-45 ~ 45 , 缩放0.7~1.35,图像size在4.3节中256192,在4.5节COCO中为384288
测试:将后高斯滤波器post-Gaussian filter应用在heat map上,将原始图像的预测热度图与相应翻转图像的结果进行平均。
然后,在从最高响应到第二高相应的方向上实现四分之一的偏移,以获得关键点的最终位置。pose得分是box得分和关键点平均得分的乘积。

4.3 Ablation Study

消融学习。首先,如表1,评估主干网络对姿态估计性能:
姿态估计先随着检测精度提高而迅速提高并饱和。而后饱和几乎不改善了
表1
然后,我们来证明基于single-stage的多阶段结构的有效性。如表2,single-stage的Hourglass表现很差,加一个stage性能大幅提高。
然而,加到更多,提高就变小了。这表明需要更好的single-stage网络。MSPN则取得了很好的成绩。
最后,我们测试泛化性。single-stage的下采样单元可有效适应其他backbone
不同backbone
为对比这个,表3中,在相似FLOP计算量下,对比multi-stage网络和single-stage,很明显,2-stage网络更有竞争力。

4.3.2 Cross Stage Feature Aggregation

表4
为了解决多阶段网络信息丢失问题,表4中,加了跨stage连接之后两个网络都有提升。
加了由粗到细的监督之后,两个网络也有提高,提高效果比跨stage好

4.3.3 Coarse-to-fine Supervision

如表4。该设计旨在实现从粗到细的检测过程,结果证明了其在进一步提高关键点定位精度方面的有效性。另外,这解释了中间监督可以充分利用不从尺度上的上下文信息。
对比了不同级别的中间监督哪个好。3.2节中,应用越深的层越小的高斯核达到了更好的监督。表格5中,三种setting可看出,先大后小的kernel确实好。
kernel对比

4.4 Influence of Human Detector

使用很好的行人检测器,在COCO的minival上49.4的AP,表6中,41.1的检测器到49.4的检测器只带来了0.5个姿态估计的提升。

4.5 Comparision with state-of -the-art Methods

表7
表7所示,我们的single-stage方法达到了76.1AP,增加额外数据,还能提高到77.1AP,组合模型可达到78.1AP,表8中,可以看出超过COCO2017冠军。
效果图
图5效果图中可看出,对遮挡、拥挤的判断还是可以的

5 Conclusion

1提出Multi-Stage PoseNetwork即MSPN,完成多人姿态估计。
2首次确认了多阶段结构比single-stage结构更有效
3由粗到细的监督和跨阶段特征聚合可提高效果

这篇关于姿态估计Rethinking on Multi-Stage Networks for Human Pose Estimation论文梗概及代码解读的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1095194

相关文章

MySQL中时区参数time_zone解读

《MySQL中时区参数time_zone解读》MySQL时区参数time_zone用于控制系统函数和字段的DEFAULTCURRENT_TIMESTAMP属性,修改时区可能会影响timestamp类型... 目录前言1.时区参数影响2.如何设置3.字段类型选择总结前言mysql 时区参数 time_zon

python实现pdf转word和excel的示例代码

《python实现pdf转word和excel的示例代码》本文主要介绍了python实现pdf转word和excel的示例代码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价... 目录一、引言二、python编程1,PDF转Word2,PDF转Excel三、前端页面效果展示总结一

在MyBatis的XML映射文件中<trim>元素所有场景下的完整使用示例代码

《在MyBatis的XML映射文件中<trim>元素所有场景下的完整使用示例代码》在MyBatis的XML映射文件中,trim元素用于动态添加SQL语句的一部分,处理前缀、后缀及多余的逗号或连接符,示... 在MyBATis的XML映射文件中,<trim>元素用于动态地添加SQL语句的一部分,例如SET或W

使用C#代码计算数学表达式实例

《使用C#代码计算数学表达式实例》这段文字主要讲述了如何使用C#语言来计算数学表达式,该程序通过使用Dictionary保存变量,定义了运算符优先级,并实现了EvaluateExpression方法来... 目录C#代码计算数学表达式该方法很长,因此我将分段描述下面的代码片段显示了下一步以下代码显示该方法如

MySQL中的锁和MVCC机制解读

《MySQL中的锁和MVCC机制解读》MySQL事务、锁和MVCC机制是确保数据库操作原子性、一致性和隔离性的关键,事务必须遵循ACID原则,锁的类型包括表级锁、行级锁和意向锁,MVCC通过非锁定读和... 目录mysql的锁和MVCC机制事务的概念与ACID特性锁的类型及其工作机制锁的粒度与性能影响多版本

Redis过期键删除策略解读

《Redis过期键删除策略解读》Redis通过惰性删除策略和定期删除策略来管理过期键,惰性删除策略在键被访问时检查是否过期并删除,节省CPU开销但可能导致过期键滞留,定期删除策略定期扫描并删除过期键,... 目录1.Redis使用两种不同的策略来删除过期键,分别是惰性删除策略和定期删除策略1.1惰性删除策略

python多进程实现数据共享的示例代码

《python多进程实现数据共享的示例代码》本文介绍了Python中多进程实现数据共享的方法,包括使用multiprocessing模块和manager模块这两种方法,具有一定的参考价值,感兴趣的可以... 目录背景进程、进程创建进程间通信 进程间共享数据共享list实践背景 安卓ui自动化框架,使用的是

SpringBoot生成和操作PDF的代码详解

《SpringBoot生成和操作PDF的代码详解》本文主要介绍了在SpringBoot项目下,通过代码和操作步骤,详细的介绍了如何操作PDF,希望可以帮助到准备通过JAVA操作PDF的你,项目框架用的... 目录本文简介PDF文件简介代码实现PDF操作基于PDF模板生成,并下载完全基于代码生成,并保存合并P

SpringBoot基于MyBatis-Plus实现Lambda Query查询的示例代码

《SpringBoot基于MyBatis-Plus实现LambdaQuery查询的示例代码》MyBatis-Plus是MyBatis的增强工具,简化了数据库操作,并提高了开发效率,它提供了多种查询方... 目录引言基础环境配置依赖配置(Maven)application.yml 配置表结构设计demo_st

Redis与缓存解读

《Redis与缓存解读》文章介绍了Redis作为缓存层的优势和缺点,并分析了六种缓存更新策略,包括超时剔除、先删缓存再更新数据库、旁路缓存、先更新数据库再删缓存、先更新数据库再更新缓存、读写穿透和异步... 目录缓存缓存优缺点缓存更新策略超时剔除先删缓存再更新数据库旁路缓存(先更新数据库,再删缓存)先更新数