人体姿态估计文章阅读(一)《Integral Human Pose Regression》

人体姿态估计文章阅读(一)

文章《Integral Human Pose Regression》
code: https://github.com/JimmySuen/integral-human-pose

Introduction

人体姿态估计方法目前使用的都是detection based method,pipline如下图所示。
人体姿态估计文章阅读(一)《Integral Human Pose Regression》_第1张图片
这种方法首先生成一个heat map,其物理意义可以理解为是image中人体关节的概率。一般来说,需要预测几个关节点,就会在backbone的最后生成几个channel的feature (heat map),然后取每一个channel的的max作为关节点的location,如下公式:
在这里插入图片描述
然后和ground truth做回归。这样的做法在本质上有两个缺点:1、取max的op是不可微的,所以无法形成一个end-to-end的训练。2、经过backbone去提取feature通常会因为backbone中的一些downsampling的op(ex. max pooling)使得最后输出的feature的resolution低于input image,从而可能使得在做max操作时会引入一些不可避免的量化误差(这里笔者的理解是做max操作得到的坐标是low resolution的output feature的grid,相比于input image grid更粗糙且为离散值)。而使用high resolution的heat map会增加计算和显存的负担,这个问题在3D情况下尤甚。
相比于detection based method,regression based method可以避免上述问题,但是却不如detection based method有效。一个可能的解释是,heat map learning是一个dense pixel的supervised,学习起来比regression based method要相对容易。

Method

taking-expectation

本文提出的方法是从之前取max op的“taking-maximum”变为“taking-expectation”,如下公式:
人体姿态估计文章阅读(一)《Integral Human Pose Regression》_第2张图片
离散形式,如果是2D则没有D维度
人体姿态估计文章阅读(一)《Integral Human Pose Regression》_第3张图片
人体姿态估计文章阅读(一)《Integral Human Pose Regression》_第4张图片
相当于对heat map的每一个location做一个归一化后的加权平均,最后的平均值作为该feature或者叫heat map的关节点所在坐标。这样带来的好处是:1、关节的location变为一个连续的输出而不是一个grid点的离散的输出,这更符合regression的本质。2、“taking-expectation”是可微op,从而可以实现一个end-to-end的学习。而之前的做法只能对取max op之前的heat map做dense supervised,max操作相当于一个后处理。

3D pose estimation

3D的姿态估计的数据通常较少,本篇文章采用了2D/3D联合训练的方法,来借助2D的数据(通常较多)。目前笔者还未理解充分,不明确具体实现,可能要参考代码理解。文中提到2D/3D mixed的关键是将3D数据的xy part与z part分离,笔者未理解这么做的必要性,笔者的理解是3D数据可以
用3D的joint坐标以及3D(加上heat map的维度是4维tensor,不考虑Batch维度)heat map来supervised,2D可以用2D的joint坐标以及2D(3维tensor,不考虑Batch维度)heat map来supervised,未理解split xy和z的必要性。
文中还提到通过完全split heat map的x,y,z,如下公式:来分别出joint的x,y,z坐标使得underlying 3D heat map能都被丰富的2D data supervised。笔者理解下述公式,但未理解这样做的必要性。下述公式首先将y,z维度的归一化后的heat map value加和,再对x坐标加权出一个关节点所在x的坐标,y,z维度同理可得。
人体姿态估计文章阅读(一)《Integral Human Pose Regression》_第5张图片
人体姿态估计文章阅读(一)《Integral Human Pose Regression》_第6张图片

Loss

heat map loss

H1:ground truth的joint卷上一个高斯blob,来形成ground truth的heat map,这个高斯文中提到所用方差是 σ = 1 \sigma=1 σ=1,然后与train所出的heat map做L2,这种heat map loss记为H1。
H2:Mask RCNN中将heat map过softmax后与事先标好的label做交叉熵,label是只有一个点被标为joint的一个one-hot
H3:介于H1和H2之间,H2只是对joint所在点的位置标为1,其他地方为0;H3是对joint所在点15个像素内的都标为1,其它标为0,也是一个二分类交叉熵的loss
I1:是H1的integral version,即H1 loss + taking-expectation后的location与ground truth做回归的combination
I2:类似H2
I3:类似H3
I*:不用heat map loss,只用回归loss

