基于深度学习的3D pose estimation总结(包括几篇2D pose estimation)

2023-05-16

一、任务描述

给定一幅图或者是一段视频,人体姿态估计就是恢复出其中的人体关节点位置的过程。

二、挑战和难点

1.人体肢体运动较为灵活;

2. 视角的变化;

3.附着物的变化(比如遮挡,衣物等);

4.3D pose  estimation缺乏数据集;

三、评价指标

主要分为以下两种:

1. PCK 

PCK的评价指标多出现在单人的姿态估计上;

定义: Percentage of Correct Keypoints (PCK),reports the percentage of keypoint detection falling within a normalized distance of the ground truth.

2. mAP

主要用于多人姿态估计评价;

在物体检测中,我们是用IoU(intersection over union)来评价预测与真实标注之间的差异;在人体骨骼关键点的检测任务中,使用OKS(object keypoint similarity)代替IoU,对预测的人体骨骼关键点位置与真实标注之间的相似性进行评分;

3.OKS

四、数据集

对于以下数据集,1-4应用较多,其余应用较少:

1. Human3.6M (2D+3D)

Human3.6M Dataset

2. MPI-INF-3DHP (3D)

MPII Human Pose Database

3. SURREAL (3D)

Learning from Synthetic Humans

4. Unite the People dataset(UP)   (2D + 3D)

Unite the People -- Closing the Loop Between 3D and 2D Human Representations

5. LSP (2D)

单人数据集Leeds Sports Pose Dataset

6.FILC (2D)

单人数据集FLIC dataset

7.MPII (2D)

单人/多人数据集 MPII Human Pose Database

8. HumanEva (3D)

HumanEva Dataset

五、应用

基于姿态估计的可能的应用方向如下:

基础性研究: 行为识别,动作分类,异常行为检测,人物追踪,步态识别;

产业应用:智能视频监控,病人监护系统,虚拟现实,人机交互,游戏,动画,衣物识别,运动员辅助训练,自动驾驶。

六、已有工作

1.Convolutional Pose Machines, CVPR2016

 文中将convolutional nnetwork 应用到pose machine中,用于学习图像特征以及图像的空间模型;在articulated pose estimation任务的结构化预测方面,隐式的建立不同结构之间的空间依赖关系模型;如文中多述,网络分为多个阶段,在每个阶段网络中加入intermediate supervision,以用来缓解端到端网络使用BP训练中出现的梯度消失的问题(有待验证)。

利用卷积网络先从局部特征入手,确定了一个或者是多个关节点,这样就可以借助已知的关节点来对其他身体部位进行定位。

数据集: MPII,LSP, and FLIC datasets

文中不足: 对于密集的多人估计效果是很差的;

2. Stacked Hourglass Networks for Human Pose Estimation,2016

一种沙漏型的网络结构,首先进行卷积处理并进行下采样处理,获得一些分辨率较低的特征,来降低计算的复杂度;紧接着又采用上采样操作来提升图像特征的分辨率,同时也使得网络更有能力预测物体的精确位置;而且这种沙漏结构具有可堆叠性。在此工作中,也在不同阶段采用intermediate supervision方法。

此方法相比于CMPs,在精度和速度上都略胜一筹。

数据集:FLIC and MPII

此方法也对密集多人姿态估计进行了测试,表现效果相比CMPs有很大提升。

3. 3D Human Pose Estimation in the Wild by Adversarial Learning,CVPR2018

本文工作采用对抗学习框架,从有完全注释的数据集中学习3D pose,然后应用到只有2D 标注数据的野外图像中;设计可以了一个multi-source 的判别器,来识别预测到的3D pose 是否为GT.

4. End-to-end Recovery of Human Shape and Pose;2018

本文工作使用端到端的框架,直接从单张彩色图片中恢复出3D 人体网格(包括人体形状和关节角度),不需要依赖中间任务(如2D估计)。

