当前位置: 首页 > news >正文

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姿势的事实。

相关文章:

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

摘要 在计算机视觉中,从单个图像的三维姿态估计是一个具有挑战性的任务。我们提出了一种弱监督的方法来估计3D姿态点,仅给出2D姿态地标。我们的方法不需要2D和3D点之间的对应关系来建立明确的3D先验。我们利用一个对抗性的框架,强加在3D结构…...

干旱演变研究:定义及研究方法

在水文系统中,每个组分之间互相关联,包气带水、地下水和河川径流相互响应,水文循环处于动态平衡的状态。 降水作为水文系统的输入量,对水文循环具有重要的影响。降水短缺通过水文循环导致水文系统不同组分(包气带、地下水和地表水)发生干旱,降水不足导致土壤含水量减少,…...

【LeetCode-中等题】114. 二叉树展开为链表

文章目录 题目方法一:前序遍历(构造集合) 集合(构造新树)方法二:原地构建方法三:前序遍历--迭代(构造集合) 集合(构造新树) 题目 方法一&#x…...

【题解】JZOJ6645 / 洛谷P4090 [USACO17DEC] Greedy Gift Takers P

洛谷 P4090 [USACO17DEC] Greedy Gift Takers P 题意 n n n 头牛排成一列,队头的奶牛 i i i 拿一个礼物并插到从后往前数 c i c_i ci​ 头牛的前面,重复无限次,问多少奶牛没有礼物。 题解 发现若一头牛无法获得礼物,那么它后…...

Vue 项目中的错误如何处理的?

1、 组件中的处理:使用 errorCaptured 钩子 作用:可以捕获来自后代组件的错误 父组件(errorCaptured) -> 子组件 (errorCaptured) -> 当孙子组件出错时,错误会一直向上抛,也就是先触发子组件的 errorCaptured,…...

网络分层的真实含义

复杂的程序都要分层,这是程序设计的要求。比如,复杂的电商还会分数据库层、缓存层、Compose 层、Controller 层和接入层,每一层专注做本层的事情。 当一个网络包从一个网口经过的时候,你看到了,首先先看看要不要请进来…...

RT-Thread 线程间同步

线程间同步 在多线程实时系统中,一项工作的完成往往可以通过多个线程协调的方式共同来完成,那么多个线程之间如何 “默契” 协作才能使这项工作无差错执行?下面举个例子说明。 例如一项工作中的两个线程:一个线程从传感器中接收…...

Python元类再解释

Python元类再解释 元类是什么? 你可以把元类看作是“生产类的工厂”。就像类是用来生产对象的,元类是用来生产类的。 为什么需要元类? 考虑一个场景:假设你正在编写一个框架,你希望框架中的所有类都有某些特定的方…...

常用的Spring Boot 注解及示例代码

简介:Spring Boot 是一个用于快速构建基于 Spring 框架的应用程序的工具,通过提供一系列的注解,它使得开发者可以更加轻松地配置、管理和控制应用程序的各种行为。以下是一些常用的 Spring Boot 注解,以及它们的功能和示例代码&am…...

react app教程

react app教程 环境准备 下载node 下载npx npm install npx创建app npx create-react-app automedia cd automedia npm start构建发布版本 npm run build安装调试工具 # .vscode/launch.json {// 使用 IntelliSense 了解相关属性。 // 悬停以查看现有属性的描述。// 欲了…...

在vue项目中用vue-watermark快捷开发屏幕水印效果

我们先引入一个第三方依赖 npm install vue-watermark然后 因为这只是个测试工具 我就直接代码写 App.vue里啦 参考代码如下 <template><div><vue-watermark :text"watermarkText"></vue-watermark><!-- 正常的页面内容 --></div…...

无涯教程-Android - Activity

Activity代表具有用户界面的单个屏幕&#xff0c;就像Java的窗口或框架一样。Android Activity 是ContextThemeWrapper类的子类。 如果您使用过C&#xff0c;C或Java编程语言&#xff0c;那么您一定已经看到您的程序从 main()函数开始。与之非常相似&#xff0c;Android系统以 …...

vue项目前端展示数学公式(在表格中渲染)

