【VIBE: Video Inference for Human Body Pose and Shape Estimation】论文阅读

2023-05-16

论文连接:https://arxiv.org/pdf/1912.05656.pdf
代码连接:https://github.com/mkocabas/VIBE

Video Inference for Human Body Pose and Shape Estimation

  • 摘要
  • 前言
  • 相关工作
  • 方法

在这里插入图片描述
图1:给定具有挑战性的野外视频,最近最先进的视频姿态估计方法 31无法产生精确的3D身体姿态。为了解决这个问题,我们利用一个大规模的运动捕捉数据集来训练一个使用对抗方法的运动鉴别器。我们的模型(VIBE)(底部)能够产生真实和准确的姿势和形状,在标准基准上优于以前的工作。

摘要

人类的运动是理解行为的基础。尽管在单图像3D姿态和形状估计方面取得了进展,但是由于缺乏用于训练的真实3D运动数据,现有的基于视频的最先进的方法不能产生精确和自然的运动序列。为了解决这个问题,我们提出了“人体姿态和形状估计的视频推理”(VIBE),它利用了现有的大规模运动捕捉数据集(makes)以及不成对的、在野外的2D关键点注释。我们的主要创新是一个对抗性的学习框架,它利用MASTER来区分真实的人类运动和那些由我们的时间姿势和形状回归网络产生的运动。我们定义了一个新的具有自我注意机制的时间网络结构,并证明了在序列水平上的对抗训练,产生了运动学上似是而非的运动序列,而没有在野外的地面真实3D标签。我们进行了广泛的实验来分析运动的重要性,并展示了VIBE在挑战性的3D姿态估计数据集上的有效性,实现了最先进的性能。

前言

在从单个图像估计3D人体姿态和形状方面已经取得了巨大的进步[11,22,26,30,36,37,39,47,50]。虽然这在许多应用中很有用,但正是身体在世界上的运动告诉我们人类的行为。2020年4月29日运动中的人体上的几个移动点光源告诉我们关于行为的信息。在这里,我们解决了如何利用时间信息从单目视频中更准确地估计身体的3D运动。虽然这个问题已经被研究了30多年,我们可能会问为什么可靠的方法仍然不容易获得。我们的观点是,由于训练数据不足,以前的人体运动时间模型没有捕捉到真实人体运动的复杂性和可变性。我们在这里用一种新的时间神经网络和训练方法来解决这个问题,并且表明它显著地改善了从单目视频中进行的3D人体姿态估计。现有的视频姿态和形状估计方法[31,56]通常不能产生精确的预测,如图1(上)所示。这背后的一个主要原因是缺乏野外地面真实的3D注释,即使对于单个图像来说,获得这些注释也不是小事。先前的工作[31,56]将室内3D数据集与具有2D地面真实或伪地面真实关键点注释的视频相结合。然而,这有几个限制:(1)室内3D数据集在对象数量、运动范围和图像复杂性方面受到限制;(2)标记有地面真实2D姿态的视频量仍然不足以训练深层网络;(3)伪地面真实2D标签对于三维人体运动建模是不可靠的。为了解决这个问题,我们从金泽等人[30]那里得到了启发,他们只使用2D关键点和不成对的静态3D人体形状和姿势数据集,使用对抗训练方法来训练单图像姿势估计器。对于视频序列,已经存在带有2D关键点注释的野外视频。接下来的问题是如何为对抗训练获得足够质量的逼真3D人体运动。为此,我们利用了大规模的3D运动捕捉数据集,称为MAGET[43],它足够丰富,可以学习人们如何运动的模型。我们的方法学会了从野外视频中估计3D身体形状姿势序列,这样鉴别器就不能区分估计的运动和MASTER数据集中的运动。如[30]中所述,我们还在可用时使用3D关键点。我们方法的输出是SMPL人体模型格式[42]的一系列姿态和形状参数,这与MAGRE和最近的文献一致。我们的方法了解人们如何在图像中出现的丰富性,并基于MASTER来产生有效的人类运动。具体来说,我们通过训练一个基于序列的生成对抗网络(GAN)来利用两个不成对的信息来源[19]。这里,给定一个人的视频,我们训练一个时间模型来预测每个帧的SMPL人体模型的参数,同时运动鉴别器试图区分真实序列和回归序列。通过这样做,鼓励回归者输出代表似是而非的动作的姿势,通过最小化对抗训练损失,而鉴别者充当弱监督。运动鉴别器隐含地学习使用真实运动捕捉(mocap)数据来解释运动中人体的静力学、物理学和运动学。我们称我们的方法为VIBE,它代表“人体姿态和形状估计的视频推理”在训练过程中,VIBE将野外图像作为输入,并使用卷积神经网络(CNN)预测SMPL人体模型参数,卷积神经网络用于单图像人体姿态和形状估计[37],然后使用时间编码器和人体参数回归器[30]。然后,运动鉴别器将预测的姿态与从聚敛数据集采样的姿态一起,并为每个序列输出一个真/假标签。我们使用门控循环单元实现时间编码器和运动鉴别器,以捕捉人类运动的顺序特性。运动鉴别器使用学习的注意力机制来放大独特帧的贡献。整个模型由对抗损失和回归损失监督,以最小化预测和地面真实关键点、姿态和形状参数之间的误差。在测试时,给定一个视频,我们使用预处理的CNN [37]和我们的时间模块来预测每个帧的姿态和形状参数。该方法适用于任意长度的视频序列。我们在多个数据集上进行了广泛的实验,并优于所有现有的方法;见图1(底部)的例子振动的输出。重要的是,我们表明,我们的视频为基础的方法总是优于单帧的方法在这一点上有很大的差距