文中使用两个数据集,一个是带有2D标注信息的实况数据集,另一个是人体3D模型数据集。获得一幅图时,先获取其3D mseh参数,然后推断出其3D joint,再映射到2D,与原图的2D joint匹配,即一个2D-3D-2D过程,把无3D标注的2D当成训练集使用。 在参数预测上则采用了iterative regression with feedback的方法。另外,为了使生成的模型符合真实的人体结构,使用GAN的网络结构,把生成模型的参数输入到一个Discriminator中,Discriminator在训练中学习每个joint之间的角度限制,由Discriminator来判断模型是否真实。

优点:直接从图像中推断其三维网格参数,训练省事不易丢失图片信息;而且不需要有paired 2D-3D数据集,为从大量2D数据学习3D提供可能性。

5. Neural Body Fitting: Unifying Deep Learning and Model Based Human Pose and Shape Estimation;2018

文章中使用基于2D的区域表示,将人体分为12个部分,作为映射到3D的一个中间步骤;

文中提出一种新的方法-Neural Body Fitting(NBF),结合CNN使用这一种statistical body model,利用bottom-up semantic body part segmentation and top-down body model constraints,采用端到端的训练方式。 

 NBF用一个standard semantic CNN 将人体分为12个部位,然后encoding CNN 直接从RGB image或者是semantic segmentation of image中预测模型参数,再通过SMPL产生3D mesh;最后再将3D mesh的关节点重投影到2D,reprojection loss采用BP方法,来训练整个网络。

除此之外,文章中对很多工作做了分析,比如什么样的输入更好,loss function怎么设置,3D annotation数据量对结果影响,以及分割效果对于效果的影响等等。

文章中仅仅使用百分之二十的3D标注训练集就可以取得和使得全部3D标注训练集相似的结果。

未来工作:密集的多人姿态估计。

6. Learning to Estimate 3D Human Pose and Shape from a Single Color Image,2018

文中工作把SMPL模型嵌入端到端的框架,从单个彩色图像中估计人体的姿势和形状;提出一种基于卷积网络的高效的直接预测方法,其优于迭代优化的方法。

首先训练一个卷及网络human2D,其产生两个输出,轮廓(包括人体和背景两个)和热图(输出关键点); 接下来,训练两个网络,一个是poseprior,使用2D关键点作为输入,检测置信度并估计姿态系数theta,另一个是shapeprior,使用轮廓作为输入,并估计其形状系数beta,最后进行参数size转换,对应于SMPL模型的系数theta和beta。最后将生成的3D人体模型实例投影到图像平面,并计算其轮廓与2D关键点位置的已生成训练输入输出对。

网络优点:参数少,有利于直接进行预测;训练生成3D网格,并对其表面光滑度进行优化。

7. RepNet: Weakly Supervised Training of an Adversarial Reprojection Network for 3D Human Pose Estimation ; CVPR2019

本文是一种从2D 学习3D的方法;

利用神经网络类直接估计3D pose的工作大多都忽略了  最终的估计应该满足重投影误差,而且目前神经网络的方法很容易导致过拟合;本文工作忽略2D和3D之间的一致性而解决过拟合问题,并且避免网络对训练数据产生一定的记忆,允许弱监督训练。

文中运用对抗网络的思想,网络主要分为两个部分,一个部分是reprojection network,其使用对抗训练的方法学习2D pose 到3D pose分布的map;另一部分网络estimate camera,这能够使得预测得到的3D pose重投影回2D ,从而计算reprojection loss function。

实验结果优于其他的弱监督方法,同时解决一定数据量的过拟合问题;优于部分监督学习模型。

文中指出: 在Human3.6M数据集上训练的网络用于预测MPI-INF-3DHP(unseen data)数据,相比其他方法有很大提升。

8. DenseBody: Directly Regressing Dense 3D Human Pose and Shape From a

Single Color Image;2019

