2018ECCV Can 3D Pose be Learned from2D Projections Alone?

摘要

在计算机视觉中,从单个图像的三维姿态估计是一个具有挑战性的任务。我们提出了一种弱监督的方法来估计3D姿态点,仅给出2D姿态地标。我们的方法不需要2D和3D点之间的对应关系来建立明确的3D先验。我们利用一个对抗性的框架,强加在3D结构上的先验,仅从他们的随机2D投影。给定一组2D姿态界标,生成器网络假设它们的深度以获得3D骨架。我们提出了一种新的随机投影层,它随机投影生成的3D骨架,并将产生的2D姿态发送到鉴别器。鉴别器通过区分所生成的姿态和来自2D姿态的真实的分布的姿态样本来改进。训练不需要发生器或鉴别器的2D输入之间的对应关系。我们将我们的方法应用于三维人体姿态估计的任务。Human3.6M数据集的结果表明,我们的方法优于许多以前的监督和弱监督方法。

引言

我们提出了一个弱监督学习算法来估计三维人体骨架从二维姿势地标。与以前的方法不同,我们不通过3D数据或利用显式的2D-3D对应来明确地学习先验。我们的系统可以生成3D骨架,只观察2D姿势。本文的贡献如下:

1.我们提出并证明,可以仅通过观察2D姿势来学习潜在的3D姿势分布,而不需要从3D数据进行任何回归。

2.我们提出了一个新的随机投影层,并利用它与对抗训练沿着从2D投影中强制执行3D结构的先验。

 我们方法背后的关键直觉:给定输入2D姿态,存在无限数量的3D配置,其投影匹配该视图中的2D界标的位置。然而,从另一个随机选择的视点来看,不可信的3D骨架不太可能看起来真实。相反,准确估计的3D姿态的随机2D投影更可能符合真实的2D姿态分布,而不管观看方向如何。我们利用这个属性来学习3D上的先验通过2D投影。为了使3D姿态估计准确,(a)3D姿态到原始相机上的投影应当接近检测到的2D界标,以及(b)3D姿态到随机相机上的投影应当产生适合真实的2D界标的分布的2D界标。

生成对抗网络(GAN)[12]提供了一个自然的框架来学习分布而无需显式监督。我们的方法通过2D姿势间接学习潜在分布(3D姿势先验)。给定2D姿态,生成器假设关节位置的相对深度以获得3D人体骨骼。生成的3D骨架的随机2D投影与实际2D姿态样本一起被馈送到鉴别器(参见图2)。馈送到发生器和鉴别器的2D姿态在训练期间不需要任何对应。鉴别器从2D投影中学习先验,并使生成器能够最终产生逼真的3D骨架。

图2 

其中生成器(用于深度预测)

2D姿态到3D骨架的弱监督提升

在本节中,我们将描述我们的弱监督学习方法,以将2D人体姿势点提升到3D骨架。对抗性网络是出了名的难以训练,我们讨论了导致稳定训练的设计选择。为了与生成对抗网络命名约定的一致性,我们将3D姿态估计网络称为生成器。为了简单起见,我们在相机坐标系中工作,其中具有单位焦距的相机以世界坐标系的原点(0,0,0)为中心。设xi =(xi,yi),i = 1。..N表示N个2D姿势界标,其中根关节(髋关节之间的中点)位于原点处。因此,2D输入姿态由x = [x1,..xN]。对于数值稳定性,我们的目标是生成3D骨架,使得从头部顶部到根部关节的距离约为1个单位。

生成器Generator

生成器G被定义为输出每个点xi的深度偏移oi的神经网络

其中θG是在训练期间学习的发生器的参数。每个点的深度定义为

其中d表示相机与3D骨架之间的距离。注意,d的选择是任意的,只要d > 1。将zi约束为大于1可确保将点投影到摄影机前面。实际上,我们使用d = 10个单位。

接下来,我们定义反向投影和随机投影层,负责生成3D骨架并将其投影到其他随机视图。

