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

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

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

Introduction

人体姿态估计方法目前使用的都是detection based method,pipline如下图所示。
在这里插入图片描述
这种方法首先生成一个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”,如下公式:
在这里插入图片描述
离散形式,如果是2D则没有D维度
在这里插入图片描述
在这里插入图片描述
相当于对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维度同理可得。
在这里插入图片描述
在这里插入图片描述

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),一般用PCK@0.5,PCK@0.1以及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。定量结果:
在这里插入图片描述
定性效果:
在这里插入图片描述
不同input image以及不同output heat map resolution ablation study
在这里插入图片描述
ResNet depth以及MS的ablation study
在这里插入图片描述
在MPII上与其他方法的对比,heat map track没有取得sota
在这里插入图片描述
在COCO数据集上取得sota
在这里插入图片描述
Human3.6M数据集上,integral version仍旧有效,strategy1只用Human3.6M做训练,strategy2额外用MDII
在这里插入图片描述
下表是与HourGlass相关的对比,integral regression仍旧有效
在这里插入图片描述
下表是在Human3.6M数据集上做不同input image以及不同output heat map resolution ablation study
在这里插入图片描述
下表说明integral regression在不同protocol不同training strategy下取得sota
在这里插入图片描述

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。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 好的,这里是 20 个深度学习模型用于姿态估计的推荐: 1. 2D/3D Convolutional Neural Networks 2. Recurrent Neural Networks 3. Self-supervised Learning 4. Generative Adversarial Networks 5. Attention-based Networks 6. Graph Neural Networks 7. Multi-view Networks 8. Convolutional Pose Machines 9. End-to-end Learning 10. Hybrid Networks 11. Part-based Networks 12. Deformable Part Models 13. Dense Regression Networks 14. Spatial Transformer Networks 15. Adversarial Training 16. Deep Reinforcement Learning 17. Generative Models 18. Transfer Learning 19. Domain Adaptation 20. Few-shot Learning ### 回答2: 姿态估计是计算机视觉领域中的重要任务,它涉及到对人体或者物体在图像或者视频中的关键点进行定位和跟踪。下面是其中一些比较常用的姿态估计深度学习模型: 1. Hourglass:采用自顶向下的多尺度处理方式,通过逐步下采样和上采样来逼近姿态关键点。 2. OpenPose:结合了卷积神经网络和图像处理技术,能够同时估计多个人体关键点。 3. AlphaPose:使用融合的深度回归网络和判别式模型,能够准确预测人体关键点。 4. CPN(Convolutional Pose Machines):通过堆叠多个卷积网络来逐步提炼姿态特征,从而实现关键点的准确定位。 5. Squeeze-and-Excitation Network:采用通道注意力机制,能够自适应地提取姿态特征。 6. HRNet(High-Resolution Network):通过同时利用高分辨率和多尺度特征进行姿态估计,能够提升准确性。 7. PoseNet:借鉴了图像特征和姿态信息之间的关系建立一个深度神经网络模型。 8. SPPE(Simple Pose Part Estimation):通过训练两个子网络,一个进行关键点热图预测,一个用于姿态矩阵估计。 9. ResNet:利用残差连接来构建深度卷积神经网络,适用于姿态估计任务。 10. Stacked Hourglass Attention Network:利用注意力机制来指导姿态关键点的预测。 11. Integral Human Pose Regression:通过估计关键点的密集度矩阵来提高姿态估计的精度。 12. Natural Language Pose Estimation:结合自然语言处理技术,实现对图像或视频中的姿态进行描述和预测。 13. LSTM Pose Machines:利用长短期记忆网络,实现对时间序列中姿态的预测。 14. CPM+OHPM(Orphan Hourglass Pose Machine):结合主干卷积网络和分支网络,能够同时估计多个关键点。 15. DensePose:将姿态估计任务转化为像素到三维点的映射问题,实现密集而准确的姿态估计。 16. PAF(Part Association Fields):通过学习连接人体关键点的概率热图,实现对复杂姿态的估计。 17. Cascaded Pyramid Network:通过级联的金字塔结构,逐步提取姿态特征并进行联合估计。 18. Realtime Multi-Person 2D Pose Estimation:实现实时多人姿态估计,通过基于相机中心和深度优化的关键点匹配算法提高准确性。 19. DeepPose:采用深层卷积神经网络,通过端到端的训练实现姿态估计。 20. Deformable Part Models:结合深度学习和非刚性图像变换技术,实现对非刚性物体(如人体)姿态的估计。 ### 回答3: 推荐以下20个姿态估计深度学习模型: 1. OpenPose:使用卷积神经网络进行多人姿态估计。 2. AlphaPose:基于实时多人姿态估计的开源系统。 3. PoseNet:使用卷积神经网络进行单人姿态估计。 4. HRNet:使用高分辨率表示网络进行姿态估计,具有较高的准确度。 5. SimplePose:使用特征金字塔网络进行单人姿态估计。 6. CPN:使用循环多尺度特征金字塔网络进行多人姿态估计。 7. DensePose:基于Mask R-CNN的姿态估计框架,能够推断出人体的密集表面网格。 8. SPPE:基于Spatial Pyramid and Graph Parsing Engine的姿态估计模型,能够进行多人姿态估计。 9. Stacked Hourglass Network:使用堆叠的Hourglass网络进行姿态估计,具有较高的准确度。 10. Integral Human Pose Regression:使用全卷积网络进行单人姿态估计。 11. HMR:使用循环神经网络进行人体姿态和形状估计。 12. VisualSFM:使用结构光扫描和特征提取进行姿态估计。 13. PoseTrack:用于多人姿态估计和追踪的数据集和基准。 14. RMPE:基于循环网络的多人姿态估计模型,具有较高的鲁棒性。 15. Cascaded Pyramid Network:使用金字塔形状网络进行多人姿态估计的模型。 16. MultiPoseNet:基于多任务学习的多人姿态估计模型。 17. CPN-RNN:在CPN的基础上引入循环神经网络,提高姿态估计的准确度。 18. RMPE+SDN:RMPE在姿态估计任务上引入了空间注意力模块。 19. Convolutional Pose Machines:使用卷积神经网络进行姿态估计的模型。 20. Mask R-CNN:用于实例分割和人体姿态估计的深度学习模型。 以上是一些常见的姿态估计深度学习模型,可以根据具体需求选择适合的模型进行姿态估计
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值