Datasets

Human3.6M:3D human pose benchmark,controlled environment,3.6M video frames,5 males + 6 females, 4 camera viewpoints,15 activities;Evaluation metric: mean per joint position error (MPJPE),PA MPJPE(做完仿射预对齐后的)。
MPII:single person 2D pose estimation, from YouTube,daily human activities with complex poses and image appearances,25k images,29k annotated poses for training and 7k for testing;Evaluation metric: Percentage of Correct Keypoints (PCK,predicted key point和ground truth point的distance小于head segment length的分数,被认为是correct),一般用[email protected][email protected]以及AUC(0-0.5)
COCO:challenging, uncontrolled conditions,200k images,250k person instances,150k images是公开的用于training和validation
Evaluation metric:object keypoint similarity (OKS, 具体未了解),AP over 10 OKS thresholds。OKS与检测任务中的IoU相似。

Experiments setting

本文做了大量的ablation study:2D/3D,ResNet/HourGlass(笔者对HourGlass不了解),w/o multi-stage,ResNet depth,image resolution。
实现细节:Mxnet,Adam,HourGlass初始化的时候用的1e-3 normal distribution,除去image resolution的ablation study输入图像为256,aug(2% translation, 25% scale, 30 degree rotation),lr=1e-3 to 1e-5(具体steps or epoch未知),BN=True,batch=128。I1/I2/I3/MS(Multi-stage)-I1/MS-I2/MS-I3的pre-trained只用heat map loss,然后再用再只用回归loss(文中提到这比一起用两个loss从头训结果要好一点)。

Results

R1是不用heat map的一个baseline用来和不用heat map的integral version I*做对比,表一说明I > I*, I* > H and I* > R。定量结果:
人体姿态估计文章阅读(一)《Integral Human Pose Regression》_第7张图片
定性效果:
人体姿态估计文章阅读(一)《Integral Human Pose Regression》_第8张图片
不同input image以及不同output heat map resolution ablation study
人体姿态估计文章阅读(一)《Integral Human Pose Regression》_第9张图片
ResNet depth以及MS的ablation study
人体姿态估计文章阅读(一)《Integral Human Pose Regression》_第10张图片
在MPII上与其他方法的对比,heat map track没有取得sota
人体姿态估计文章阅读(一)《Integral Human Pose Regression》_第11张图片
在COCO数据集上取得sota
人体姿态估计文章阅读(一)《Integral Human Pose Regression》_第12张图片
Human3.6M数据集上,integral version仍旧有效,strategy1只用Human3.6M做训练,strategy2额外用MDII
人体姿态估计文章阅读(一)《Integral Human Pose Regression》_第13张图片
下表是与HourGlass相关的对比,integral regression仍旧有效
人体姿态估计文章阅读(一)《Integral Human Pose Regression》_第14张图片
下表是在Human3.6M数据集上做不同input image以及不同output heat map resolution ablation study
人体姿态估计文章阅读(一)《Integral Human Pose Regression》_第15张图片
下表说明integral regression在不同protocol不同training strategy下取得sota
人体姿态估计文章阅读(一)《Integral Human Pose Regression》_第16张图片

Question

笔者在这里列出一些看完文章后的疑问,可能后面会通过看code得到解答:
1、2D/3D mixed的实现及其必要性
A:有些3D image深度方向的坐标可能比较难以获取,所以需要对深度方向z进行sum,从而将3D的heat map变为2D,然后用2D的坐标去做监督。
2、HourGlass了解
A:参考文章《Stacked hourglass networks for human pose estimation》
3、heat map loss中ground truth joint点和backbone output的heat map维度不一致,H1中做L2 loss需要对ground truth joint点卷出来的ground truth heat map降采?
A:不是的,经过backbone后连接的head network会做一个upsampling到一个要求的resolution。

你可能感兴趣的:(Pose,estimation)