点击上方“3D视觉工坊”,选择“星标”

干货第一时间送达

作者 | VVingerfly

编辑 | 陈大鑫

3D人体姿态和形状估计在最近几年是一个重要的研究热点,但大部分工作仅仅关注人体部分,忽略了手部动作,港中文联合Facebook AI研究院提出了一种从单张图片同时估计人体姿态和手部动作的新方法,展示效果好似科学怪物。

如下图左下和右下所示,易看出本文提出的方法姿态估计效果更好。

1

介绍

本文作者提出了一个3D人体全身运动捕捉系统 FrankMocap,能够从单目视频同时估计出3D人体和手部运动,在一块GeForce RTX 2080 GPU上能够达到 9.5 FPS。作者提到 “FrankMocap” 是对现代普罗米修斯 (The Modern Prometheus)中科学怪人 (Frankenstein) 的怪物的致敬。

人们每天会拍大量的日常活动视频上传到网络,如果有一种基于普通摄像头的运动捕捉系统,能够捕捉视频中人体的运动,将在人机交互、人工智能、机器人等众多方向有所应用。

同时捕捉人体和人手的运动对这些应用同样重要,但人手只占身体的很小一部分,要想直接捕捉两者的运动是一个很难的问题。当前的大部分相关工作都只顾及图片中人体的3D姿态,忽略图片中人手的动作。有部分工作关注从单张图片同时估计人体的全身运动,但这些工作都是基于优化的方法,将参数化的人体模型拟合到图像信息,速度较慢不适合实时应用。

这篇文章提出了一个快速准确的方法来从RGB图片或视频估计人体和人手的姿态。作者采用 SMPL-X 人体模型,首先通过两个回归模块来从输入图片分别估计人体和人手的3D姿态,然后再通过一个整合模块将预测的结果组合在一起,得到最终的3D全身人体。文章代码将会开源。

项目主页:https://penincillin.github.io/frank_mocap

项目论文:https://arxiv.org/pdf/2008.08324.pdf

2

方法

作者使用 SMPL-X 人体模型,给定一张彩色图片,通过两个网络模块分别预测手部姿态和人体姿态,然后再通过整合模块将手和身体组合在一起,得到最终的3D全身模型,整个流程如下图所示。

SMPL-X 模型

SMPL-X 人体模型是一个参数化的3D人体模型,是 SMPL 模型的扩展,能够通过低维的人体形状和姿态参数的组合来表达不同形状和姿态的3D人体,其与 SMPL 模型的最大差异在于 SMPL-X 模型通过引入额外参数,能够同时表达人体的手指运动和面部表情。

SMPL-X 人体模型可以用如下数学公式来表达:

这里是人体的整体旋转,是人体姿态相关的变形参数,  是人体和人手形状相关的参数。作者将姿态参数拆分为人体相关的参数和左右手相关的参数,所以。所有的姿态参数由轴角表达,是某关节点相对于其父节点的相对旋转。最终得到的 SMPL-X 人体模型包含 10,745 个顶点。人体关节点的3D位置可以通过在顶点上作用关节点回归矩阵 得到:

这里。人手模型来自 SMPL-X 的手部,定义为

其中是手的姿态参数,是手的形状参数,是手的整体旋转。最终手部的网格包含 788 个顶点,即,其中    的一个子集。同样手部关节点的位置可以通过关节点回归矩阵计算得到

这里包含一个手腕关节点、15个手指关节点和5个指尖点。手部网格和骨架层级关系如下图所示:

3D手部估计模块

手部预测模块基于一个端到端的神经网络,直接回归手部姿态参数,其定义如下:

是从输入图像中截取的手部区域图片块,是弱透视投影的相机参数,能够将手部模型投影到输入图像。

网络架构

手部模块的架构如下图所示,其由一个编码器和解码器组成,编码器使用 ResNet-50,将手部图像块作为输入输出编码的图像特征,解码器由全连接层构成,从图像特征回归手部模型参数。

损失函数