背面投影层Back Projection Layer

反投影层采用输入2D点xi和预测的zi以计算3D点Xi = [zixi,ziyi,zi]。注意,我们使用精确透视投影代替近似,例如正投影或旁透视投影。

随机投影层 Random Projection Layer

假设的(生成的)3D骨架使用随机生成的相机取向被投影到2D姿态,以被馈送到鉴别器。为了简单起见,我们随机旋转3D点(原地)并应用透视投影以获得假2D投影。设R是随机旋转矩阵,T = [0,0,d]。令Pi = [Px i,Pyi,Pz i ] = R(Xi-T)+T表示应用随机旋转之后的3D点。这些点被重新投影以获得假2D点pi = [pxi,py i ] = [Px i /Pz i,Py i /Pz i ]。旋转的点Pi也应该在相机前面。为了确保这一点,我们还强制Pz i ≥ 1。设p = [p1],..,pN]表示2D投影姿态。

注意透视投影中存在固有的模糊性;将3D骨架的尺寸和距照相机的距离加倍将导致相同的2D投影。因此,预测绝对3D坐标的生成器在批次中的每个训练样本的预测大小和距离之间具有附加的自由度。这可能潜在地导致生成器输出和批次内的梯度幅度的大的变化,并且导致训练中的收敛问题。我们通过预测相对于恒定深度d的深度偏移并围绕它旋转来消除这种模糊性,从而实现稳定的训练。在第4节中,我们为我们的方法定义了一个简单的基线,该基线假设所有点的深度恒定(深度偏移等于零,平坦的人体骨骼输出),并表明我们的方法可以预测有意义的深度偏移

判别器 Discriminator

鉴别器D被定义为神经网络,其消耗假2D姿态p(从生成的3D骨架随机投影)或真实的2D姿态r(经由相机或合成视图的真实3D骨架的一些投影),并分别将它们分类为假(目标概率为0)或真实(目标概率为1)。

其中θD是在训练期间学习的鉴别器的参数,并且u表示2D姿态。注意,对于任何训练样本X,我们不要求r与X或其任何多视图对应相同。在学习过程中,我们使用标准的GAN损失[12],定义为

先验的3D骨架,如肢体长度和关节角度的比例隐式学习,只使用随机的2D投影。

在我们的生成器和鉴别器架构中使用的残差块

Training

对于训练,我们通过使用根关节将2D姿势标志居中并缩放像素坐标来归一化2D姿势标志,使得训练数据上的平均头根距离是2D中的1/d单位。虽然我们可以在GPU内存中容纳整个数据,但我们使用的批处理大小为32,768。我们使用Adam优化器[21],生成器和鉴别器网络的起始学习率为0.0002。我们在实验中将批量在8,192和65,536之间变化,但对性能没有任何显著影响。8个TitanX GPU的训练时间为每批0.4秒。

生成器结构

生成器接受表示14个2D关节位置的28维输入。输入连接到全连接层以将维度扩展到1024,然后馈送到后续残差块中。与[26]类似,残差块由一对完全连接的层组成,每个层有1024个神经元,然后是批量归一化[16]和RELU(见图3)。通过全连接层减小最终输出以产生14维深度偏移(每个姿势关节一个)。在生成器中采用总共4个残差块。

鉴别器架构

类似于生成器,鉴别器还从真实2D姿态数据集或从假设的3D骨架投影的假2D姿态获取表示14个2D关节位置的28个输入。这经过大小为1024的全连接层以馈送如上文所定义的后续3个残余块。最后,鉴别器的输出是一个2类softmax层,表示输入是真实的的还是假的概率。

随机旋转

随机投影层通过从[0,20]度随机采样仰角φ和从[0,360]度随机采样方位角θ来创建随机旋转。这些角度被选择作为一种启发,以粗略地模拟大多数“在当时的野生”图像将具有的可能视点。

实验结果

基线

