3D人体重建方法漫谈

2023-11-08

转自:https://blog.csdn.net/Asimov_Liu/article/details/96442990

1 概述
2 模型匹配的方法
2.1SMPL(Skinned Multi-Person Linear model)模型
2.2 SMPLify
2.3 SMPL-X模型
3 Fusion Method(实时扫描融合)
3.1 Kinect Fusion
3.2 Dynamic Fusion
3.3 Body Fusion & Double Fusion
4 参考文献
1 概述
为了让计算机更能理解人类行为,参与人类的生活,与人类交互,获取人体3D姿态和形状就显得尤为重要。目前3D人体重建的方法按照使用的方法不同可以归纳为2类:其一利用已有的人体数据模型,直接从单张RGB图片或视频中恢复人体三维模型(模型匹配);二是用深度传感器直接采集深度信息,再用拼接的方式构建完整模型(Fusion 方式)。下面回顾这两种方法的研究现状。

2 模型匹配的方法
直接从RGB图片或者视频中恢复3D模型的难点在于人体的复杂性,清晰度,遮挡,衣服,照明以及2D推断3D姿态的固有歧义性等。该方法不需要用特定的深度传感器,应用范围广,对环境要求低,但目前构建的模型精度不高,特别是手部,面部等细节特征缺失明显,目前大多数方法是基于目标函数的最优化迭代,故求解速度较慢, 很难做到实时重构。

2.1SMPL(Skinned Multi-Person Linear model)模型
SMPL1模型是一种参数化的线性的3D人体建模方法,该方法可以进行任意的人体建模和动画驱动。这种方法可以模拟人的肌肉在肢体运动过程中的凸起和凹陷,因此可以避免人体在运动过程中的表面失真,可以精准的刻画人的肌肉拉伸以及收缩运动的形貌。

SMPL是通过已有的模型训练出的参数模型,模型参数包括,关节角参数θ(即人体整体运动位姿的24个关节的欧拉角,每个关节在空间中有Pitch,Roll,Yaw3个自由度,故共有75个参数)和形状参数β(人体的高矮胖瘦、头身比例等 10个参数),通过改变上述变量可以得到不同形状和姿态的3D人体模型, SMPL模型的表示形式如下:


2.2 SMPLify
SMPLify 2 在 2016年 由 Bogo et al. 3提出,它能将一张 2D 人像转化为对应的 3D 模型,并在包含众多复杂姿势的 Leeds Sports Pose Dataset 中取得了不错的成绩,SMPLify中首先使用基于CNN的方法DeepCut[4]来预测(自下而上)2D身体关节位置。然后用 SMPL(自上而下)拟合到2D关节,是第一种从单个无约束图像自动估计人体3D姿态及其3D形状的方法。

我们可以从以下的效果图2中观察到,SMPLify 在处理 2D 人像转化为对应的 3D 模型的问题上有优秀的表现,同时,它的最大优点在于不需要进行手动特征标注即可获得很好的转换效果(尽管如此,手动进行性别标注可以获得更好的效果)。当然,由于实际场景的复杂性,SMPLift也会出现错误的情况:不同四肢的高度重叠、在缺少深度信息情况下不同人物的重叠、无法正确分辨人物朝向。


2.3 SMPL-X模型
G. Pavlakos*4 等提出的SMPL-X5模型是针对SMPL模型的优化,增加了面部表情,手势姿态,脚的姿态以及人的性别,改进了重建出人体的3D细节,更能反应人体真实的3D结构。


3 Fusion Method(实时扫描融合)
利用单/多个深度相机的实时扫描拼接算法也逐步成为主流的3D人体重建方法。其中具有代表性的有Kinect Fusion, Dynamic Fusion 以及最新的Body Fusion和Double Fusion等。

3.1 Kinect Fusion
Kinect Fusion6 是一种利用Kinect相机的深度数据进行实时三维重建的技术, 开创了Fusion 系列方法的先河,并提出利用GPU+TSDF方法实时场景重建。具体步骤如下:

深度数据处理:利用相机内参将深度图转换成3D点云,并计算每个点的法向量;
相机追踪:将当前帧3D点云和由现有模型生成的预测的3D点云进行ICP匹配,计算得到当前相机的位姿;
深度数据融合:根据所计算出的当前相机位姿,使用TSDF点云融合算法将当前帧的3D点云融合到现有模型中;
场景渲染:是使用光线跟踪的方法,根据现有模型和当前相机位姿预测出当前相机观察到的环境点云,一方面用于显示,另一方面提供给步骤2)进行ICP匹配。


Kinect Fusion利用GPU的高并行,首次实现了稠密的实时三维重建,效果是非常稳定和优秀的。但是也存在缺点:1)只能针对刚体做3D 重建;2)对显卡内存要求较高,重建空间的大小取决于显存的大小。此外,重建的质量与Voxel的大小也有关,Voxel 尺寸越大,重建的模型越粗糙,而Voxel 尺寸设置较小会导致计算量增加。后续Kintinuous7 基于Kinect Fusion,在重建空间范围,相机位姿估计以及回环检测等方面做了优化。

