姿态估计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

相关文章

C#使用SQLite进行大数据量高效处理的代码示例

《C#使用SQLite进行大数据量高效处理的代码示例》在软件开发中,高效处理大数据量是一个常见且具有挑战性的任务,SQLite因其零配置、嵌入式、跨平台的特性,成为许多开发者的首选数据库,本文将深入探... 目录前言准备工作数据实体核心技术批量插入:从乌龟到猎豹的蜕变分页查询:加载百万数据异步处理:拒绝界面

用js控制视频播放进度基本示例代码

《用js控制视频播放进度基本示例代码》写前端的时候,很多的时候是需要支持要网页视频播放的功能,下面这篇文章主要给大家介绍了关于用js控制视频播放进度的相关资料,文中通过代码介绍的非常详细,需要的朋友可... 目录前言html部分:JavaScript部分:注意:总结前言在javascript中控制视频播放

Spring Boot 3.4.3 基于 Spring WebFlux 实现 SSE 功能(代码示例)

《SpringBoot3.4.3基于SpringWebFlux实现SSE功能(代码示例)》SpringBoot3.4.3结合SpringWebFlux实现SSE功能,为实时数据推送提供... 目录1. SSE 简介1.1 什么是 SSE?1.2 SSE 的优点1.3 适用场景2. Spring WebFlu

java之Objects.nonNull用法代码解读

《java之Objects.nonNull用法代码解读》:本文主要介绍java之Objects.nonNull用法代码,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐... 目录Java之Objects.nonwww.chinasem.cnNull用法代码Objects.nonN

SpringBoot实现MD5加盐算法的示例代码

《SpringBoot实现MD5加盐算法的示例代码》加盐算法是一种用于增强密码安全性的技术,本文主要介绍了SpringBoot实现MD5加盐算法的示例代码,文中通过示例代码介绍的非常详细,对大家的学习... 目录一、什么是加盐算法二、如何实现加盐算法2.1 加盐算法代码实现2.2 注册页面中进行密码加盐2.

python+opencv处理颜色之将目标颜色转换实例代码

《python+opencv处理颜色之将目标颜色转换实例代码》OpenCV是一个的跨平台计算机视觉库,可以运行在Linux、Windows和MacOS操作系统上,:本文主要介绍python+ope... 目录下面是代码+ 效果 + 解释转HSV: 关于颜色总是要转HSV的掩膜再标注总结 目标:将红色的部分滤

在C#中调用Python代码的两种实现方式

《在C#中调用Python代码的两种实现方式》:本文主要介绍在C#中调用Python代码的两种实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录C#调用python代码的方式1. 使用 Python.NET2. 使用外部进程调用 Python 脚本总结C#调

Java时间轮调度算法的代码实现

《Java时间轮调度算法的代码实现》时间轮是一种高效的定时调度算法,主要用于管理延时任务或周期性任务,它通过一个环形数组(时间轮)和指针来实现,将大量定时任务分摊到固定的时间槽中,极大地降低了时间复杂... 目录1、简述2、时间轮的原理3. 时间轮的实现步骤3.1 定义时间槽3.2 定义时间轮3.3 使用时

Java中&和&&以及|和||的区别、应用场景和代码示例

《Java中&和&&以及|和||的区别、应用场景和代码示例》:本文主要介绍Java中的逻辑运算符&、&&、|和||的区别,包括它们在布尔和整数类型上的应用,文中通过代码介绍的非常详细,需要的朋友可... 目录前言1. & 和 &&代码示例2. | 和 ||代码示例3. 为什么要使用 & 和 | 而不是总是使

Java强制转化示例代码详解

《Java强制转化示例代码详解》:本文主要介绍Java编程语言中的类型转换,包括基本类型之间的强制类型转换和引用类型的强制类型转换,文中通过代码介绍的非常详细,需要的朋友可以参考下... 目录引入基本类型强制转换1.数字之间2.数字字符之间引入引用类型的强制转换总结引入在Java编程语言中,类型转换(无论