手部姿态和形状估计的网络训练时使用的损失函数主要由4个部分组成:

其中是在有3D人体参数时的关节点轴角损失:

是3D关节点标注数据时添加的关节点损失:

是2D关节点损失,其对预测相机参数非常重要:

是手部形状参数的正则项,用于惩罚不自然的手部形状。

3D手部姿态数据集

3D手部姿态数据集通常是在受限的实验室环境下采集的,用这些数据集训练的模型经常会遇到过拟合的问题,在室外数据表现较差。

作者注意到,现有3D人体姿态估计方法表明利用不同的数据集可以大大提高模型的泛化能力,因此作者使用尽可能多的公开数据集来训练手部姿态估计网络,包括 FreiHAND、HO-3D、MTC (Monocular Total Capture) 、STB (Stereo Hand Pose Tracking Benchmark)、RHD (Rendered Hand Dataset)、MPII+NZSL 数据集。由于部分数据集的手部骨架与文字不同,作者以中指长度为参考,对这些数据集的3D手部关节点缩放到与文章手部模型近似一致的尺寸,并将关节点顺序按照文章的层次结构重新排列。

3D人体估计模块

3D人体姿态和形状估计网络参考自 SPIN 的网络结构,SPIN 是一个从单张图片估计 SMPL 人体模型参数的 SOTA 的方法,作者将其输出从 SMPL 的参数修改为 SMPL-X 模型参数,并对网络进行了微调。3D人体姿态估计模块的定义如下

其中是从输入图像中截取的人体部分,分别是人体全局旋转、人体姿态参数和人体形状参数。同样这里使用弱透视投影相机参数 

损失函数和数据集

3D人体估计网络使用了 Human3.6M 数据集和 EFT 数据集,其中 EFT 数据集包含 COCO 和 MPI 中的人体图片及其对应的 SMPL 模型参数。由于 SMPL 的形状参数和 SMPL-X 不兼容,作者在训练时只使用这些数据集的人体姿态参数。损失函数和 SPIN 原始论文中使用的一样,但是没用使用 SMPLify 损失部分。

全身整合模块

整合模块将3D人体和手部模块输出的结果组合在一起得到 SMPL-X 模型的参数表达,作者提供了两种方法来整合:

  1. 复制粘贴方式:直接将人体和手部组合起来,速度快;

  2. 优化拟合方式:使用2D关键点来优化人体参数以得到更加准确的结果,但速度较慢。

复制粘贴组合

由于人体和手部模块的输出与 SMPL-X 人体模型的参数是兼容的,因此可以很简单地将两者合并在一起。只需将左右手从世界坐标系变换到人体模型腕关节的局部坐标系下即可。

优化拟合方式

优化拟合方式通过优化人体模型的参数来拟合人体的2D关键点,以得到与图片更加对齐、更加准确的人体网格。优化的目标函数如下:

这里是3D关键点的投影与目标图像中检测的2D关键点之间的投影误差,是一个先验项,使得人体的姿态和形状参数处在一个合理的范围。作者参考 EFT[3] 文章中的方法,通过微调网络来最小化目标函数,只需迭代少数几次便能得到不错的结果。

下图展示了复制粘贴组合和优化拟合组合两种方法的结果对比,可以看到优化后人体的姿态更加准确,但速度会有所下降。

3

结果

下面表格展示了文章方法和其他方法的运行时间对比,文章的复制粘贴组合方式在 GeForce RTX 2080 GPU 上能够达到9.5FPS,优化的方法也有0.95FPS,均高于 SMPLify-X 和 MTC 方法。

下图展示了文章方法在手部姿态估计方面与当前 state-of-the-art 的方法的比较,文章方法的结果更加准确,与图片更加一致。

下图展示了文章方法和 Monocular Total Capture,SMPLify-X 结果的比较,文章方法估计的人体、人手姿态更加准确,而且速度会快很多。

更多演示结果

不如跳舞~

熟练地玩抽纸~

‍倒杯水喝~