3.2 Dynamic Fusion
Dynamic Fusion8 是在Kinect Fusion 的基础上,增加了非刚体的变形估计。 解决了非刚体的实时动态重建。


3.3 Body Fusion & Double Fusion
BodyFusion 9和Double Fusion 10均是由Tao Yu 等提出的利用单个深度相机实时捕捉人体运动和表面结构的方法。其中BodyFusion 提出了一种骨架嵌入式表面融合(SSF:skeleton-embedded surface fusion)的方法,基本上是在Dynamic Fusion 的基础上增加了人体骨骼的约束,基于骨架和图形节点之间的附带信息来共同解决骨骼和图形节点的形变问题。但是在快速运动以及初始人体姿态(骨骼)估计错误的情况下,该重构方法会失效。

DoubleFusion基于SMPL提出了“双层表面表示”模型对人体进行实时的3D重建,内层(inner body layer)是依据观测到的关节点和人体形状推测的SMPL模型,而外层(outer surface)则是利用深度信息融合出的人体表面,他们相互制约,相互融合和优化,最终生成完整的人体模型。当然Double Fusion还是存在局限,例如,当用户穿着较厚的衣服时,这个方案在捕捉过程中会将衣服的厚度都当成人的身体来计算,导致身体建模的误差出现;另外,目前的方案还无法处理人物对象之间的交互。


4 参考文献
http://smpl.is.tue.mpg.de/. ↩︎

http://smplify.is.tue.mpg.de/. ↩︎

Bogo F, Kanazawa A, Lassner C, et al. Keep it SMPL: Automatic estimation of 3D human pose and shape from a single image[C]//European Conference on Computer Vision. Springer, Cham, 2016: 561-578. ↩︎

Pavlakos G, Choutas V, Ghorbani N, et al. Expressive body capture: 3d hands, face, and body from a single image[C]//Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. 2019: 10975-10985. ↩︎

https://smpl-x.is.tue.mpg.de/. ↩︎

Newcombe R A, Izadi S, Hilliges O, et al. Kinectfusion: Real-time dense surface mapping and tracking[C]//ISMAR. 2011, 11(2011): 127-136. ↩︎

Whelan T, Kaess M, Fallon M, et al. Kintinuous: Spatially extended kinectfusion[J]. 2012. ↩︎

Newcombe R A, Fox D, Seitz S M. Dynamicfusion: Reconstruction and tracking of non-rigid scenes in real-time[C]//Proceedings of the IEEE conference on computer vision and pattern recognition. 2015: 343-352. ↩︎

Yu T, Guo K, Xu F, et al. Bodyfusion: Real-time capture of human motion and surface geometry using a single depth camera[C]//Proceedings of the IEEE International Conference on Computer Vision. 2017: 910-919. ↩︎

Yu T, Zheng Z, Guo K, et al. Doublefusion: Real-time capture of human performances with inner body shapes from a single depth sensor[C]//Proceedings of the IEEE Conference on Computer Vision and Pattern Recognition. 2018: 7287-7296. ↩︎
————————————————
版权声明:本文为CSDN博主「Asimov_Liu」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/Asimov_Liu/article/details/96442990

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

3D人体重建方法漫谈 的相关文章