相关工作

单个图像的3D姿态和形状。参数化3D人体模型[4,42,49]被广泛用作人体姿态估计的输出目标,因为它们捕获人体形状的统计数据,并提供可用于许多任务的3D网格。早期工作探索“机器人”自下而上“回归方法”,“自顶向下”优化方法,以及使用关键点和轮廓作为输入的多摄像机设置[1,8,20,55]。这些方法很脆弱,需要人工干预,或者不能很好地推广到野外图像。Bogo等人[11]提出了SMPLify,这是第一个端到端的方法之一,它使SMPL模型适合CNN关键点检测器的输出[52]。Lassner等人[39]在拟合过程中使用轮廓和关键点。最近,深度神经网络被训练成从像素[22,30,47,50,58,60]直接回归SMPL身体模型的参数。由于缺乏野外3D地面真实标签,这些方法使用从2D关键点重投影损失获得的弱监督信号[30,58,60],使用身体/部分分割作为中间表示[47,50],或者在循环中使用人[39]。Kolotouros等人[37]通过在训练循环中使用SMPLify,以协作方式将基于回归和基于优化的方法结合起来。在训练的每一步,深度网络[30]初始化使身体模型适合2D关节的SMPLify优化方法,产生用于监控网络的改进的适合度。或者,已经提出了几种非参数身体网格重建方法[38,53,62]。V arol等人[62]使用体素作为输出身体表示。Kolotouros等人[38]使用图形卷积网络[34]直接回归模板体网格的顶点位置。Saito等人[53]使用像素对齐的隐式函数预测身体形状,然后进行网格重建步骤。尽管从单个图像中捕捉人体,但当应用于视频时,这些方法会产生抖动、不稳定的结果。视频中的3D姿势和形状。从视频中捕捉人体运动有着悠久的历史。在早期的工作中,霍格等人[24]将一个简化的人体模型与行走的人的图像特征相匹配。早期的方法也利用了像来自mocap数据[48,61]的方法,但是这些方法仅限于简单的运动。最近许多从视频[15,25,45,51,46]中估计人体姿势的深度学习方法只关注关节位置。几种方法[15,25,51]使用两阶段方法将现成的2D关键点“提升”到3D关节位置。相比之下,梅塔等人[45,46]采用端到端方法直接回归3D关节位置。尽管在像Human3.6M [27]这样的室内数据集上有令人印象深刻的性能,但在像3DPW [64]和MPI-INF-3DHP [44]这样的室外数据集上表现不佳。最近的几种方法通过延长SMPLify时间来计算一致的身体形状和平滑运动,从而从视频中恢复SMPL姿势和形状参数[6,26]。
在这里插入图片描述
特别是,Arnab等人[6]表明,当用于微调时,用他们的SMPLify版本注释的互联网视频有助于改善HMR。金泽等人[31]通过预测过去和未来的帧1来学习人类运动运动学。他们还表明,使用2D关键点检测器标注的互联网视频可以减少对野生3D姿势标签的需求。Sun等人[56]建议使用基于变压器的时间模型[63]来进一步提高性能。他们提出了一种无监督的对抗性训练策略,学习对混洗帧进行排序。用于序列建模的GANs。生成性敌对网络GANs [5,19,28,40]对图像建模和合成产生了重大影响。最近的工作已经将GANs结合到递归架构中,以模拟序列到序列的任务,如机器翻译[57,65,66]。对运动建模的研究表明,将顺序结构和对抗性训练相结合,可以用来根据以前的运动序列预测未来的运动序列[9,21]或生成人体运动序列[2]。相比之下,我们关注的是以顺序输入数据为条件的对抗性精确预测姿势。按照这个方向,我们采用了一种运动鉴别器,它利用循环结构和敌对目标,利用3D mocap数据对潜在空间中的姿态和形状参数进行编码[43]。

