数字人基础 | 3D手部参数化模型2017-2023

楔子: 2017年年底的泰国曼谷, SIGGRAPH Asia会议上, 来自马普所的 Javier Romero, Dimitrios Tzionas(两人都是 Michael J. Black的学生)发布了事实性的手部参数化模型标准: MANO [1]。 MANO的诞生意味着 Michael J. Black团队在继人体参数化模型 SMPL后, 事实性的将能够表达人类动作和意图所涉及的主要部分(肢体, 脸部和手部)都用参数化模型来表达。有趣的是, 马普所的第一个主流的人脸模型 FLAME也在本次会议被提出,考虑到 SMPL的首秀出现在2015年的SIGGRAPH Asia(日本神户)上, 不得不说, 马普所的人体模型系列和亚洲有着不解之缘。

首先, 让我们回答一个问题, 为什么我们需要用到MANO参数化模型?

其答案也很简单: 结合深度学习和MANO参数化模型, 我们可以仅凭单张手部图像, 回归出其手部对应的2D/3D Pose, 从而可以在诸如UE5, Unity等引擎里进行手势的驱动。

注意: MANO本身是不可学习的, 即Optimization-Free的一个部分, 通常可以将其简化理解为网络中的一个Layer

如图所示, 任意给定一张手势图片, 可以通过神经网络(Phase I)来估计参数化模型MANO的系数(Pose, Shape, Camera, 这里的Camera指的是相机内参)来重建出手势图片对应的理想化的3D网格(Mesh)以及渲染出对应的效果(OverLay)。

在基于MANO参数化模型的手部姿态估计(hand pose estimation)中: 是给定一张手部特写图片,估计其姿态(2D/3D keypoint)的位置(通常是21个)。既然知道了关键点的数量,那么其定义的标准也是非常重要的:

如图所示, 从手腕处的0号节点开始算, 一共有21个手部的关键点/landmark来表征手部的姿态。

主流的手部姿态估计的技术方案是使用马普所于2017年提出的MANO参数化模型, 在此基础上回归3D坐标, 这是因为MANO有很合理的结构以及定义好的前向动力学树。并且由于马普所在人体人脸人手上的权威性,很多研究都是基于MANO来做的, 所以这进一步导致学术界和工业界对MANO依赖的加深。

简单的初步介绍完毕后,让我们进入正题!Tips:01部分内容主要来自我在2021年写的博客文章[2]


近年来, CVPR, ECCV, ICCV的手部姿态估计论文,基本或多或少的都是model-based, 即基于参数化模型的方案。而其中,最主流的参数化模型就是Javier Romero,Dimitrios Tzionas, Michael J. Black于2017年发表于Siggraph Asia的《Embodied Hands: Modeling and Capturing Hands and Bodies Together》[1].

这篇文章也是在马普所和工业光魔联合提出的《SMPL: A Skinned Multi-Person Linear Model》[3](下文统一简称为SMPL) 的基础上,提出了针对手部的参数化模型,其主要目的是:

To cope with low-resolution, occlusion, and noise, we develop a new model called MANO (hand Model with Articulated and Non-rigid def Ormations) [1].

其目的主要是针对从图像中恢复3D手部姿态的困难情况(低分辨率、遮挡和噪声), 从而提出的一个新的手部参数化模型。

左: InterHand2.6M中的双手交互导致的遮挡(occlusion)和相机阵列带来的噪声(noise), 中: FreiHand中手物交互产生的遮挡(occlusion), 右: RHD合成数据集中手部分辨率低(low-resolution)

[4]

从我个人的理解,MANO这个模型的作用,相当于在图片(2D) -> 3D Hand pose中间加了一个过渡表示(或者说加上了强的先验prior),从而能够使得神经网络可以直接预测遮挡, 低分辨率和噪声影响下的图像的手部姿态

用不带先验信息的方法,即model-free的方法,对于这些情况的姿态估计效果通常就会失败。而自从有了参数化模型MANO,由于MANO是由

“1000 high-resolution 3D scans of hands of 31 subjects in a wide variety of hand poses.”

得到,其中包括抓握,不良光照等场景。

MANO所用的数据采集系统

MANO采集手势的示例

所以,根据18年以来的众多手部姿态分析工作表明:使用MANO参数化模型,对于估计出一个合理且准确的手部姿态,有至关重要的作用。