参考论文

  1. FrankMocap: A Fast Monocular 3D Hand and Body Motion Capture by Regression and Integration. Yu Rong, Takaaki Shiratori, Hanbyul Joo. ArXiv, 2020.

  2. Expressive Body Capture: 3D Hands, Face, and Body from a Single Image. Georgios Pavlakos, Vasileios Choutas, Nima Ghorbani, Timo Bolkart, Ahmed A. A. Osman, Dimitrios Tzionas, and Michael J. Black. CVPR, 2019.

  3. Exemplar Fine-Tuning for 3D Human Pose Fitting Towards In-the-Wild 3D Human Pose Estimation. Hanbyul Joo, Natalia Neverova, Andrea Vedaldi. ArXiv, 2020.

本文仅做学术分享,如有侵权,请联系删文。

下载1

在「3D视觉工坊」公众号后台回复:3D视觉即可下载 3D视觉相关资料干货,涉及相机标定、三维重建、立体视觉、SLAM、深度学习、点云后处理、多视图几何等方向。

下载2

在「3D视觉工坊」公众号后台回复:3D视觉github资源汇总即可下载包括结构光、标定源码、缺陷检测源码、深度估计与深度补全源码、点云处理相关源码、立体匹配源码、单目、双目3D检测、基于点云的3D检测、6D姿态估计汇总等。

下载3

在「3D视觉工坊」公众号后台回复:相机标定即可下载独家相机标定学习课件与视频网址;后台回复:立体匹配即可下载独家立体匹配学习课件与视频网址。

重磅!3DCVer-学术论文写作投稿 交流群已成立

扫码添加小助手微信,可申请加入3D视觉工坊-学术论文写作与投稿 微信交流群,旨在交流顶会、顶刊、SCI、EI等写作与投稿事宜。

同时也可申请加入我们的细分方向交流群,目前主要有3D视觉CV&深度学习SLAM三维重建点云后处理自动驾驶、CV入门、三维测量、VR/AR、3D人脸识别、医疗影像、缺陷检测、行人重识别、目标跟踪、视觉产品落地、视觉竞赛、车牌识别、硬件选型、学术交流、求职交流等微信群。

一定要备注:研究方向+学校/公司+昵称,例如:”3D视觉 + 上海交大 + 静静“。请按照格式备注,可快速被通过且邀请进群。原创投稿也请联系。

▲长按加微信群或投稿

▲长按关注公众号

3D视觉从入门到精通知识星球:针对3D视觉领域的知识点汇总、入门进阶学习路线、最新paper分享、疑问解答四个方面进行深耕,更有各类大厂的算法工程人员进行技术指导。与此同时,星球将联合知名企业发布3D视觉相关算法开发岗位以及项目对接信息,打造成集技术与就业为一体的铁杆粉丝聚集区,近2000星球成员为创造更好的AI世界共同进步,知识星球入口:

学习3D视觉核心技术,扫描查看介绍,3天内无条件退款

圈里有高质量教程资料、可答疑解惑、助你高效解决问题

觉得有用,麻烦给个赞和在看~  

