2. 上海理工大学 机械工程学院,上海 200093
2. School of Mechanical Engineering, University of Shanghai for Science and Technology, Shanghai 200093, China
人体姿态估计就是在给定的一幅图像或一段视频中去进行人体关键点位置定位的过程,基于给定RGB图像的关键点定位在多个领域都有着很好的应用前景,具有很高的研究价值。但由于存在光照变化、运动模糊、自身遮挡和视角不同等问题,所以现实生活中,多人姿态估计非常具有挑战性。早期的人体姿态估计经典著作将人类关键点估计问题表述为树形结构或图形模型问题,并基于手工制作的特征来预测关键点位置。随着深度卷积神经网络(CNN)的发展,其在人体姿态估计领域的应用极大地提高了关键点预测的性能。
基于卷积神经网络的人体姿态估计经历了坐标回归到预测热力图的发展趋势。Toshev等[1]提出的DeepPose首次使用CNN强大的拟合能力去强制性地回归人体骨骼关键点的坐标,并用级联的形式不断地调整结果。然而使用坐标回归的方法非常容易造成过拟合问题,随后出现的预测热力图的方法优势明显。2016年,单人姿态估计领域以Hourglass[2]和卷积姿态机(CPM)[3]为代表的模型均使用了这一方法。前者重复使用降采样和上采样的沙漏状网络来推断人体的关键点位置,后者使用排列有序的网络架构来实现空间信息和纹理信息的建模。这两个网络中的每一个阶段都会单独地去监督某一部分的学习,同时使用级联的网络结构将空间信息和纹理信息有效融合在一起。2017年,卡内基梅隆大学提出的OpenPose[4]使用部分亲和场来表示人的肢体,并采用树结构结合匈牙利算法求解线性整数,在多人姿态估计自底而上流派中具有里程碑意义。2018年提出的MultiPoseNet[5]使用ResNet作为主干网络,再加两个特征金字塔网络头分别输出人体检测框和人体关键点,最后使用姿态残差网络将检测到的所有关键点依据人体检测结果进行聚类,得到每个人的人体关键点集合。2019年提出的HR-Net[6]模型极力追求检测精度而忽视了模型参数量,与此同时也涌现出LPN[7]、FPD[8]等一批以简单、快速和较高精度为特点的小模型。
本文提出了一种基于深度残差网络(ResNet)的多人姿态估计算法,该算法采用现有的人体检测器,以Simple Baseline[9]为单人姿态估计网络的主干网络,通过改进残差块,引入多尺度监督模块和多尺度回归模块,结合丰富的多尺度特征,通过对各尺度特征的匹配,提高了关键点定位的鲁棒性。另外,新颖的坐标提取方法也有效提升了模型的性能。该算法参数量少,检测速度快,检测精度也极具竞争力。
1 网络结构 1.1 整体算法网络结构本文提出的算法属于自顶而下方案,即先将图片输入到人体检测网络中,检测图片中的所有人体,给每个人体实例一个边界框,随后将边界框裁减调整为适当尺寸输入到单人姿态估计网络(SPPE)内作关键点检测。由于YOLOv3[10]很好地权衡了人体检测速度和精度,是当下最先进的目标检测算法之一,因此本文算法直接取其作为人体检测器。整体算法网络结构如图1所示。
|
图 1 整体算法网络结构示意图 Figure 1 Overall algorithm network structure diagram |
单人关键点检测网络往往会采用一个编解码架构,通过特征提取网络反复提取原始图片的信息,随着网络的加深提取到的信息越来越抽象,特征图的空间尺寸也会越来越小,这对关键点的最终预测有负面影响。本文受Simple Baseline[9]启发,采用ResNet50作为特征提取的主干网络,在C5层后面接3个反卷积模块,每个模块为:反卷积层+BN+ReLU+
|
图 2 单人姿态估计网络结构 Figure 2 Network structure of single person pose estimation |
深度残差网络(ResNet)的基础构造块是残差块,分别由
| $\begin{array}{l} {{{\rm{Num}}}}1 = {{N}} \times \dfrac{{{M}}}{2} + 9 \times {\left( {\dfrac{{{M}}}{2}} \right)^2} + \dfrac{{{M}}}{2} \times {{M}} + {{N}} \times {{M}} = 14{{{N}}^2} \end{array} $ | (1) |
| $\begin{split} {{{\rm{Num}}}}2 = &\dfrac{{{N}}}{2} \times \dfrac{{{M}}}{4} + 9 \times \dfrac{{{M}}}{{4 \times 4}} \times 3 + \dfrac{{{M}}}{4} \times \dfrac{{{M}}}{2}{{ + }}\dfrac{{{N}}}{2} \times \dfrac{{{M}}}{2}= \\& 3{{{N}}^2} + \dfrac{{54}}{{16}}{{N}} \\[-12pt]\end{split} $ | (2) |
故
|
图 3 残差块的改进过程 Figure 3 Improvement process of residual block |
Simple Baseline模型仅仅对最终的热力图进行监督,忽视了对解码阶段各尺度信息的融合,对全局信息利用不够全面。多尺度监督模块(MSS-Model)就是要弥补这一不足,该模块主要是对反卷积层进行监督。反卷积层的每一层都有不同尺度,各个尺度的预测热力图都有其对应的真实热力图,多尺度监督模块就是通过计算真实热力图与这些预测热力图之间的残差来实现监督目的。为了使预测热力图的通道数相等以便计算对应的残差,使用
为了训练多尺度监督网络,本文定义了损失函数
| $G_k^d\left( {x,y} \right) = \frac{1}{{2{\rm{{\text{π}} }}{{\rm{\sigma }}^2}}}\exp \left\{ {\frac{{ - \left[ {{{\left( {x - {x_k}} \right)}^2} + {{\left( {y - {y_k}} \right)}^2}} \right]}}{{2{{\rm{\sigma }}^2}}}} \right\}$ | (3) |
式中:
| $\begin{split} {{{L}}_{\rm{MSE}}} =& \dfrac{1}{{3{{K}}}}\sum\limits_{{{d = }}1}^3 {{{d}} \cdot \left[ {\displaystyle\sum\limits_{{{k = }}1}^{{K}} {\displaystyle\sum\limits_{{{x,y}}}^{} {\left\| {{{P}}_{{k}}^{{d}}({{x,y}}) - {{G}}_{{k}}^{{d}}({{x,y}})} \right\|_2^2} } } \right]} {{ + }}\\ &\dfrac{3}{{{K}}}\displaystyle\sum\limits_{{{k = }}1}^{{K}} {\displaystyle\sum\limits_{{{x,y}}}^{} {\left\| {{{P}}_{{k}}^{{4}}({{x,y}}) - {{G}}_{{k}}^{{3}}({{x,y}})} \right\|_2^2} } \end{split} $ | (4) |
式中:K表示人体关键点总数;
使用一个多尺度回归模块(MSR-Model)对多尺度关键点热力图进行全局优化,以提高估计姿态的结构一致性。通过考虑所有尺度上的热力图进行姿势优化,可以从回归网络中学习这些先验知识。该模块以多尺度热力图作为输入,通过
推理时,大多数现有方法使用函数argmax来获取热力图中的关键点位置并转换为全分辨率,argmax的结果是离散的,只能是整数,这限制了最终预测坐标的精度。Luvizon等[11]尝试使用soft-argmax技术来回归最终坐标,使整个过程可微。
将真实热力图归一化到
| ${{{S}}_{{k}}}({{x,y}}) = \dfrac{{{{{{\rm{e}}}}^{{{{G}}_{{k}}}({{x,y}})}}}}{{\displaystyle\sum\nolimits_{{x}} {\displaystyle\sum\nolimits_{{y}} {{{{{\rm{e}}}}^{{{{G}}_{{k}}}({{x,y}})}}} } }}$ | (5) |
由于
| ${{{S}}_{{k}}}({{x,y}}) = \frac{{{{{{\rm{e}}}}^{{\rm{\beta}} {{{G}}_{{k}}}({{x,y}})}}}}{{\displaystyle\sum\nolimits_{{x}} {\displaystyle\sum\nolimits_{{y}} {{{{{\rm{e}}}}^{{\rm{\beta}} {{{G}}_{{k}}}({{x,y}})}}} } }}\; \; \; \; \; ({\rm{\beta}} \; ={{ > }}\; 1)$ | (6) |
和soft-argmax相同,会通过
经过大量实验,最终将
MPII数据集由大约25 000幅多人图片组成,提供大约40 000个带注释的人体样本,其中约25 000用于训练,约3 000作为验证集进行评估,约11 000用于测试,每个人体样本由16个关键点表示。COCO 2017训练集有57 000幅图像包含150 000个人体实例,COCO 2017验证集包含5 000幅图像,test-dev集包含20 000张图像,关键点个数为17。
2.2 评价指标主要评价指标有mAP和PCKh。mAP(平均精度均值)是基于对象关键点相似度(OKS)的评价指标,例如AP50代表目标关键点相似度(OKS)为0.50,mAP表示OKS分别为0.50,0.55,...,0.95时对应的AP的平均值。PCKh是另一种评价指标,代表以真实头部边界框对角线长度为归一化参考的关键点正确估计的比例,如PCKh@0.5表示预测关键点与对应的真实关键点位置距离小于真实头部边界框对角线长度的50%则被认为是正确预测的。OKS的具体定义为
| ${{\rm{OKS}}_{{p}}} = \frac{{\displaystyle\sum\nolimits_{{i}} {\exp [{{{{ - }}{{{d}}_{{{pi}}}}^{{2}}} / ({{{2}}{{S\! _p}^{2}}{{{\sigma }}_{{i}}}^{{2}}}})]{{\delta }}({{{v}}_{{{pi}}}}{{ = }}1)} }}{{\displaystyle\sum\nolimits_{{i}} {{{\delta }}({{{v}}_{{{pi}}}} = 1)} }}$ | (7) |
式中:
首先在MPII数据集上对单人姿态估计网络进行训练。MPII多人图片中每个人体实例都有一个中心点标签和一个尺度因子,根据这两个数据将人体附近的区域进行裁剪并将其大小调整为256×192像素,在此基础上,本文使用了−30°~30°的随机旋转,0.7~1.30的随机尺度水平翻转进行数据扩增,将扩增后的图片块送入SPPE训练。本文程序使用PyTorch框架来实现,随机初始化模型参数,使用Adam算法,初始学习率设为10−4。对MPII训练集子集的25 000个人体实例进行100个epoch的训练,即在训练batch设为30的情况下训练60个epoch,没有给学习率设置权重衰减,之后手动加载训练好的模型,更改学习率为10−5,又训练40个epoch。在2块NVIDIA GTX1080Ti显卡上共训练了4天。在包含3 000个人体实例的验证集上进行评估,确保单人姿态估计网络性能有提升后再进行下一步训练。
将预训练好的单人姿态估计网络用COCO数据集继续进行多人姿态估计训练。由于COCO 2017训练集的图片自带人体边界框的标签数据,因此可直接按人体边界框进行裁剪,后续操作和在MPII上训练时一致。不过本文是将训练集和验证集放在一起进行训练的。最后将YOLOv3与SPPE相结合,在COCO 2017 test-dev集和MPII测试集分别进行测试。
2.4 结果分析 2.4.1 改进措施的有效性分析在MPII验证集上对改进的模块进行消融实验,直接使用Simple Baseline基准模型进行测试时,模型参数量约为3.4×107,对检测速度影响很大,而且平均PCKh@0.5只有87.8%。本文先对残差块进行改进,缩减残差块的输入输出通道数、引入深度可分离卷积并将特征图分组处理后,参数量大幅度下降,约为8.4×106,而同时PCKh@0.5得分却有0.8%的提升,说明改进后的残差块特征提取能力确实得到提升。随着多尺度监督模块和多尺度回归模块以及β-Soft-Argmax的引进与改良,总体参数量仅有约2×105的微小提升,却分别带来0.6%、0.3%和0.2%的性能提升,最终平均PCKh@0.5达到了89.7%,性价比很高。具体实验过程见表1,√代表使用或者引进某模块,×代表未使用。可以清晰地看出各改进措施带来的变化,在参数量大幅降低的同时,也意味着检测速度的提升,与此同时模型检测精度也不断提升,充分证明了本文算法的有效性。
|
|
表 1 MPII验证集上PCKh@0.5性能对比 Table 1 Performance comparison of PCKh@0.5 on the MPII validation dataset |
表2是本文提出的算法与一些流行算法在MPII测试集上的性能对比。可以清楚地看到,本文提出的算法是非常高效的,PCKh@0.5得分达到了92.1%,虽然和最先进的算法相比较还有一定差距,但在个别关键点例如腕关节和踝关节处,本文提出的算法识别精度超过了现有最优秀的算法,具体比较见图4。图5是本文算法在MPII数据集上对单人进行姿态估计的推理结果,可见检测的精度相当高。图6是本文算法在MPII数据集上对多人进行姿态估计的推理结果,由于采用YOLOv3作为人体检测器,因此对于较小的人体实例也有很好的检测效果。
|
|
表 2 MPII测试集上PCKh@0.5性能对比 Table 2 Performance comparison of PCKh@0.5 on the MPII testing dataset |
|
图 4 MPII测试集上腕关节、踝关节处PCKh比较 Figure 4 Comparison of PCKh at wrist and ankle on the MPII testing dataset |
|
图 5 MPII数据集上单人推理结果 Figure 5 Inference results of a single person on the MPII dataset |
图7所示为本文算法在COCO数据集上的一些单人推理结果。对于常见的身体姿态,检测结果优异。表3是本文提出的方法与一些流行方法在COCO数据集上的性能对比。需要注意的是,在以ResNet为主干网络的各类算法中,本文算法采用较小的输入就能获得相当高的mAP得分,mAP达到了72.4。尽管本文算法检测精度性能不是最先进的,但模型的参数量较小,因此推理速度优势明显。图8所示为本文算法在COCO数据集上的一些多人骨架推理结果,可以看出在人群密集情况下,对于部分遮挡的人体,本文算法依旧可以较准确地预测出人体关键点,但若人体肢体出现严重的缺失或者是遮挡时依旧会出现混乱的预测。这是由于经YOLOv3检测并裁剪的人体边界框内存在部分不可见的人体肢体,因此SPPE检测关键点失败,这是可以理解的。
|
|
表 3 COCO 2017 test-dev集上AP性能对比 Table 3 Comparison of AP performance on COCO 2017 test-dev dataset |
|
图 6 MPII数据集上多人推理结果 Figure 6 Multi-person pose inference results on the MPII dataset |
|
图 7 COCO数据集上单人推理结果 Figure 7 Inference results of a single person on the COCO dataset |
|
图 8 COCO数据集上多人推理结果 Figure 8 Multi-person pose inference results on the COCO dataset |
本文遵循自顶而下的方案,提出了一种用于图片输入的多人姿态估计算法,采用YOLOv3作为人体检测器;基于深度残差网络(ResNet),通过改进基础残差块大幅度降低了参数量并提高了特征提取能力,另外通过多尺度监督模块和多尺度回归模块进一步融合了不同尺度热力图之间的信息,有效加强了中间过程的监督;改良过的坐标提取方式使得模型的梯度流可以从坐标点流动到高斯热力图上,使得模型端到端可训练,缩短了模型推理时间,同时提升了人体关键点预测的精度。
| [1] | TOSHEV A, SZEGEDY C. DeepPose: human pose estimation via deep neural networks[C]//Proceedings of 2014 IEEE Conference on Computer Vision and Pattern Recognition. Columbus: IEEE, 2014: 1653 − 1660. |
| [2] | NEWELL A, YANG K U, DENG J. Stacked hourglass networks for human pose estimation[C]//Proceedings of the 14th European Conference on Computer Vision. Amsterdam: Springer, 2016: 483 − 499. |
| [3] | WEI S E, RAMAKRISHNA V, KANADE T, et al. Convolutional pose machines[C]//Proceedings of 2016 IEEE Conference on Computer Vision and Pattern Recognition. Las Vegas: IEEE, 2016: 4724 − 4732. |
| [4] | CAO Z, SIMON T, WEI S E, et al. Realtime multi-person 2D pose estimation using part affinity fields[C]//Proceedings of 2017 IEEE Conference on Computer Vision and Pattern Recognition. Honolulu: IEEE, 2017: 7291 − 7299. |
| [5] | KOCABAS M, KARAGOZ S, AKBAS E. MultiPoseNet: fast multi-person pose estimation using pose residual network[C]//Proceedings of the 15th European Conference on Computer Vision. Munich: Springer, 2018: 417 − 433. |
| [6] | SUN K, XIAO B, LIU D, et al. Deep high-resolution representation learning for human pose estimation[C]//Proceedings of 2019 IEEE/CVF Conference on Computer Vision and Pattern Recognition. Long Beach: IEEE, 2019: 5693 − 5703. |
| [7] | ZHANG Z, TANG J, WU G S. Simple and lightweight human pose estimation[EB/OL]. arXiv:1911.10346v2, 2019. |
| [8] | ZHANG F, ZHU X T, YE M. Fast human pose estimation[C]//Proceedings of 2019 IEEE/CVF Conference on Computer Vision and Pattern Recognition. Long Beach: IEEE, 2019: 3517 − 3526. |
| [9] | XIAO B, WU H P, WEI Y C. Simple baselines for human pose estimation and tracking[C]//Proceedings of the 15th European Conference on Computer Vision. Munich: Springer, 2018: 466 − 481. |
| [10] | REDMON J, FARHADI A. YoLOv3: an incremental improvement[EB/OL]. arXiv:1804.02767v1, 2018. |
| [11] | LUVIZON D C, TABIA H, PICARD D. Human pose regression by combining indirect part detection and contextual information[J]. Computers & Graphics, 2019, 85: 15–22. |
| [12] | PISHCHULIN L, INSAFUTDINOV E, TANG S Y, et al. DeepCut: joint subset partition and labeling for multi person pose estimation[C]//Proceedings of 2016 IEEE Conference on Computer Vision and Pattern Recognition. Las Vegas: IEEE, 2016: 4929 − 4937. |
| [13] | LIFSHITZ I, FETAYA E, ULLMAN S. Human pose estimation using deep consensus voting[C]//Proceedings of the 14th European Conference on Computer Vision. Amsterdam: Springer, 2016: 246 − 260. |
| [14] | YANG W, LI S, OUYANG W L, et al. Learning feature pyramids for human pose estimation[C]//Proceedings of 2017 IEEE International Conference on Computer Vision. Venice: IEEE, 2017: 1281 − 1290. |
| [15] | NIE X C, FENG J S, ZUO Y M, et al. Human pose estimation with parsing induced learner[C]//Proceedings of 2018 IEEE/CVF Conference on Computer Vision and Pattern Recognition. Salt Lake City: IEEE, 2018: 2100 − 2108. |
| [16] | HE K M, GKIOXARI G, DOLLÁR P, et al. Mask R-CNN[C]//Proceedings of 2017 IEEE International Conference on Computer Vision. Venice: IEEE, 2017: 2980 − 2988. |
| [17] | NEWELL A, HUANG Z A, DENG J. Associative embedding: end-to-end learning for joint detection and grouping[C]//Proceedings of the 31st International Conference on Neural Information Processing Systems. Long Beach: ACM, 2017: 2277 − 2287. |
| [18] | NIE X C, FENG J S, ZHANG J F, et al. Single-stage multi-person pose machines[C]//Proceedings of 2019 IEEE/CVF International Conference on Computer Vision. Seoul: IEEE, 2019: 6951 − 6960. |
| [19] | CHEN Y L, WANG Z C, PENG Y X, et al. Cascaded pyramid network for multi-person pose estimation[C]//Proceedings of 2018 IEEE/CVF Conference on Computer Vision and Pattern Recognition. Salt Lake City: IEEE, 2018: 7103 − 7112. |
| [20] | FANG H S, XIE S Q, TAI Y W, et al. RMPE: regional multi-person pose estimation[C]//Proceedings of 2017 IEEE International Conference on Computer Vision. Venice: IEEE, 2017: 2353 − 2362. |
2021, Vol. 43
Issue (2): 39-47