方法

VIBE的整体框架总结在图2中。给定一个输入视频,长度为1一个人,我们从一个预先训练好的美国有线电视新闻网上提取每一帧的特征。我们训练一个由双向门控循环单元(GRU)组成的时间编码器,它输出包含过去和未来帧信息的潜在变量。然后,这些特征用于在每个时间实例回归SMPL身体模型的参数。SMPL用θ表示身体姿态和形状,θ分别由姿态和形状参数θ∈R72和β∈R10组成。姿态参数包括全局身体旋转和轴角格式的23个关节的相对旋转。形状参数是主成分分析形状空间的前10个系数;在这里,我们使用性别中性的形状模型,如在以前的工作[30,37]中给定的这些参数,SMPL模型是一个可微函数,M(θ,β) ∈ R6890×3,输出一个设定的三维网格。给定一个视频序列,VIBE计算ˇθ=[(ˇθ1,ˇθT),ˇβ],其中ˇθ是时间步长T的姿态参数,ˇβ是该序列的单个身体形状预测。具体来说,对于每一帧,我们预测身体形状参数。然后,我们应用平均池来获得整个输入序列中的单个形状(β)。我们参考到目前为止所描述的模型作为时间生成器G。然后,来自G的输出θ和来自are的样本θreal被提供给运动鉴别器DM,以便区分假的和真实的例子。

最后分享一个我复原的一图
在这里插入图片描述

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