现有需求为 将实验数据录入表格中,需要表格呈现物理公式,使用Mathjax在vue2中 进行呈现 1.安装 npm i --save mathjax-vue 2.全局注册(main.js中) import MathJax, { initMathJax, renderByMathjax } from mathjax-vuefunction onMathJaxReady() {const el document.getEl…...

java八股文面试[数据库]——MySQL索引的数据结构

知识点&#xff1a; 【2023年面试】mysql索引的基本原理_哔哩哔哩_bilibili 【2023年面试】mysql索引结构有哪些&#xff0c;各自的优劣是什么_哔哩哔哩_bilibili...

python3.11教程2:基础数据类型(数字和字符串)、组合数据类型(集合、元组、列表、字典)

文章目录 五、基本数据类型5.1 整数和浮点数5.1.1 整数和浮点数的类型5.1.2 进制和进制转换5.1.3 round函数 5.2 运算符5.2.1 常用运算符、运算符函数和逻辑运算符5.2.2 位运算符5.2.3 运算符的优先级及其进阶使用 5.3 布尔类型5.4 字符串5.3.1 字符串的基本操作5.3.2 字符串函…...

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

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

SpringBoot中HttpClient的学习

一、介绍 HttpClient是Apache Jakarta Common 下的子项目&#xff0c;可以用来提供高效的、最新的、功能丰富的支持 HTTP 协议的客户端编程工具包。 HttpClient 是一个HTTP通信库、一个工具包&#xff0c;它只提供一个通用浏览器应用程序所期望的功能子集&#xff0c;与浏览…...

JVM-内存溢出的原因、CPU占满的原因

1.内存溢出的原因 OOM的排查思路_oom排查_java排坑日记的博客-CSDN博客 每个进程的内存&#xff08;限制&#xff0c;譬如2G&#xff09;最大堆容量最大方法区容量程序计数器虚拟机栈和本地方法栈。多线程下每个线程栈越大&#xff0c;越容易OOM. 1.堆内存溢出&#xff08;OO…...

如何做好银行统一报送系统UI设计

北京蓝蓝设计公司是一支由清华美院毕业的专业团队组成的设计公司。我们的设计师们在金融银行软件领域拥有12年的工作经验和丰富的行业知识。 在工作中我们常常思考银行金融反洗钱软件用户使用痛点是什么&#xff1f;我们发现用户的使用痛点往往是&#xff1a; 1功能入口不清晰…...

988. 从叶结点开始的最小字符串

988. 从叶结点开始的最小字符串 C代码&#xff1a;DFS /*** Definition for a binary tree node.* struct TreeNode {* int val;* struct TreeNode *left;* struct TreeNode *right;* };*/// 叶子节点// 每一层用一个pathTop、遇到叶子节点就判断一次&#xff1b;…...

KubeSphere 容器平台高可用:环境搭建与可视化操作指南

Linux_k8s篇 欢迎来到Linux的世界&#xff0c;看笔记好好学多敲多打&#xff0c;每个人都是大神&#xff01; 题目&#xff1a;KubeSphere 容器平台高可用&#xff1a;环境搭建与可视化操作指南 版本号: 1.0,0 作者: 老王要学习 日期: 2025.06.05 适用环境: Ubuntu22 文档说…...

【JavaEE】-- HTTP

1. HTTP是什么&#xff1f; HTTP&#xff08;全称为"超文本传输协议"&#xff09;是一种应用非常广泛的应用层协议&#xff0c;HTTP是基于TCP协议的一种应用层协议。 应用层协议&#xff1a;是计算机网络协议栈中最高层的协议&#xff0c;它定义了运行在不同主机上…...

Python:操作 Excel 折叠

💖亲爱的技术爱好者们,热烈欢迎来到 Kant2048 的博客!我是 Thomas Kant,很开心能在CSDN上与你们相遇~💖 本博客的精华专栏: 【自动化测试】 【测试经验】 【人工智能】 【Python】 Python 操作 Excel 系列 读取单元格数据按行写入设置行高和列宽自动调整行高和列宽水平…...

LeetCode - 394. 字符串解码

题目 394. 字符串解码 - 力扣&#xff08;LeetCode&#xff09; 思路 使用两个栈&#xff1a;一个存储重复次数&#xff0c;一个存储字符串 遍历输入字符串&#xff1a; 数字处理&#xff1a;遇到数字时&#xff0c;累积计算重复次数左括号处理&#xff1a;保存当前状态&a…...

全球首个30米分辨率湿地数据集(2000—2022)

数据简介 今天我们分享的数据是全球30米分辨率湿地数据集&#xff0c;包含8种湿地亚类&#xff0c;该数据以0.5X0.5的瓦片存储&#xff0c;我们整理了所有属于中国的瓦片名称与其对应省份&#xff0c;方便大家研究使用。 该数据集作为全球首个30米分辨率、覆盖2000–2022年时间…...

今日科技热点速览

&#x1f525; 今日科技热点速览 &#x1f3ae; 任天堂Switch 2 正式发售 任天堂新一代游戏主机 Switch 2 今日正式上线发售&#xff0c;主打更强图形性能与沉浸式体验&#xff0c;支持多模态交互&#xff0c;受到全球玩家热捧 。 &#x1f916; 人工智能持续突破 DeepSeek-R1&…...

【碎碎念】宝可梦 Mesh GO : 基于MESH网络的口袋妖怪 宝可梦GO游戏自组网系统

目录 游戏说明《宝可梦 Mesh GO》 —— 局域宝可梦探索Pokmon GO 类游戏核心理念应用场景Mesh 特性 宝可梦玩法融合设计游戏构想要素1. 地图探索&#xff08;基于物理空间 广播范围&#xff09;2. 野生宝可梦生成与广播3. 对战系统4. 道具与通信5. 延伸玩法 安全性设计 技术选…...

深度学习水论文:mamba+图像增强

&#x1f9c0;当前视觉领域对高效长序列建模需求激增&#xff0c;对Mamba图像增强这方向的研究自然也逐渐火热。原因在于其高效长程建模&#xff0c;以及动态计算优势&#xff0c;在图像质量提升和细节恢复方面有难以替代的作用。 &#x1f9c0;因此短时间内&#xff0c;就有不…...

Caliper 负载(Workload)详细解析

Caliper 负载(Workload)详细解析 负载(Workload)是 Caliper 性能测试的核心部分,它定义了测试期间要执行的具体合约调用行为和交易模式。下面我将全面深入地讲解负载的各个方面。 一、负载模块基本结构 一个典型的负载模块(如 workload.js)包含以下基本结构: use strict;/…...

怎么让Comfyui导出的图像不包含工作流信息,

为了数据安全&#xff0c;让Comfyui导出的图像不包含工作流信息&#xff0c;导出的图像就不会拖到comfyui中加载出来工作流。 ComfyUI的目录下node.py 直接移除 pnginfo&#xff08;推荐&#xff09;​​ 在 save_images 方法中&#xff0c;​​删除或注释掉所有与 metadata …...