科学怪物!3D人体全身运动捕捉系统,港中文联合Facebook出品相关推荐

  1. 基于Unity引擎利用OpenCV和MediaPipe的面部表情和人体运动捕捉系统

    基于Unity引擎利用OpenCV和MediaPipe的面部表情和人体运动捕捉系统 前言 项目概述 项目实现效果 2D面部表情实时捕捉 3D人体动作实时捕捉 补充 引用 前言 之前做的一个项目--使用 ...

  2. 用多个Kinect体感摄像头实现真正360度运动捕捉系统

    以前我在这里写过博客文章,研究用微软的Kinect体感摄像头做运动捕捉,当时设计了两种方案,一种是用NiTE中间件,在它的基础上改进了一点点,但处理360度转身主要靠插值,说白了就是靠猜测,效果不是很 ...

  3. 动态多尺度图表达3D人体骨架运动,实现精准预测效果超SOTA

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 现有的基于3D人体骨架的运动预测方法往往不考虑身体不同部位之间的关 ...

  4. CVPR2020 Oral | 动态多尺度图表达3D人体骨架运动,实现精准预测效果超SOTA

      新智元推荐   编辑:白峰 [新智元导读]上海交大.三菱电机实验室联合提出将人体骨架建模为一个可学习的多尺度图,并且对不同层次的特征,多尺度图呈现动态变化.通过学习综合的多尺度特征表达,DMGNN ...

  5. 3D动作捕捉实施推流虚拟人物角色动画的实时运动捕捉系统

    一个面向VTuber/Live/AR/VR的跨平台实时视频驱动的动作捕捉和3D虚拟角色渲染系统. 虚拟角色指现实中不存在的人物角色等创作性作品中虚构的人物. 洛天依与"翎",有一个 ...

  6. 三维姿态捕捉_BTS 三维运动捕捉系统(POSEIDON 脊柱测评版)

    系统特点 1.3D 动态测量 . 2.BTS POSEIDON 系统通过三至四个红外摄像头捕捉患者在测试过程中的运动轨迹,打破了常规静态测量的局限性. 3.系统软件自带测试协议,可以自动计算相关参数( ...

  7. 无限想象空间,用Python玩转3D人体姿态估计

    前言 姿态估计,一直是近几年的研究热点. 它就是根据画面,捕捉人体的运动姿态,比如 2D 姿态估计: 再比如 3D 姿态估计: 看着好玩,那这玩应有啥用呢? 自动驾驶,大家应该都不陌生,很多公司研究这 ...

  8. Python安装FrankMocap实现3D人体姿态估计

    FrankMocap 是港中文联合 Facebook AI 研究院提出的3D 人体姿态和形状估计算法. 不仅仅是估计人体的运动姿态,甚至连身体的形状,手部的动作都可以一起计算出来. 算法很强大,能够从 ...

  9. 无限想象空间,用Python就能玩的3D人体姿态估计

    击上方"Python爬虫与数据挖掘",进行关注 回复"书籍"即可获赠Python从入门到进阶共10本电子书 今 日 鸡 汤 四月南风大麦黄,枣花未落桐叶长. 1 ...

最新文章

  1. MoreUnit与MoreUnit
  2. 设计模式(行为型模式)——访问者模式(Visitor)
  3. 平衡二叉树(AVL Tree)(左旋、右旋)
  4. JavaSE 7,8:确定特定文件系统支持的视图
  5. SSH:WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!
  6. Extjs 判断对象是非为null或者为空字符串
  7. direct3D 状态设置
  8. VB.NET 读写HTML 文件,VB.NET 简单介绍文件的读写----流类
  9. hadoop学习视频
  10. ca盘显示无证书_[江苏地税ca证书]江苏CA证书无法读取的问题地税的CA证书,插入后提示系统没有检测...
  11. 3D建模师是吃青春饭的吗?被高薪挖掘的建模人才,靠的是这个
  12. 基于c#的IE 代理服务器设置
  13. ie11不兼容window.createPopup的问题解决
  14. codeforces 1090B切题记录
  15. 《线性代数》随笔:积沙成塔
  16. 【技术邻】聊一聊材料应力-应变曲线
  17. gazebo添加模型仿真
  18. Docker容器进入的4种方式
  19. python学习第一课
  20. 添加超声波障碍图层并用rbx1仿真

热门文章

  1. 处女座与小姐姐(三)
  2. 标签云打印/微信小程序蓝牙标签打印开放平台功能
  3. HTML图像和超链接及文字颜色与排版
  4. html—显示照片(方法一)
  5. 算法笔记.胡凡 第11章 动态规划专题
  6. windows 7 UEFI 启动模式安装,解决win7 64 setup会提示GPT分区不支持的问题
  7. 高性价比降噪耳机推荐,2023年降噪耳机排行榜推荐
  8. 矩阵Kronecker(克罗内克)积
  9. CTFshow——web入门——sql注入
  10. 视频捕捉全教程(vc+vfw)