【VIBE: Video Inference for Human Body Pose and Shape Estimation】论文阅读 的相关文章

  • 从 iPhone 中的视频帧获取图像

    是否可以使用 iPhone SDK 从 iPhone 中的视频中抓取帧并将其保存或在应用程序中以任何方式使用它 除了播放 停止或访问视频的二进制数据之外 SDK 是否可以对视频进行任何控制 还可以知道用户停止观看视频的时间 我知道在 SDK
  • 如何以编程方式选择视频文件并上传到 iPhone 中的服务器

    我想选择 iPhone 中的一个视频文件并将其上传到服务器 由于 UIImagePicker 用于选择照片库或其他模式中可用的图片 是否有任何选项可以以编程方式选择位于 iPhone 中的文件 使用资产库 参考这个问题 使用 AssetsL
  • 将 H.264 I 帧放入 AVSampleBufferDisplayLayer 但不显示视频图像

    在详细回顾了 WWDC2014 Session513 后 我尝试在 IOS8 0 上编写我的应用程序来解码和显示一个实时 H 264 流 首先 我成功构建了H264参数集 当我得到一个带有 4 位起始代码的帧时 就像 0x00 0x00 0
  • YouTubePlayerSupportFragment 不播放视频

    我有一个包含两个片段的 Activity 就像 YouTube 应用程序一样 YouTubePlayerSupportFragment 播放视频的半宽度 ListFragment 包含视频标题列表的列表 如 youtube 活动一启动 我就
  • 指示 getUserMedia 使用最佳可用相机分辨率

    我正在使用 getUserMedia 函数从网络摄像头录制视频 一切工作正常 除了当我刚刚指定 video true 约束时它仅以 640x480 分辨率录制 如果我设置如下约束 我现在可以在笔记本电脑上获得更好的录音质量 var medi
  • C++/OpenCV - 用于视频稳定的卡尔曼滤波器

    我尝试使用卡尔曼滤波器稳定视频以进行平滑 但我有一些问题 每次 我都有两帧 一帧是当前帧 另一帧是当前帧 这是我的工作流程 计算 goodFeaturesToTrack 使用 calcOpticalFlowPyrLK 计算光流 只保留优点
  • 为视频添加水印的命令

    我尝试在一个视频上添加水印 但 FFmpeg 命令不会执行 错误代码为 3037 我运行相同的代码来修剪视频 视频已成功修剪 因此没有问题inputpath or outputpath我也有ic watermark png在资产文件夹中 我
  • Facebook Messenger Bot:视频附件的大小?能有多大?

    至少在此处的文档中没有说明通过 Facebook Messenger 发送视频附件时所需的大小和格式 https developers facebook com docs messenger platform send api refere
  • 使用 ffmpeg 将视频与其自身连接,但相反

    我能够逆转 ffmpeg i input mp4 vf reverse output reversed mp4 我可以连接 ffmpeg i input mp4 i input mp4 filter complex 0 0 0 1 1 0
  • Phonegap html5视频无法播放

    我正在尝试在 iPad 上的phonegap 应用程序中播放视频 该视频给了我错误 MEDIA ERR SRC NOT SUPPORTED 我尝试播放的视频不是本地的 当我在该视频上使用curl I 时 这是它带来的信息 HTTP 1 1
  • 在列表视图/滚动视图中自动播放视频,类似于 facebook

    如果视图包含视频 我需要视频在列表视图 滚动视图中自动播放 这与 Facebook 非常相似 如果用户向下滚动并且可见区域包含视频 系统将播放视频 如果仍然滚动 则会自动停止该视频 它应该像一次播放一个视频一样工作 有人可以帮我解决这个问题
  • 仅使用 url 嵌入视频

    给定一个 youtube url 我如何使用 net c 将视频嵌入到页面中 只需添加如下一行 将 autoplay 设置为 0 或 1 取决于您是否希望人们真正留在您的页面上
  • 如何将视频转换为base64数据

    我有一个应用程序 可以从相机或图库中获取视频并将其转换为 Base64 数据 并将该数据发送到服务器 但问题是每当我转换 Base64 数据时 videodata 变量中的数据都不是正确的 为此我使用了下面的代码 FileInputStre
  • AVFoundation (AVPlayer) 支持的格式?没有 .vob 或 .mpg 容器?

    在 Mac 应用程序中使用 AVPlayer 可以全屏播放文件夹中的随机视频 但当我尝试播放 vob 文件或 mpg 文件时 我只会看到黑屏 黑屏的持续时间与视频持续时间一样长 AVFoundation 不支持从这些容器播放吗 我认为既然它
  • 使用 ffmpeg 提取帧的最快方法?

    您好 我需要使用 ffmpeg 从视频中提取帧 有没有比这更快的方法 ffmpeg i file mpg r 1 1 filename 03d jpg 如果 JPEG 编码步骤对性能要求太高 您可以始终将未压缩的帧存储为 BMP 图像 ff
  • 重新采样 H264 视频以降低帧速率,同时保持高图像质量

    以下是感兴趣的视频的 mplayer 输出 br carina tmp mplayer foo mov mplayer Symbol ff codec bmp tags has different size in shared object
  • 当 mp4 是唯一来源时,自定义 HTML5 视频控件不起作用

    问题 我只有一个视频源 mp4 因为我正在尝试向 tumblr 视频添加自定义控件 如果只有mp4作为源video duration返回为NaN 作为使用 3 个源 mp4 webm ogg 时的测试 它可以工作 所以video durat
  • 需要使用 iFrame API 隐藏 YouTube 品牌

    我正在使用 YouTube iFrame API 在我的自定义播放器 javascript 播放器 中加载视频 我需要隐藏 Youtube 品牌 但是在 iOS 设备上 它显示带有以下参数的徽标 playerVars fs 1 autopl
  • 在 Chrome 中为

    我已经看到这个问题多次出现 但没有任何明确的解决方案 我正在加载一个简单的视频
  • FFmpeg - 来自 NodeJS 的 RTMP 流,流比实时更快

    我的目标是在 Node 中渲染画布 并将该画布流式传输到 RTMP 服务器 最终是 Twitch 但现在我正在在本地 RTMP 服务器上测试 流式传输到 RTMP 的标准方式似乎是ffmpeg 所以我使用它 从 NodeJS 中作为子进程生

