【论文阅读】VIBE 基于视频的人体3D形状和姿态估计

2023-05-16

论文原文:https://arxiv.org/pdf/1912.05656.pdf

自己也翻译了一下,方便之后看呀:https://blog.csdn.net/qq_42366123/article/details/108122664

目录

一、介绍

1、之前的方法与局限性

2、现有方法的问题

3、解决方法

4、创新点

二、需要了解的一些相关知识

1、生成对抗网络GANs

2、人体模型SMPL

3、VAE

4、MLP

三、本文方法

1、VIBE总体框架

2、时间编码器

3、运动判别器

(1)运动判别器的结构

(2)反向传播到g的对抗损失

(3)运动判别器的目标

4、网络结构详细介绍

(1)姿势生成器 Pose Generator. 

(2)运动判别器 Motion Discriminator.

(3)其他补充

四、实验

1、数据集

2、评估指标

3、结果比较

(1)VIBE与之前最新的基于帧和时间的方法比较

(2)VIBE与Temporal-HMR定性比较

4、消融实验

(1)运动判别器的消融实验

(2)self-attention的消融实验


一、介绍

1、之前的方法与局限性

方法

  • 将室内3D数据集与具有2D地面真实或伪地面真实关键点标注的视频相结合;

局限性

  • 室内三维数据集在对象数量、运动范围和图像复杂度方面受到限制;
  • 用地面真实二维姿态标记的视频量仍然不足以训练深层网络;
  • 伪地面真实二维标签对于三维人体运动建模不可靠。

2、现有方法的问题

  • 缺乏带标注的3D人体姿态和形态估计的数据集
  • 现有的方法不够完善,无法捕获到人类实际运动的复杂性和可变性,以及准确又自然的运动序列;预测的形态不够逼真,在运动学上不够合理。

3、解决方法

  • 利用大规模3D运动捕捉数据集(AMASS)训练基于视频的人体姿态和形态的GAN(基于序列的生成对抗网络)模型。

4、创新点

  • 对抗性学习框架
  • 利用AMASS数据集进行VIBE的对抗训练,来区分真实的人体运动和由本文的时间姿势和形状回归网络产生的运动,这鼓励回归器产生逼真和精确的运动。

二、需要了解的一些相关知识

1、生成对抗网络GANs

参考文章

https://zhuanlan.zhihu.com/p/42029261
https://zhuanlan.zhihu.com/p/24989446

2014年,arXiv上面刊载了一篇关于生成对抗网络的文章,名为《Generative Adversarial Nets》,作者是深度学习领域的大牛Ian J. Goodfellow. 该文提出了一种估计生成模型的新框架:同时训练两个模型,分别为用于捕获数据分布的生成模型 G 和用于判别数据是真实数据还是生成数据(伪数据)的判别模型 D . 

GAN 启发自博弈论中的二人零和博弈(two-player game),GAN 模型中的两位博弈方分别由生成式模型(generative model)和判别式模型(discriminative model)充当。给定一些无标签的样本数据,生成模型 G 捕捉样本数据的分布,用服从某一分布(均匀分布,高斯分布等)的噪声 z 生成一个类似真实训练数据的样本,追求效果是越像真实样本越好;判别模型 D 是一个二分类器,估计一个样本来自于训练数据(而非生成数据)的概率,如果样本来自于真实的训练数据,D 输出大概率,否则,D 输出小概率。可以做如下类比:生成网络 G 好比假币制造团伙,专门制造假币,判别网络 D 好比警察,专门检测使用的货币是真币还是假币,G 的目标是想方设法生成和真币一样的货币,使得 D 判别不出来,D 的目标是想方设法检测出来 G 生成的假币。

在训练的过程中固定一方,更新另一方的网络权重,交替迭代,在这个过程中,双方都极力优化自己的网络,从而形成竞争对抗,直到双方达到一个动态的平衡(纳什均衡),此时生成模型 G 恢复了训练数据的分布(造出了和真实数据一模一样的样本),判别模型再也判别不出来结果,准确率为 50%,约等于乱猜。公式如下:

preview

当固定生成网络 G 的时候,对于判别网络 D 的优化,可以这样理解:输入来自于真实数据,D 优化网络结构使自己输出 1,输入来自于生成数据,D 优化网络结构使自己输出 0;当固定判别网络 D 的时候,G 优化自己的网络使自己输出尽可能和真实数据一样的样本,并且使得生成的样本经过 D 的判别之后,D 输出高概率。

2、人体模型SMPL

参考文章

https://www.jianshu.com/p/24a35377ef3e

https://blog.csdn.net/nbxuwentao/article/details/100177159

SMPL(Skinned Multi-Person Linear)人体模型是德国马普所的研究人员提出的一种骨架驱动的参数化人体模型,可以进行任意的人体建模和动画驱动。