需要注意的是,由于手部是分段刚性的(articulated objects), 因此手部的建模还是有一定难度的,马普所用了来自美国亚特兰大的3dMD公司[5]的扫描设备,花费不菲… 采集设备的视频如下所示:

那么,MANO作为一个 3D参数化模型,其参数都有哪些呢?

  • 778个vertices 1538个faces,并根据 16个 关键点 +从vertices中获取 5个手指指尖的点, 构成完整的手部链条,或者叫做前向动力学树(forward kinematic tree)。
  • 只包含手掌和5根手指,区分左右手,但是不包含手腕部分

示意图来自DART(NeurIPS 2022), 原始的MANO模型只有粉色部分, 即MANO模型不包含手腕部分。


从2017年以来, 手部参数化模型的事实性标准就是MANO。其Mesh层面的属性, 如Vertex, Edge和Face等, 基本没什么太大的变化,而后续的手部参数化模型,如HTML,NIMBIE以及DART,主要是从纹理和肌肉等角度对MANO进行了扩充:因为原始的MANO不像人脸参数化模型BFM一样, 缺乏显式的包含纹理基(Texture Basis),因此无法表征复杂的,高质感的纹理

MANO(SIGGRAPH Asia 2017), HTML(ECCV 2020), NIMBLE (SIGGRAPH 2022), DART (NeurIPS 2022)

  • HTML[6]
HTML: A Parametric Hand Texture Model for 3D Hand Reconstruction and Personalization

HTML是第一个带贴图的手部参数化模型,是由当时在马普所实习的Neng Qian(Christian Theobalt组)做的,他现在在米哈游做一些和游戏相关的研究和开发。

HTML的本质上就是在MANO的基础上加了一个表示纹理的appearance basis,此basis的获得是由PCA获得,值得注意的是,此模型和MANO兼容。

HTML纹理基的示意图

虽然从创新性上来说,HTML是非常不错的,但是其恢复出来的纹理质量还是和真实的数据不够贴近:包括没有真实感的掌纹,指甲,汗毛等等。

基于HTML重建出来的带贴图的Mesh的OverLay效果图,可以看出颜色并不是和给定原图完全一致。

  • NIMBLE [7]
NIMBLE: A Non-rigid Hand Model with Bones and Muscles

NIMBLE是开创性的结合了肌肉和骨骼的参数化模型,其纹理和渲染的质量也非常的出色(借助了Blender引擎的Cycles渲染器)。其作者yuwei Li是上海科技大学Jingyi Yu的博士生, 是个很优秀的小姐姐。

NIMBLE示意图:包含肌肉,骨骼和高质量的纹理

此论文开创性的使用MRI数据来构建骨骼和肌肉,其纹理也是由Appearance model来控制, 渲染质量非常高。

NIMBLE的构建流程

美中不足的是,NIMBLE的模板mesh的Vertex, Faces数量远超标准版MANO, 使得其在实际应用中的开销变的很大(将近

倍的顶点数量差距),很难直接用于工业级的手部姿态估计任务

MANONIMBLE
77814,970

NIMBLE模板Mesh的统计信息,其顶点数量约为MANO的20倍。

  • DART[8]
DART: Articulated Hand Model with Diverse Accessories and Rich Textures

不同于HTML和NIMBLE的隐式构建Appearance Model来控制纹理,DART一力降十会,直接采用大量高质量的人工4K纹理贴图的办法,构建了300+高质量纹理贴图,并通过随机的offset的方式,模拟各种各样的肤色,伤痕,纹身,指甲颜色,并首次考虑了手腕和手指上常见的饰品,以期模拟合成数据对真实数据的逼近。

DART的300+高质量纹理贴图

通过对贴图的随机offset,可以模拟各种各样的肤色

由于饰品的存在,DART基于MANO做了一个手腕部分的扩展,从而能够模拟手表手链戴在手上的效果:

MANO template mesh v.s. DART template mesh

此外,DART还做了一个基于Unity的图形界面,可以允许用户自定义的生产自己的合成数据(任意视角、背景和光照),从而使得DART可以用于合成带有3D 精准Ground Truth的合成数据集(Synthetic data),可以用于提升神经网络在极端视角,光照等情况下的手部姿态估计能力。

DART还有一个合成数据集DARTset,里面的一些示意图如下所示,可以看出和真实场景拍摄的数据很相似。