我们定义了一个平凡的基线与天真的算法,预测一个恒定的深度为每个2D姿势点。这相当于输出恒定深度偏移的生成器。对于使用地面实况2D点的协议2,这种方法的MPJPE是127.3mm。我们在实践中实现了更低的错误率,加强了我们的生成器能够按照预期学习现实的3D姿势的事实。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/101068.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【链表OJ 10】环形链表Ⅱ(求入环节点)

前言: 💥🎈个人主页:​​​​​​Dream_Chaser~ 🎈💥 ✨✨刷题专栏:http://t.csdn.cn/UlvTc ⛳⛳本篇内容:力扣上链表OJ题目 目录 leetcode142. 环形链表 II 1.问题描述 2.代码思路 3.问题分析 leetcode142. 环形链…

安全开发-JS应用NodeJS指南原型链污染Express框架功能实现审计WebPack打包器第三方库JQuery安装使用安全检测

文章内容 环境搭建-NodeJS-解析安装&库安装安全问题-NodeJS-注入&RCE&原型链案例分析-NodeJS-CTF题目&源码审计打包器-WebPack-使用&安全第三方库-JQuery-使用&安全 环境搭建-NodeJS-解析安装&库安装 Node.js是运行在服务端的JavaScript 文档参考…

Java 大厂八股文面试专题-设计模式 工厂方法模式、策略模式、责任链模式

面试专题-设计模式 前言 在平时的开发中,涉及到设计模式的有两块内容,第一个是我们平时使用的框架(比如spring、mybatis等),第二个是我们自己开发业务使用的设计模式。 面试官一般比较关心的是你在开发过程中&#xff…

javaee之黑马乐优商城2

简单分析一下商品分类表的结构 先来说一下分类表与品牌表之间的关系 再来说一下分类表和品牌表与商品表之间的关系 面我们要开始就要创建sql语句了嘛,这里我们分析一下字段 用到的数据库是heima->tb_category这个表 现在去数据库里面创建好这张表 下面我们再去编…

剑指 Offer 44. 数字序列中某一位的数字(中等)