SMPL人体模型是一个从大量人体数据中学习得到的基于顶点的加性人体模型,其包含N=6980个顶点,13776个三角面片,并包括一个拥有K=24个关节点的人体骨架,通过骨架可以驱动模型做出各种人体姿态

SMPL采集不同姿势的真实人体网格,要建立形状参数(shape)、姿势参数(pose)和网格(mesh)之间的对应关系,输入是posture,输出是mesh。

3、VAE

参考文章

https://blog.csdn.net/antkillerfarm/article/details/80648805

https://blog.csdn.net/heyc861221/article/details/80130968

变分自编码器(Variational Auto-Encoder,VAE)是Autoencoder的一种扩展。

通常我们会拿VAE跟GAN比较,都属于深度学习的生成模型,它们两个的目标基本是一致的——希望构建一个从隐变量Z生成目标数据X的模型,但是实现上有所不同。具体的讲解参考引用中的文章。

4、MLP

参考文章

https://blog.csdn.net/u010165147/article/details/82851717

CNN卷积核大小与输入大小相同时其计算过程等价于MLP,也就是说MLP等价于卷积核大小与每层输入大小相同的CNN(如输入图片为100x100,卷积核大小为100x100),所以MLP是CNN的一个特例。

三、本文方法

1、VIBE总体框架

VIBE流程:

  1. 输入视频:V=\left \{ I_{t} \right \}_{t=1}^{T},长度为T,单人视频;
  2. 提取特征:使用预先训练好的CNN提取每一帧I_{t}的特征,这里CNN网络用  表示,为每个帧f(I_{1}),...f(I_{T}) 输出一个向量f_{i}\in \mathbb{R}^{2048}
  3. 时间编码器输出每帧姿势和形状参数:训练一个由双向门控递归单元(GRU)组成的时间编码器(用作生成器generator)。将特征提取后的输出f_{i}\in \mathbb{R}^{2048},发送到GRU层,该层会基于先前的帧为每个帧g(f_{1}),...g(f_{T})产生潜在特征向量g_{i}。,然后,我们将g_{i}作为具有迭代反馈的T回归器的输入,并在每次迭代k中将当前参数\Theta _{k}与特征g_{i}一起作为输入,在每个帧中输出相应的姿势和形状参数;也就是输出包含过去和未来帧的信息的潜在变量。
  4. SMPL人体模型:利用GRU输出的信息,对每一时刻的SMPL人体模型参数进行回归,估计姿态和形状(用到SMPL参数回归器),输出一个定常的三维网格(这里理解为输出三维的人体模型);
  5. 2-4步描述的模型称为时间生成器,输出\hat{\theta_{T}}是时间点t的姿态参数,\hat{\beta}是序列的单一体型预测。输出也可以理解为GAN对抗网络中的生成数据;
  6. 将Generator(g)的输出  和来自AMASS的样本输出 \Theta _{real} 一起赋予运动判别器D_{M}(motion discriminator),用于判断真假样本。

2、时间编码器

 

使用循环体系结构的一个原因是:未来帧可以从过去的视频姿态信息中受益,当一个人的姿势不明确或身体在给定的框架中被部分遮挡时,尤其有用。

总体而言,当时间编码器可用时,其损失由2D(x)、3D(X)、pose(θ)和shape(β)损失组成。这与对抗性D_{M}损失相结合。具体而言,g的总损失为:

其中每项计算如下:

其中L_{adv}是下文解释的对抗性损失。

3、运动判别器

单图像约束不足以说明姿势序列。当忽略运动的时间连续性时,多个不正确的姿势可能会被视为有效。因此为了减轻这种情况,使用运动判别器D_{M}来判断生成的姿势序列是否对应于现实序列。

(1)运动判别器的结构

  1. GRU模型估计潜在特征 h_{i}:生成器的输出 \hat{\Theta} 作为输入提供给Figure 3所示的多层GRU模型f_{M};这个模型在h_{i}=f_{m}(\hat{\Theta_{i}})的每个时间步长 i 估计潜在编码 h_{i} ;
  2. 使用 self attention,聚合隐藏状态  [h_{i},...,h_{T}]:权值 a_{i} 由线性MLP层 \phi 学习得到, r 是隐藏状态的组合(需要注意的是,代表每帧隐藏状态的特征 h_{i} 被平均化并最大化,然后,将这两种表示形式 r_{avg} 和 r_{max}连接起来,构成最终的静态向量r,用于D_{M} 真假决策),这样可以放大重要的帧在最终表示中的贡献
  3. softmax规范化,形成概率分布,真假决策:线性层预测一个值\in [0,1],该值表示\Theta属于合理的人类运动集合的概率。

Figure 3:运动判别器. D_{M}由GRU层和self attention 层组成。D_{M}为每个输入序列输出一个真/假概率。