随机推荐

  • 14.卷积神经网络的可视化与理解

    CNN的可视化与理解 在之前我们讨论了一系列内容 注意力机制 xff1a 注意力如何成为我们可以添加到当前的神经网络中的机制 xff0c 让模型在不同的时间步长上专注于输入的不同部分 xff0c 然后构建通用自注意力层 xff0c 用来构建
  • docker常用镜像命令总结,包含将docker镜像推送到dockerhub,全程无废话

    01 查看镜像 docker images span class token punctuation span root 64 i rbj0ryi8 span class token punctuation span span class
  • 无人机-2多翼无人机的结构与硬件

    一 多旋翼无人机的机体布局 1 多旋翼无人机的结构布局 动力输出轴上判断几轴飞行器 动力轴越多 xff0c 飞行稳定性相对越好 xff0c 可靠性相对降低 xff08 模块多 xff0c 隐患多 xff09 常规固定式 xff1a 分为带边
  • 无人机-4无人机结构设计

    一 需求分析 概述 xff1a 设计上的纸面参数做到一个切实用到飞机上的一个设计参数的一个过程 1 飞机的任务是什么 针对设计目的有不同结构需求的 物流无人机 xff1a 仓储位置 摄影无人机 xff1a 拍照 xff0c 搭载稳定的三轴云
  • ubuntu20.04安装ros noetic以及创建ros工作空间catkin_ws

    章节目录 一 安装ROS1 设置下载源2 安装依赖项3 安装ros4 配置环境变量5 运行ROS6 rosdep初始化7 安装rosinstall8 启动例子 xff08 小海龟 xff09 二 创建ROS工作空间 catkin ws1 创
  • MATLAB学习笔记(注释超详细)

    1 matlab数据类型转换 xff0c 例 xff1a uint8函数将数值数据转换成无符号8位整数 xff0c int8将数值数据转换为带符号8位整数 x 61 int8 129 因为带符号8位整型数的最大值为127 xff0c 129
  • 一、SLAM算法与导航实战(毕设开源分享)

    目录 1 开源分享 2 建图结果 2 1 多观测点环境结果 xff1a 2 2 长廊环境建图结果 xff1a 1 开源分享 今天终于完成了毕设项目的落地和算法实现 xff0c 比较感叹这里面的坑 xff0c 不仅仅是Linux ROS xf
  • 【3D视觉工坊】第二期公开课:相机标定的基本原理与经验分享 笔记

    课程链接 xff1a 3D视觉工坊 第二期公开课 xff1a 相机标定的基本原理与经验分享 哔哩哔哩 bilibili
  • writeup-RrEeGgEeXx EKOPARTY

    State of the art on authentication mechanisms 题目如上 xff0c 下载完附件 xff0c 扔进IDA xff0c 发现又是c 的 于是又扔进reflector反编译一下 分析了下发现有一个对字
  • FreeRTOS 学习笔记(自用)

    前言 xff1a 本文章用于记录学习FreeRTOS xff08 韦老师 xff09 期间的笔记以及一些个人理解 xff08 带完善 xff09 一 学习内容 xff1a 1 裸机及操作系统 2 FreeRTOS功能及其实现原理 3 线程通
  • 《单片机串口》—将传感器获取的数值在上位机显示

    这里写目录标题 1 单片机通过串口发送单个字符2 单片机通过串口发送字符串3 单片机将传感器获取到的数字值发送到上位机 之前在学蓝牙通信的时候如何将单片机获取到的传感器的数值发送到上位机遇到了不少的问题 由于数据的发送一种是字符格式一种是
  • 三天让车立起来!STM32平衡车入门PID —— 第三天(PID调参)

    说明 xff1a 本文章适用于STM32初学者 xff0c 想完成一个好玩且有深度的项目但不知道从何下手的同学 PID调参是平衡车的精髓所在 xff0c 参数整定的好坏直接影响到平衡车的平衡效果 有的车平衡时来回晃而参数选的好的车就能稳稳地
  • PCB笔记-原理图

    1 学习路线 画PCB追求的是效率 xff01 xff01 xff01 2 元件库的创建 2 1 元件符号 元件符号是元件在原理图上的表现形式 xff0c 主要由元件边框 xff0c 管脚 xff08 包括管脚序号和管脚名称 xff09 x
  • FreeRTOS任务调度启动流程

    FreeRTOS任务调度启动流程 PrefacePreviewAttentionFreeRTos目录结构解释 FreeRTos任务调度一 vTaskStartScheduler函数中需要注意的细节二 xPortStartScheduler函
  • 正点原子视频学习笔记—Verilog下按键消抖, 实现LED灯的点亮和熄灭

    正点原子视频学习笔记 Verilog下按键消抖 实现LED灯的点亮和熄灭 在学习FPGA的基础阶段会有按键控制LED灯亮灭的实验 xff0c 其中避免不了要对按键进行消抖处理 xff0c 以及LED的控制模块 xff0c 和顶层例化模块 本
  • 蚂蚁4面和体检都过了,最后却因为背调挂了导致无业,网友:没养个备胎?

    因为背调而与offer失之交臂的求职者并不是个例 xff0c 最近看到一位程序员发帖称 xff0c 自己蚂蚁4面和体检都过了 xff0c 最后却因为合并简历而挂了 着实令人可惜 原贴如下 xff1a 楼主在评论区解释称 xff0c 自己已经
  • Linux C 下的socket网络编程

    1 socket简介 在我们常用的网络通信中 xff0c socket是最常用的一种 xff0c socket编程也称套接字编程 xff0c 下面我们将对socket编程进行相关讲解 xff0c 其中包括服务器与客户端通信讲解 xff0c
  • 关于stm32结构体

    刚刚看到stm32结构体 xff0c 这个部分还是很重要的 xff0c 做一个小结总结一下 正常标注结构体形式 struct GPIO 成员列表 这样就定义了一个结构体 xff0c 但是当需要定义变量时就需要 struct GPIO GPI
  • stm32f103c8t6 + 串口打印 + dh1

    1 首先新建一个c8t6的工程 如果使用本程序的话 xff0c 可直接运行 xff0c 亲测有效 xff0c 如果想移植功能的同学继续往下看 程序里面的注释也写的很清楚 2 串口打印 首先拿到usart c和usart h文件放置自己的工程
  • 【VIBE: Video Inference for Human Body Pose and Shape Estimation】论文阅读

    论文连接 xff1a https arxiv org pdf 1912 05656 pdf 代码连接 xff1a https github com mkocabas VIBE Video Inference for Human Body P