使用全局与局部规范化的人体姿态估计论文《Human Pose Estimation using Global and Local Normalization》笔记

使用全局与局部规范化的人体姿态估计论文《Human Pose Estimation using Global and Local Normalization》笔记

  • 前言
  • 一、论文综述(就是翻译了一下)
  • 二、论文主要内容
    • 1. 为何进行人体关节点的规范化?
    • 2. 怎样进行规范化?
      • 2.1 躯干规范化
      • 2.2 肢体规范化
    • 3. 空间配置细化
    • 3. 网络架构
  • 总结


前言

这几天做ST-GCN的时候,发现数据集中人体关键点坐标位置对模型训练效果有不好的影响(分散太广,让模型泛化能力变差),所以打算把世界坐标系下的关键点坐标改为相对坐标,进行一个简单的归一化。抱着这个想法,在网上搜了搜归一化相关的文章,找到这篇Human Pose Estimation using Global and Local Normalization,虽然这篇文章目的在于提高关键点检测的准确率,与我原本基于关键点信息进行行为识别的初衷不同,但其中的规范化思想比较有趣,所以简单学习了一下,做一点笔记。

一、论文综述(就是翻译了一下)

本文讨论了估计人体关节位置的问题,即关节姿态估计。最新的解决方案利用卷积神经网络实现了了两个关节姿态估计中的关键问题,即关节点检测和空间配置优化。本文的工作主要集中在空间配置优化方面,通过规范化来减少人体关节点的分布差异。通过观察,本文发现,人体关节点分布的的相对位置的多样性(例如,左边手腕几乎均匀分布在左肩的一个圆形区域内)使回旋的空间模型的学习困难。本文提出了一种两阶段的归一化方案,即人体归一化和肢体归一化,使相对关节位置的分布更加紧凑,从而使网络模型更容易学习,姿态估计更准确。此外,本文的实验结果表明,将多尺度监督和多尺度融合加入到关节点检测网络中是有益的。实验结果表明,我们的方法始终优于最先进的基准方法。

二、论文主要内容

1. 为何进行人体关节点的规范化?

对人体关节点进行规范化的目的是让关节点的相对位置的分布更加紧凑,更有利于网络训练。文中给出了这样的对比图
使用全局与局部规范化的人体姿态估计论文《Human Pose Estimation using Global and Local Normalization》笔记_第1张图片

(a)来自LSPET数据集的各种姿态的示例图像。(b)和(d)最初是头部和左手腕两个关节点的相对位置。(b)显示头部相对于身体中心的位置。(d)显示左手腕相对于左肩膀的位置。©和(e)分别是(b)和(d)对应的身体和肢体归一化后的相对位置。通过对比可以看出,©和(e)中相对位置的分布更加紧凑。这也更加有利于网络模型训练,提高模型质量。

2. 怎样进行规范化?

文章提出的方法为“两阶段规范化”,由躯干规范化与肢体规范化两部分组成,其中:

2.1 躯干规范化

躯干规范化:根据FCN初步检测到的关节点信息,将人体躯干旋转至直立状态,使关节间的相对位置紧凑分布。

如下图所示,(a)是原来的图像,(b)展示了欲旋转的角度θ,(c)为进行人体躯干旋转操作后的图像,可以看到,人体躯干部份已经达到直立状态。
使用全局与局部规范化的人体姿态估计论文《Human Pose Estimation using Global and Local Normalization》笔记_第2张图片
躯干规范化公式为
在这里插入图片描述
其中,
在这里插入图片描述
(p表示关节估计位置)
使用全局与局部规范化的人体姿态估计论文《Human Pose Estimation using Global and Local Normalization》笔记_第3张图片

2.2 肢体规范化

肢体规范化:旋转各肢体关节,使其相关位置更加紧凑。共有4各肢体规范化模块,对应人体的四肢。每个肢体有3个关节,通过旋转使根关节与中间关节的连线垂直向下(如肩部关节与肘关节)。