(2)反向传播到g的对抗损失

(3)运动判别器的目标

其中p_{R}是来自AMASS数据集的真实运动序列,而p_{G}是生成的运动序列。

4、网络结构详细介绍

(1)姿势生成器 Pose Generator. 

(2)运动判别器 Motion Discriminator.

(3)其他补充

 Adam优化器,g和D_{M}的学习率分别为5×10−5和1×10−4。

损失函数的每个时期,使用不同的权重系数。当\lambda _{\beta }=0.06,\lambda_{\theta }=60时,2D和3D关键点损失系数分别为\lambda _{2D}and\lambda_{3D}=300。我们将运动判别器对抗损失项L_{adv}设置为\lambda _{L_{adv}}=2。我们使用2个GRU层,其隐藏尺寸为1024。

四、实验

1、数据集

  • PennAction 和 PoseTrack——地面真实2D视频数据集;
  • InstaVariety 和 Kinetics-400 ——2D关键点检测器标注的伪地面真实数据集;
  • MPI-INF-3DHP 和 Human3.6M——3D联合标签;
  • 3DPW 和 Human3.6M——提供了用于计算L_{SMPL}的SMPL参数;
  • AMASS——用于对抗训练,以获得3D人体运动的真实样本。

2、评估指标

  • PA-MPJPE——Procrustes-aligned的平均每个关节位置误差;
  • MPJPE——平均每个关节位置误差;
  • PCK——正确关键点的百分比;
  • PVE——每个顶点误差;
  • 加速度误差(mm/s2)

3、结果比较

(1)VIBE与之前最新的基于帧和时间的方法比较

VIBE(direct comp.)是我们提出的在视频数据集上训练的模型,可以看到,VIBE在具有挑战性的户外数据集(3DPW和MPI-INF-3DHP)上优于包括SPIN[37]在内的所有最新模型,并在Human3.6M上获得可比结果。

(2)VIBE与Temporal-HMR定性比较

VIBE(顶部)和Temporal-HMR(底部)之间的定性比较。这个具有挑战性的视频包含快速运动、极端姿势和自遮挡。VIBE产生的姿势比 Temporal HMR更精确。

4、消融实验

(1)运动判别器D_{M}的消融实验

使用HMR[30]和SPIN[37]作为预训练的特征提取器,并将时间生成器 gD_{M}一起添加,可以看到,只添加生成器g时,由于缺乏足够的视频训练数据,得到的结果比基于帧的模型稍差,但更平滑(Accel),加入运动判别器,有助于提高g的性能,同时产生更平滑的预测。

(2)self-attention的消融实验

尝试了几种 self-attention的配置,并将我们的方法与静态池化(D_{M}-concat)相比,可以看到,在3DPW数据集上,不同MLP层数和隐藏大小对实验结果的影响,进一步说明2层MLP网络,1024隐藏大小是最好的。


一些补充

对抗网络到底有什么作用?

开始一直没搞明白为什么需要对抗网络,也就是运动判别器D_{M},因为前面生成器g就已经可以表示出人体姿态,读到实验突然有点明白了,由于可以用于训练的数据集比较少,因此如果只采用生成器的话,训练出来的人体姿态识别精度比较低(参考运动判别器D_{M}的消融实验的baseline(only g)),所以加入D_{M},在有限的数据基础上,通过与真实姿态比较(对抗),来进一步改善识别效果,得到更精确的人体姿态识别。(不知道理解的对不对,欢迎指正~)

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