随机推荐

  • Python科学计算的瑞士军刀——Anaconda 安装与配置

    Introduce Python是一种强大的编程语言 其提供了很多用于科学计算的模块 常见的包括numpy scipy和matplotlib 要利用Python进行科学计算 就需要一一安装所需的模块 而这些模块可能又依赖于其它的软件包或库
  • 数据库优化、索引【面试题】

    目录 数据库调优的目标 索引覆盖是什么 最左缀原则是什么 哪些因素可能会造成Mysql性能问题 如果sql语句需要使用联表查询我们如何进行优化呢 Mysql常见优化手段 你从哪些方面去优化你的数据库 一个页面响应很慢 你按照什么顺序去排查
  • java 微信请求_微信小程序请求微信api授权登录(Java后端)

    1 小程序端调用wx login 获取到微信返回的code临时凭证 2 小程序端调用我方的后台接口 Java后端调用微信的api 需要appId appSecret js code grant type authorization code
  • 简单易用的公司网页模板,助您快速建站

    在当今数字化时代 拥有一个高质量的公司网页是每个企业成功的关键 然而 对于那些没有技术专业知识的人来说 创建一个专业的网页可能是一项艰巨的任务 但是 现在有许多简单易用的公司网页模板可用于帮助您快速建站 下面 我们将简单地介绍一下如何利用这
  • 合并链表(C++)

    合并两个排序的链表 剑指Offer 25 问题描述 输入两个递增排序的链表 合并这两个链表并使新链表中的节点仍然是递增排序的 示例 输入 1 gt 2 gt 3 1 gt 3 gt 4 输出 1 gt 1 gt 2 gt 3 gt 4 gt
  • 【毕业设计】Python_基于DFM模型AHP算法的学生消费行为分析

    资源下载 https download csdn net download wouderw 87402799 1 分析学生消费行为的目的 1 分析学生的消费行为和食堂的运营状况 为食堂运营提供建议 2 根据学生的整体校园消费行为 选择合适的
  • DOTA: A Large-scale Dataset for Object Detection in Aerial Images 翻译

    DOTA 用于航空图像中目标检测的大规模数据集 原文 https arxiv org pdf 1711 10398 pdf 官网 https captain whu github io DOTA dataset https captain
  • 链栈的实现--C 语言版,详细讲解+代码实现

    顺序栈的实现 C 语言版 详细讲解 代码实现 例如 第一章 Python 机器学习入门之pandas的使用 文章目录 顺序栈的实现 C 语言版 详细讲解 代码实现 前言 一 结构体定义 二 操作步骤 1 初始化 2 判断栈是否为空 3 入栈
  • 悬铃木超级计算机,陈根:“九章”攻擂“悬铃木”,快一百亿倍的量子霸权

    文 陈根 2019年 谷歌率先宣布实现 量子霸权 量子优越性 一把把量子计算推入公众视野 激起量子计算领域的千层浪 就在近日 中国团队宣布量子计算机 九章 问世 挑战谷歌 量子霸权 实现算力全球领先 九章 作为一台76个光子100个模式的量
  • CCP学习二——通信流程

    1 概述 CCP通信按信息传输方式分为 POLLING 问答 和DAQ方式 按功能模式分为三种 SESSION 会话 CAL 标定 DAQ 查询 工作流程一般为 程序初始化完成后 通过SET S STATE设置节点当前工作状态 Sessio
  • 做研究与写论文【周志华教授】

    本文内容来自于周志华老师在2007年的报告 做研究与写论文 首先讲到研究与研发的区别 其主要区别在于 新 研究 发现新知识 发明新技术 研发 根据已有知识和技术进行研制 开发 科学研究可以扩展人类的知识 没有科学研究就没有技术进步 如何做研
  • 阿里云服务器ECS装好宝塔 但访问不了面板的解决方法

    下载宝塔桌面助手 然后连接你是阿里云服务器输入命令 Centos安装脚本yum install y wget wget O install sh http download bt cn install install sh sh insta
  • 2021-09-06 (1)

    关于计算机的硬盘序列号查找方法 最近应导师要求 帮他查一下计算机的硬盘序列号和Mac地址 咱也没查过 就网上冲浪了一番 结合自己部分使用体验总结为以下三种方法 1 wmic diskpart get serialnumber详细步骤如下 w
  • SpringBoot实现电子发票生成

    在本文中 我们将介绍如何使用Spring Boot开发一个仿真电子发票生成的应用程序 我们将会使用vue作为前端框架 后端使用Spring Boot 并借助微信二维码扫描功能来确保每个发票都是唯一 有效的 此外 我们还将介绍如何使用第三方库
  • Pandas DataFrame处理数据——列处理

    目录 一 插入数据为列 二 新增或修改列 三 对整列进行运算 四 用函数对列中的每个值进行处理 五 选择自己需要的列 六 修改列名 七 删除列 首先导入pandas库 创建一个数据框对象 import pandas as pd data p
  • Java 华为真题-选修课

    需求 现有两门选修课 每门选修课都有一部分学生选修 每个学生都有选修课的成绩 需要你找出同时选修了两门选修课的学生 先按照班级进行划分 班级编号小的先输出 每个班级按照两门选修课成绩和的降序排序 成绩相同时按照学生的学号升序排序 输入描述
  • fegin需要实现类_学习C++ 丨 类(Classes)的定义与实现!C/C++必学知识点!

    一 类 的介绍 在C 中 用 类 来描述 对象 所谓的 对象 是指现实世界中的一切事物 那么类就可以看做是对相似事物的抽象 找到这些不同事物间的共同点 如自行车和摩托车 首先他们都属于 对象 并且具有一定得相同点 和一些不同点 相同点如他们
  • C++ 中调用构造函数有返回值吗?

    C 中的构造函数 最近在面试中问道一个问题 C 中构造函数有返回值吗 例如 class A public A x 1 A int i x i private int x 官方解释在C 标准规定了构造 析构 自定义类型转换符不可以指定返回类型
  • 纠错编码算法——RS编码的Matlab实现

    纠错编码算法 RS编码的Matlab实现 纠错编码是一种将数据加入冗余信息以提高数据传输质量和容错能力的方法 而RS码则是其中一种经典的纠错编码算法 本文将介绍RS码的基本原理 并提供Matlab实现源代码 一 RS编码的原理 RS编码全称
  • 3D人体重建方法漫谈

    转自 https blog csdn net Asimov Liu article details 96442990 1 概述 2 模型匹配的方法 2 1SMPL Skinned Multi Person Linear model 模型 2