通过旋转根关节周围相应的三个score map来执行标准化,这样连接根关节和中间关节的线具有一致的方向

如2.1中的图所示,(d)是对其中一个肢体进行旋转归一化的结果,即将右臂调整至竖直状态。

3. 空间配置细化

在躯干规范化(全局规范化)与肢体规范化(局部规范化)的后面分别加上一个空间细化模块,用来微调关节点估计位置。论文中的模型结构如下图所示
使用全局与局部规范化的人体姿态估计论文《Human Pose Estimation using Global and Local Normalization》笔记_第4张图片
最前面的FCN就是使用全卷积网络来实现初步的关节点检测,然后通过全局细化模块进行处理(躯干规范化+空间细化),再通过局部细化模块处理(肢体规范化+空间细化),最后输出人体关节点检测结果。

全局细化没什么可说的,就是在躯干规范化模块后面加上4个卷积层,实现对关节点的微调。

对于局部细化,其内部分为4个分支,每个分支有一个局部肢体规范化模块和一个局部细化模块,并通过空间反变换的你归一化来旋转关节、身体以获得最终输出结果。

3. 网络架构

网络模型一共由三部分组成:关节检测网络、归一化网络、细化网络

其中关节检测网络如下图所示,论文中采用了多尺度融合的思想,把不同分辨率的特征图进行融合,以获得不同尺度的特征信息,提高检测效果。
使用全局与局部规范化的人体姿态估计论文《Human Pose Estimation using Global and Local Normalization》笔记_第5张图片
规范化网络如下图所示,首先根据输入的score map(从FCN传过来的)进行关节姿态的判断,并根据判断结果计算旋转矩阵的参数,最后将计算求得的旋转矩阵乘以输入的score maps,实现对score maps的旋转,即本论文所提出的规范化方法。
使用全局与局部规范化的人体姿态估计论文《Human Pose Estimation using Global and Local Normalization》笔记_第6张图片
细化网络由四个卷积层组成,其中,对应每一层卷积,第一层:卷积核的size为99(K+1),其中K为关节点个数,共128个输出通道;第二层:卷积核size为1515128,128输出通道;第三层:卷积核size为1515128,128输出通道;第四层:卷积核size为11128,J个输出通道,其中J代表输出关节点的个数。

总结

这篇论文最大的贡献就是提出了两阶段的规范化方法,即躯干规范化和肢体规范化,经过这两步操作后,关节点间的相对位置关系会变得更加紧凑,不再那么分散,所以更有利于网络训练,提高网络质量。

但是我觉得这篇论文在说明规范化过程的地方还不够具体,比如文中就给了这张图来说明变换关系
使用全局与局部规范化的人体姿态估计论文《Human Pose Estimation using Global and Local Normalization》笔记_第7张图片
虽然文章后面说了,这只是在原始图像上进行了展示,实际操作是在score maps上的,但我比较好奇他是怎么同时让躯干和肢体规范化的?这两个部分乍一看好像没办法同时让关节连线竖直向下啊。

后来我琢磨了一下,觉得论文中可能是先对最初的score maps 1进行躯干归一化,把人给摆正了,然后得到了新的score maps 2,进行一次微调;接下来根据score maps 2再进行4分支肢体归一化,分别把四个肢体给摆正,然后得到四种score maps 3,再分别对肢体进行微调,最后共同输出检测结果。

这个过程的可视化结果就如下图所示,最初未经规范化时,关节点相对位置分布为(a),可以看到很分散,然后经过躯干规范化得到(b),发现还是比较分散,所以再加上一个肢体规范化,就得到了分布密集的(c)实现了规范化的最终效果。
使用全局与局部规范化的人体姿态估计论文《Human Pose Estimation using Global and Local Normalization》笔记_第8张图片

你可能感兴趣的:(计算机视觉,人工智能,深度学习)