【论文阅读】VIBE 基于视频的人体3D形状和姿态估计 的相关文章

  • Received status code 400 from server: Bad Request

    一 报错信息 FAILURE span class token operator span span class token class name Build span failed span class token keyword wit
  • wangEditor使用教程

    1 安装 xff08 vue2 xff09 yarn add 64 wangeditor editor 或者 npm install 64 wangeditor editor save yarn add 64 wangeditor edit
  • 微信小程序之问卷调查

    登录界面 login js span class token comment miniprogram pages login login js span span class token function Page span span cl
  • NISP

    文章目录 NISP七月份练习01NISP七月份练习02NISP七月份练习03NISP七月份练习04NISP七月份练习05NISP七月份练习06NISP七月份练习07NISP七月份练习08NISP七月份练习09NISP七月份练习10NISP七
  • Redis系列漏洞总结

    Redis系列漏洞总结 文章目录 Redis系列漏洞总结环境 ubuntu16 04 redis5 0 1 redis下载及安装redis 漏洞利用方式0x01 绝对路径写shell0x02 redis 写入ssh公钥0x03 Redis主
  • 国密浏览器介绍与下载

    国密浏览器介绍与下载 密信浏览器介绍支持操作系统下载地址 奇安信可信浏览器 xff08 国密开发者专版 xff09 介绍支持操作系统下载地址 红莲花安全浏览器介绍支持操作系统下载地址 零信浏览器介绍支持操作系统下载地址 360安全浏览器介绍
  • linux/php一句话图片马及实例

    Ubuntu一句话图片马 准备一张图片tu jpeg phpinfo php和hack php xff1b Phpinfo php文件内容 xff1a hack php文件内容 xff1a 准备一个16进制软件UE UltraEdit li
  • 黑客网络安全扫描工具

    黑客网络安全扫描工具 项目简介1 子域名枚举扫描器或爆破工具2 数据库类漏洞扫描器或爆破工具3 弱口令 弱用户名扫描器或爆破工具4 物联网设备识别工具或扫描器5 反射型或DOM Based XSS扫描器6 企业资产管理或信息泄露搜集工具7
  • MSF之ms17-010永恒之蓝漏洞利用

    MSF之ms17 010永恒之蓝漏洞利用 准备扫描漏洞漏洞攻击 准备 实验准备环境 xff1a 被攻击机 xff1a 虚拟机win7x64位系统 其IP为 xff1a 10 101 2 11 xff08 关闭了防火墙 xff09 攻击机 x
  • linux上安装mysql8.0及常见mysql设置

    1 服务器环境是linux环境 xff0c 使用yum方式安装 yum install mysql server 2 安装完成之后进入目录 etc my cnf 查看文件是否有配置 xff0c 一般都会在 etc my cnf d 文件目录
  • from origin ‘null‘ has been blocked by CORS policy: Cross origin requests are only supported for pro

    Access to script at file C Users dawulei Desktop E9 A1 B9 E7 9B AE E5 9D A6 E5 85 8B E5 A4 A7 E6 88 98 txt htrml js txt
  • 武装服务器(一):云服务器配置aliyundriver-webdav以及使用Aria2和Rclone挂载阿里云盘实现离线下载器

    目录 1 引言2 安装步骤2 1 实验准备2 2 Docker安装2 3 aliyundrive webdav安装2 4 Rclone挂载云盘2 5 配置Aeri2 pro和AriaNg 3 运行4 完成安装 1 引言 云端服务器的硬盘容量
  • 数鸭子问题和角谷定理

    数鸭子问题和角谷定理 一 实验目的 掌握递归程序设计的方法 明确递归的概念 xff0c 通过对问题的分析 xff0c 找出递归关系以及递归出口以对问题进行递归结构设计 xff1b 掌握递归程序转换为非递归程序的方法 二 实验内容 用递归方法
  • ubuntu 18.04 进入恢复(安全)模式修改文件内容

    1 开机时按ESC xff0c 进入BIOS xff08 GRUB menu xff09 上下键选中高级选项 2 选中高级选项按E可以看到ubuntu参数列表 xff08 下面第一张图 xff09 xff1b 接着按ctrl 43 x 或者
  • HTTP各种请求方法的的幂等性和安全性

    幂等性和安全性是http请求方法的特性 比如 get请求方法是具有安全性的 安全性 此次请求不会修改后台 仅指该方法的多次调用不会产生副作用 xff0c 不涉及传统意义上的 安全 xff0c 这里的副作用是指资源状态 即 xff0c 安全的
  • Linux 添加环境变量的两种方法 exprot 临时法 vi /etc/profile永久法

    编写一个shell脚本之后 xff0c 怎么可在任意目录运行改脚本呢 xff1f 为什么别人写的脚本可以直接运行 xff0c 自己写的脚本就会出现 bash XXXXX sh command not found 这样的错误呢 xff1f 1
  • uniapp 安卓/ios 录音授权,录制音频,录音文件上传

    下载依赖插件 官方的app端要权插件 App权限判断和提示 第三方录音组件 录音播放 语音录制voice sound recording 引入依赖 import permision from 34 64 js sdk wa permissi
  • 网络编程:TCP多线程实现多客户端服务器

    TCP多客户端服务器 gt 远程控制 xff08 此篇用多线程实现 xff01 xff09 原理图 xff1a 完整代码如下 xff1a span class token macro property span class token di
  • win10启动ubuntu报错 参考的对象类型不支持尝试的操作

    问题 xff1a 在Windows10系统下启动Ubuntu20 04连接WSL2 xff0c 显示参考的对象类型不支持尝试 解决方案 1 临时有效 通过管理员身份打开Windows PowerShell 打开之后输入以下命令重置Winso
  • Echarts中visualMap组件详解(含注释)

    visualMap 61 视觉映射组件 xff0c 用于进行 视觉编码 xff0c 也就是将数据映射到视觉元素 视觉元素可以是 xff1a symbol 图元的图形类别 symbolSize 图元的大小 color 图元的颜色 colorA

随机推荐