提出一种端到端的方法,直接从单个彩色图片中得到3D 人体网格;该研究训练一个编码器-解码器网格,无需使用任何中间任务,如2D 估计等。

之前的研究通常使用SMPL 这样的可变型模型来表示3D 人体结构,但是本文利用UV位置映射图来表示3D人体几何结构(UV是一个2D表示图,如上图所示),用UV映射图来储存整个人体表面的三维位置信息。 

七、总结

1. 问题难点

(1)数据: 缺少足够量的带有ground truth 3D annotation的in-the-wild图像,目前已有的带有标注的图像大多数是在特定实验环境中获取的,并不足以反映真实环境下可能出现的情况;

(2)2D与3D之间映射存在一定的模糊性,因为缺少一些深度信息(或者其他的辅助性信息),许多的三维模型可以映射为同一个2D模型,但是反之,从二维映射到三维时,未必能真正反映人体结构。

2.基于深度学习的方法

关于3D pose estimation的方法主要可以分为两类,简言之,就是一阶段法和二阶段法,以下会讲解两种方法的大概流程:

2.1. 一阶段法

直接从图片中获取3D 关节点位置,然后reproject 到2D,与有ground truth 2D annotation数据集对比,进而优化网络。

优点:不易丢失图片信息。

2.2. 二阶段法

(1)用2D pose检测,预测2D关节点位置;

(2)通过回归分析或者model fitting的方式,从2D中预测3D关节点位置;这种方法有一个共性,就是会利用一个预测3D 模型的框架,主要是SMPL;

注:对于这样的一种方法,为了约束2D-to-3D固有的这种模糊性,会利用一些先验知识:假定四肢长度或者是比例;

缺点:但是这样的方法或过度依赖2D关节点的位置信息,有可能会丢掉图片中的其他信息。

八、参考文献

1.Convolutional Pose Machines;

2. Stacked Hourglass Networks for Human Pose Estimation;

3. 3D Human Pose Estimation in the Wild by Adversarial Learning;

4. End-to-end Recovery of Human Shape and Pose;

5. Neural Body Fitting: Unifying Deep Learning and Model Based Human Pose and Shape Estimation;

6. Learning to Estimate 3D Human Pose and Shape from a Single Color Image;

7. RepNet: Weakly Supervised Training of an Adversarial Reprojection Network for 3D Human Pose Estimation ;

8. DenseBody: Directly Regressing Dense 3D Human Pose and Shape From a Single Color Image;

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