DARTset的示意图

有趣的是,这三篇工作的第一作者都是90后的国人,这说明我们在手部参数化模型的研究中取得了很大的进展!

从左到右: Neng Qian (HTML), Yuwei Li (NIMBLE), Daiheng Gao (DART)


本节简单分为两个部分进行阐述, 一方面是手部参数化模型的主要应用场景:3D手部姿态估计和虚拟人驱动。另一方面则是一些3D手部模型最新的研究成果,基于Neural Radiance Field (简称NeRF)对手部进行隐式建模。

3.1 单目3D手部姿态估计

左: 3D重建Mesh贴合手部的结果; 右: 3D手部姿态估计驱动数字人做相同的手势

如图所示,3D手部姿态估计能够用于3D数字人的驱动,相比使用动作捕捉手套来说,基于参数化模型的手部姿态估计具有成本低,效率高的优势(只需要1个百元级的摄像头即可)。

这里,简单的根据3D手部姿态估计的方法类别进行了整理了表格,每个类别会找1~2个代表性的算法。

算法中稿年份特点
3D Hand Shape and Pose from Images in the WildCVPR2019, 牛津大学深度学习+MANO参数化的最直接回归3D手部姿态的经典方法
ObManCVPR2019, 马普所单目手物交互方法,并提出了一个数据集
I2L-MeshNetECCV2020, 首尔大学提出了image-to-lixel(line&pixel)的方法,不同于直接回归MANO参数,I2L-MeshNet是预测Mesh的每个vertex的1D heatmap
Mesh graphormerICCV2021, 微软结合图卷积和Transformer进行激进的per-vertex的姿态估计
MobReconCVPR2022, 快手结合图卷积(Graph CNN)和MANO进行手部参数化估计

3.2 隐式(Implicit)手部建模

随着NeRF[9]技术的发展,再加上人们对MANO的不满足: 顶点数少,不能够模拟精准的3D手势等原因,以Meta和小冰为代表的团队进行了3D手部隐式建模(或者称为multi-view hand reconstruction)的研究:

  • LISA (CVPR2022)[10]
LISA: Learning Implicit Shape and Appearance of Hands

LISA是基于InterHand2.6M[4]搭建的,是Enric Corona在Meta实习期间的工作。因为InterHand2.6M有手部图片各个视角的相机参数等信息,这满足了重建NeRF的基本条件。虽然LISA能够隐式的通过NeRF,表达hand shape and appearance,但是其对于Pose的控制是不行的。

LISA概览图

  • HandAvatar (CVPR2023)[11]
HandAvatar: Free-Pose Hand Animation and Rendering from Monocular Video

HandAvatar是Xingyu Chen在小冰的第一篇工作,主要是解决LISA无法解决Pose的问题提出的,此外,由于LISA没有开源,HandAvatar的开源有效的弥补了隐式3D手部建模领域的空白。不过同LISA一样,其隐式场所用的数据也是来自于InterHand2.6M数据集。

HandAvatar示意图

HandAvatar的概览图图下,由于手部的可变形性太强,所以对手这种360度deformable object直接学习NeRF效果不太理想,HandAvatar提出了结合MANO和NeRF的方案,极大的解决deformable object在NeRF场的occupancy变化问题。

HandAvatar概览图

熟悉的作者合影环节,左边是来自西班牙 IRI-UPC的Enric Corona, 右边是在小冰当研究员的Xingyu Chen。

左: Enric Corona, 右: Xingyu Chen


手部参数化模型的出现至今短短6-7年,无论是在应用还是深入探索上,都取得了非常大的进展。希望在未来,能有更多的研究者加入进来,对一些目前重点但还未解决的问题进行研究:比如Re-lighting, 双手交互等等问题。

感谢阅读,如有错误烦请指正,本文完^.^

参考

  1. ^abcEmbodied Hands MANO
  2. ^基于参数化模型(MANO)的手势姿态估计---全面剖析 基于参数化模型(MANO)的手势姿态估计---全面剖析_mano模型-CSDN博客
  3. ^SMPL: A Skinned Multi-Person Linear Model SMPL
  4. ^aInterHand2.6M (ECCV2020) https://github.com/facebookresearch/InterHand2.6M
  5. ^3dMD 3dMD… Welcome to the 4D Revolution.
  6. ^HTML (ECCV2020) Parametric Hand Texture Model for 3D Hand Reconstruction and Personalization
  7. ^NIMBLE (SIGGRAPH 2022) https://github.com/reyuwei/NIMBLE_model
  8. ^DART (NeurIPS 2022) DART
  9. ^NeRF: Neural Radiance Fields NeRF: Neural Radiance Fields
  10. ^LISA  https://arxiv.org/pdf/2204.01695.pdf
  11. ^HandAvatar: HandAvatar