题目: class Solution { //本题单纯找规律,要注意通过n%digits来判断有几个位数为digits的数 public:int findNthDigit(int n) {long base 9, digits 1; //digits代表位数while(n-base*digits>0){ //该循环是为了确定目标数字所在…

JZ12 矩阵中的路径

剑指Offer编程链接:JZ12 题目描述: 思路:递归回溯的方法,总结一下什么情况需要使用递归: 递归在解决问题时,通常涉及以下情况: 问题可被分解为较小的相似子问题。子问题与原问题具有相同的结…

记录--前端使用a链接下载内容增加loading效果

这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 问题描述:最近工作中出现一个需求,纯前端下载 Excel 数据,并且有的下载内容很多,这时需要给下载增加一个 loading 效果。 代码如下: // util…

[dasctf]misc3 chrchrchr.pcapng

webshell 流量分析 php代码部分没啥看的,主要在标黄的部分,裁剪掉前面的字符可base解码 能看到在向a.txt中写入数据 wp # tshark.exe -r chrchrchr.pcapng -T fields -e urlencoded-form.value -Y "urlencoded-form.keyzd2ebbfb26dd" >…

【设计模式】Head First 设计模式——桥模式 C++实现

设计模式最大的作用就是在变化和稳定中间寻找隔离点,然后分离它们,从而管理变化。将变化像小兔子一样关到笼子里,让它在笼子里随便跳,而不至于跳出来把你整个房间给污染掉。 设计思想 桥模式。将抽象部分(业务功能)与实现部分(平…

vr健康管理服务情景化教学弥补现代医学教学中的诸多不足之处

高职高专临床医学院校以培养岗位胜任力为目的,该专业是一门专业性、实践性较强的医学学科,要求培养出来的学生具有较强的临床实践能力,医学生所学的全部知识,都应与实践相结合,解决临床的实际问题,为患者解…

Android 手游聚合SDK小知识(一)

Android 手游聚合SDK小知识(一) Android 手游聚合SDK小知识(二) 聚合分包 前言 回头想想,在安卓游戏SDK这个领域,我也呆了4年了,从啥都不懂的小菜鸟,逐渐靠自己不断学习,对这个行业也算有了一些理解,趁着…

Qt应用开发(基础篇)——颜色选择器 QColorDialog

一、前言 QColorDialog类继承于QDialog,是一个设计用来选择颜色的对话框部件。 对话框窗口 QDialog QColorDialog颜色选择器一般用来让用户选择颜色,比如画图工具中选择画笔的颜色、刷子的颜色等。你可以使用静态函数QColorDialog::getColor()直接显示对…

vue集成mars3d后,basemaps加不上去

首先&#xff1a; <template> <div id"centerDiv" class"mapcontainer"> <mars-map :url"configUrl" οnlοad"onMapload" /> </div> </template> <script> import MarsMap from ../component…

Golang:微服务常用代码分层结构

1.代码结构 代码分层结构是一个老生常谈的话题&#xff0c;好的代码结构能够使得系统易于理解、开发及维护&#xff0c;如果代码结构很混乱就会使得不同层级的代码块耦合&#xff0c;导致难以维护和拓展。 比较经典的代码结构&#xff08;宏观&#xff09;有Web的MVC模式分层结…

Spring Cloud Foundry上使用通配符模式匹配进行的安全绕过漏洞 CVE-2023-20873

文章目录 0.前言1.参考文档2.基础介绍描述如果满足以下任一条件&#xff0c;应用程序就不会有太大风险&#xff1a;受影响的Spring产品和版本 3.解决方案3.1. 升级版本3.2. 替代方案 0.前言 背景&#xff1a;公司项目扫描到 Spring Cloud Foundry上使用通配符模式匹配进行的安全…

tp5使用redis及redis7.2安装到window系统上面

redis安装教程 redis7.2安装到window系统上面 https://download.csdn.net/download/qq_39161501/88269037 解决方案&#xff1a;修改配置php.ini文件 打开Apache目录下的php.ini文件&#xff0c;搜索extension&#xff0c;在空白处加上下列代码&#xff1a; 注&#xff1a;e…

2019CVPR Semantic Graph Convolutional Networks for 3D Human Pose Regression

基于语义图卷积网络的三维人体姿态回归 源码 https://github.com/garyzhao/SemGCN 摘要 在本文中&#xff0c;我们研究了学习图卷积网络&#xff08;GCN&#xff09;回归的问题。GCN的当前体系结构受限于卷积滤波器和共享的变换矩阵为的小感受野。为了解决这些限制&#xff…

并发 04(Callable,CountDownLatch)详细讲解

并发 Callable 1 可以返回值 2可以抛出异常 泛型指的是返回值的类型 public class Send {public static void main(String[] args) {//怎么启动Callable//new Thread().start();Aaa threadnew Aaa();FutureTask futureTasknew FutureTask(thread);new Thread(futureTask,&qu…

划分字母区间【贪心算法】

划分字母区间 给你一个字符串 s 。我们要把这个字符串划分为尽可能多的片段&#xff0c;同一字母最多出现在一个片段中。 注意&#xff0c;划分结果需要满足&#xff1a;将所有划分结果按顺序连接&#xff0c;得到的字符串仍然是 s 。返回一个表示每个字符串片段的长度的列表。…

深度学习6:自然语言处理-Natural language processing | NLP

目录 NLP 为什么重要&#xff1f; 什么是自然语言处理 – NLP NLP 的2大核心任务 自然语言理解 – NLU|NLI 自然语言生成 – NLG NLP(自然语言处理) 的5个难点 NLP 的4个典型应用 NLP 的 2 种途径、3 个核心步骤 总结 自然语言处理 NLP 为什么重要&#xff1f; “语言…