基于深度学习的3D pose estimation总结(包括几篇2D pose estimation) 的相关文章

  • Python异常捕捉try except else finally有return时执行顺序探究

    在没有return的情况下 try 尝试执行的代码 except 错误类型1 xff1a 针对错误类型1 xff0c 对应的代码处理 except 错误类型2 针对错误类型2 xff0c 对应的代码处理 except 错误类型3 xff0c
  • Linux curl命令最全详解

    目录 一 最常用的curl命令 1 发送GET请求 2 发送POST请求 3 发送json格式请求 xff1a 二 curl命令语法与curl命令参数详解 1 curl命令语法 2 curl命令参数详解 三 Linux curl命令退出码
  • ubuntu16.04安装NS2出现问题及解决办法

    NS2安装与使用 下载NS2软件包到工作目录 地址http nchc dl sourceforge net sourceforge nsnam ns allinone 2 33 tar gz 解压tar zxf ns allinone 2
  • 阿里评测—空闲时间/公益机会/公益积分

    公益机会需要从开始到结束全程参与才能获得积分 span class token keyword import span java span class token punctuation span io span class token p
  • 求二叉树的结点个数

    求二叉树的结点个数 xff0c 如果根节点为空 xff0c 则返回 0 include lt iostream gt include lt malloc h gt using namespace std static int D 61 0
  • 记录android studio 遇到的错误和解决办法

    1 关于android studio 出现Error Execution failed for task app preDebugAndroidTestBuild 39 的解决办法 https blog csdn net fighting
  • 与WebRTC实时通信

    与WebRTC实时通信 一 介绍 WebRTC是一个开源项目 xff0c 可以在Web和本机应用程序中实现音频 xff0c 视频和数据的实时通信 WebRTC有几个JavaScript API xff1a getUserMedia xff1
  • webRTC Android与Web 视频通信

    对于视频聊天 xff0c 首先需要访问用户的音频和视频 在web上 xff0c 有getUserMedia API 调用此API xff0c 它会为您提供MediaStream对象 xff0c 用于来自摄像头和麦克风的音频和视频 下面是代码
  • Android studio安装的痛苦历程

    安装需要IDE和SDK xff0c 安装位置一致 xff0c 我是D Android AndroidStudio 目录下as和sdk 我在第一次装AndroidStudio 创建第一个项目时 在没有创建成功的时候就取消了 然后再次导入别人的
  • CentOS7 无法上网问题分析

    主机现象 xff0c IP及Mac地址都配置完后 xff0c 却ping不通baidu com xff0c 只能ping通局域网 xff0c 一直出现 xff1a ping unknown host baidu com 查看DNS服务器 网
  • 再见!Postman

    点击上方 码农突围 xff0c 马上关注 这里是码农充电第一站 xff0c 回复 666 xff0c 获取一份专属大礼包 真爱 xff0c 请设置 星标 或点个 在看 作者 xff1a 陈凯玲 原文链接 xff1a http www kai
  • 常用c库及其简单介绍

    C标准库 lt assert h gt 可用于验证程序做出的假设 xff0c 并在假设为假时输出诊断消息 lt ctype h gt 可用于测试和映射字符 如数字 xff0c 十六进制数字 xff0c 小写字母 xff0c 大写字母 xff
  • ROS 学习篇(六)发布imu和gps消息

    一 创建工作空间 mkdir p imu gps src span class hljs comment 创建工作空间 span catkin make span class hljs comment 编译 span span class
  • ubuntu下Terminator终端的使用及配置

    Terminator终端最大的优点 xff1a 可以在同一个窗口中启动多个终端 安装 xff1a sudo add span class hljs attribute apt span span class hljs attribute r
  • ROS学习篇(七)rostopic消息记录、回放、转.txt

    一 通过bag文件记录话题消息 当发布话题的节点运行后 xff0c 可以通过rostopic list 列出当前运行的话题 xff0c 然后记录 xff1a mkdir bagfile cd bagfile rosbag record a
  • ROS 学习篇(八)机器人的导航功能--navigation

    ROS 学习篇 xff08 八 xff09 机器人的导航功能 xff0d xff0d navigation 1 概述 ROS的二维导航功能包 xff0c 简单来说 xff0c 就是根据输入的里程计等传感器的信息流和机器人的全局位置 xff0
  • ROS学习篇--ROS学习积累

    只编译某个包 catkin make DCATKIN WHITELIST PACKAGES 61 34 package1 package2 34 恢复编译所有 catkin make DCATKIN WHITELIST PACKAGES 6
  • 一个服务端同学的Vue框架入门及实践

    做为服务端同学 xff0c 接触前端代码较少 xff0c 刚毕业的时候用过 jQuery 43 Bootstrap2 3 xff0c 当时的感觉就是 xff0c 容易上手 xff0c 学习门槛相对较低 xff0c 另外就是有一个非常成熟的
  • [linux] C语言Linux系统编程-TCP通信的11种状态

    三次握手 由client主动发出SYN请求 此时client处于SYN SENT状态 第一次握手 当server收到之后会由LISTEN转变为SYN REVD状态 并回复client client收到应答后处于ESTABLISHED状态 这
  • [Git]解决Please commit your changes or stash them before you merge.

    当本地分支和远程修改了同一个文件代码 xff0c pull远程分支的代码的时候会出现文件冲突 出现这个错误 Please commit your changes or stash them before you merge 可以先将当前的内

随机推荐