详见 : 数字人基础 | 3D手部参数化模型2017-2023 - 知乎

数字人基础 | 人脸3DMM的前世今生 - 知乎 

数字人基础 | 人体参数化模型SMPL的发展史 - 知乎

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/455243.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

信息系统项目管理师--沟通管理

IT 项⽬成功有关的最重要的四个因素是:主管层的⽀持、⽤户参与、有经验的项⽬经理和清晰的业务⽬标 项⽬沟通管理是确保及时、正确地产⽣、收集、分发、存储和最终处理项⽬信息所需的过程 项⽬沟通管理由两部分组成:⼀是制定策略,确保沟通对…

GUI编程--PyQt5--QTabWidget

文章目录 组件使用信号样式设置 组件使用 QTabWidget 页签 信号 self._ui Ui_Sub() self._ui.setupUi(right) # 切换tab页 self._ui.tabWidget.currentChanged.connect(self.tab_slot)def tab_slot(self):cur_index self._ui.tabWidget.currentIndex()tab_name self._ui…

微信小程序小案例实战

.wxml: <view class "title">狂飙经典语录 </view> <view class"out"><block wx:if"{{listArr.length}}"> <!-- bloock不会影响排版--><view class"list"><view class"row" wx:…

unicloud delete 删除

delete 删除 unicloud 删除大概分为两种 一种是 通过指定文档ID删除 语法如下 collection.doc(_id).remove()还有一种是条件查找文档然后直接批量删除 语法如下 collection.where().remove()反正总归是先查找到指定数据,然后使用remove()函数删除 示例如下 collection.doc(…

软考高级:需求变更管理过程概念和例题

作者&#xff1a;明明如月学长&#xff0c; CSDN 博客专家&#xff0c;大厂高级 Java 工程师&#xff0c;《性能优化方法论》作者、《解锁大厂思维&#xff1a;剖析《阿里巴巴Java开发手册》》、《再学经典&#xff1a;《Effective Java》独家解析》专栏作者。 热门文章推荐&am…

【目标检测经典算法】R-CNN、Fast R-CNN和Faster R-CNN详解系列一:R-CNN图文详解

学习视频&#xff1a;Faster-RCNN理论合集 概念辨析 在目标检测中&#xff0c;proposals和anchors都是用于生成候选区域的概念&#xff0c;但它们在实现上有些许不同。 Anchors&#xff08;锚框&#xff09;&#xff1a; 锚框是在图像中预定义的一组框&#xff0c;它们通常以…

区间异或和异或区间最大值异或区间最小值 --- 题解 --- (字典树好题)

区间异或和异或区间最大值异或区间最小值 &#xff1a; 题目大意&#xff1a; 思路解析&#xff1a; 题目查询的是区间异或和 ^ 最小值 ^ 最大值&#xff0c;如果我们确定了最小值和最大值&#xff0c;[l,r]&#xff0c;假设a[l]是最小值&#xff0c;a[r]是最大值&#xff0c…

【漏洞复现】金和OA viewConTemplate.action RCE漏洞

免责声明&#xff1a;文章来源互联网收集整理&#xff0c;请勿利用文章内的相关技术从事非法测试&#xff0c;由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果及损失&#xff0c;均由使用者本人负责&#xff0c;所产生的一切不良后果与文章作者无关。该…

【linux中cd指令使用】cd进入与退出路径

【linux中cd指令使用】cd如何进入与退出路径 1、cd进入指定路径&#xff0c;比如我要进入下面这个路径中去运行setup.py文件&#xff0c;如果我不跳转到该路径下直接运行&#xff0c;会报错找不到该文件 cd空格路径&#xff0c;即可跳转到该路径 cd /public2/xxx/tiny-cuda…

【零基础学习05】嵌入式linux驱动中platform与设备树基本实现

大家好,为了进一步提升大家对实验的认识程度,每个控制实验将加入详细控制思路与流程,欢迎交流学习。 今天主要学习一下,基于总线、设备和驱动进行匹配的平台驱动模型,这次将采用设备树的platform设备与驱动的编写方法,目前绝大多数的Linux内核已经支持设备树,这次主要来…

MyBatis-Plus学习记录

目录 MyBatis-Plus快速入门 简介 快速入门 MyBatis-Plus核心功能 基于Mapper接口 CRUD 对比mybatis和mybatis-plus&#xff1a; CRUD方法介绍&#xff1a; 基于Service接口 CRUD 对比Mapper接口CRUD区别&#xff1a; 为什么要加强service层&#xff1a; 使用方式 CR…

LEETCODE3

法一:记忆化递归 int climbStairsRecursive(int n, int* memo) {if (n < 2) {return n;}if (memo[n] > 0) {return memo[n];}memo[n] climbStairsRecursive(n - 1, memo) climbStairsRecursive(n - 2, memo);return memo[n]; }int climbStairs(int n) {int* memo (in…

2061:【例1.2】梯形面积

时间限制: 1000 ms 内存限制: 65536 KB 提交数:201243 通过数: 79671 【题目描述】 在梯形中阴影部分面积是150平方厘米&#xff0c;求梯形面积。 【输入】 (无&#xff09; 【输出】 输出梯形面积&#xff08;保留两位小数&#xff09;。 【输入样例】 &#xff…

redis在微服务领域的贡献,字节跳动只面试两轮

dubbo.registry.addressredis://127.0.0.1:6379 注册上来的数据是这样&#xff0c;类型是hash /dubbo/ s e r v i c e / {service}/ service/{category} 如 /dubbo/com.newboo.sample.api.DemoService/consumers /dubbo/com.newboo.sample.api.DemoService/providers has…

JOSEF约瑟 TQ-100同期继电器 额定直流电压220V 交流电压100V±10V

TQ-100型同期继电器 TQ-100同期继电器 ​ l 应用 本继电器用于双端供电线路的自动重合闸和备用电源自投装置中&#xff0c;以检查线路电压与母线电压的 相位差和幅值差。 2 主要性能 2 1采用进口集成电路和元器件构成&#xff0c;具有原理先进、性能稳定、可靠性高、动作值精…

mysql生成连续的日期

1.代码 例如&#xff1a;生成"2023-03-01"至"2023-03-10"之间的日期 WITH RECURSIVE date_range AS (SELECT "2023-03-01" AS date FROM dualUNION ALLSELECT DATE_ADD(date, INTERVAL 1 DAY) dateFROM date_rangeWHERE DATE_ADD(date, INTER…

windows系统提示msvcp120.dll丢失如何解决,如何找回dll文件?

如果你的电脑出现了关于msvcp120.dll丢失的情况那么大家一定要及时去解决msvcp140.dll丢失的问题&#xff0c;msvcp120.dll丢失可能会导致电脑出现各类的问题&#xff0c;今天就教大家四种关于msvcp120.dll丢失的解决办法&#xff0c;有效的解决msvcp120.dll丢失。 一、msvcp1…

php 对接Bigo海外广告平台收益接口Reporting API

今天对接的是Bigo广告reporting api接口&#xff0c;拉取广告收益回来自己做统计。记录分享给大家 首先是文档地址,进入到BIGO后台就能看到文档地址以及参数&#xff1a; 文档地址&#xff1a;https://www.bigossp.com/guide/sdk/reportingApi/doc?type1 接入这些第三方广告…

kangle一键安装脚本

Kangle一键脚本&#xff0c;是一款可以一键安装KangleEasypanelMySQLPHP集合的Linux脚本。 脚本本身集成&#xff1a;PHP5.38.2、MYSQL5.68.0&#xff0c;支持极速安装和编译安装2种模式&#xff0c;支持CDN专属安装模式。同时也对Easypanel面板进行了大量优化。 脚本特点 ◎…

十六、接口隔离原则、反射、依赖注入

接口隔离原则、反射、特性、依赖注入 接口隔离原则 客户端不应该依赖它不需要的接口&#xff1b;一个类对另一个类的依赖应该建立在最小的接口上。 五种原则当中的i 上一章中的接口&#xff0c;即契约。 契约就是在说两件事&#xff0c;甲方说自己不会多要&#xff0c;乙方会在…