数字人基础 | 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的发展史 - 知乎

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

访问学者申请记|美国首所翻译博士点

N老师出国访学的目的一方面是开拓眼界,另一方面也是为完成翻译方向的博士论文创造更好的条件。最终我们获得美国纽约州立大学宾汉姆顿分校的邀请函,该校的“翻译研究和教学项目”(TRIP)是美国高校设立的第一个翻译博士学位项目&am…

JavaScript进阶3之参数按值传递、call,apply,bind和new的实现、继承的多种方式

JavaScript基础 参数按值传递按值传递共享传递 call、apply、bind和new的实现this软绑定硬绑定 call的实现第一步第二步第三步 apply的实现bind的实现返回函数的模拟实现传参的模拟实现构造函数效果的模拟实现构造函数效果的优化实现 new的实现初步实现 继承的多种方式&优缺…

(学习日记)2024.03.09:UCOSIII第十一节:就绪列表

写在前面: 由于时间的不足与学习的碎片化,写博客变得有些奢侈。 但是对于记录学习(忘了以后能快速复习)的渴望一天天变得强烈。 既然如此 不如以天为单位,以时间为顺序,仅仅将博客当做一个知识学习的目录&a…

计算机网络 —— 运输层

运输层 5.1 运输层概述 运输层的主要任务是,如何为运行在不同主机上的应用进程提供直接的通信服务。运输层协议又称为端到端协议。 根据应用需求的不同,因特网的运输层为应用层提供了两种不同的运输协议,即面向连接的TCP和无连接的UDP 5.2…

金融需要多样性,量化需要C++!通过本文,你可以知道:1、为什么是C++

通过本文,你可以知道: 1、为什么是C 2、Python的用武之地 3、量化C岗位薪酬水平 C VS Python 量化交易系统开发语言主要用C,也有人用Python。 但是从经验看,用C开发的量化交易系统能够让在系统中程序运行的速度更快。 量化交易…

Maya为模型添加细分数

文章目录 方法1 通道盒操作注意 方法2 添加分段操作注意 方法3 平滑操作 方法1 通道盒 操作 选中物体,选择通道盒/输入/点一下模型的名字/细分数,分别为长宽高添加细分 这相当于修改模型的底层数据,不会平滑模型,只会进行细分 …

瑞熙贝通实验室物联网管理平台新升级|支持远程开门视频监控与电源控制以及环境监测

瑞熙贝通实验室智能物联网管控平台:利用“互联网与物联网技术”有机融合,对实验室的用电安全监测、实验室环境异常监测(颗粒物监测、明火监测、可燃气体、烟雾监测、温湿度传感器、红外人体感应)、实验室人员安全准入、万物互联等…

爬虫案例1

通过get请求直接获取电影信息 目标页面: https://spa6.scrape.center/在network中可以看到是通过Ajax发送的请求,这个请求在postman中也可以直接请求成功,这只是一个用来练习爬虫的,没有达到js逆向的过程,需要通过分析js 代码来获…

Excel判断CD两列在EF两列的列表中是否存在

需求 需要将CD两列的ID和NAME组合起来,查询EF两列的ID和NAME组合起来的列表中是否存在? 比如,判断第二行的“123456ABC”在EF的第二行到第四行中是否存在,若存在则显示Y,不存在则显示N 实现的计算公式 IF(ISNUMBER…

淘宝基于Nginx二次开发的Tengine服务器

最近在群里看到这样一张阿里云网关报错的截图,我保存下来看了下 看到下面有 Tengine提供技术支持,这个Tengine是什么东西呢?我搜索了下似乎是淘宝在nginx的基础上自己改的Web服务器 Tengine还支持OpenResty框架,该框架是基于Ngin…

SAR ADC学习笔记(5)

高精度比较器 一、基于开环运放的比较器 OP开环应用时不需要考虑频率特性(相位裕度那些) ,不存在稳定性问题。 单级运放的时域响应 多级运放 二、Latch比较器 Latch比较器的速度 Latch比较器的噪声优化 三、高速高精度比较器 消除失调电压OFFSET OOS IOS

nRF52832——唯一 ID 与加密解密

nRF52832——唯一 ID 与加密解密 唯一 ID 概念唯一 ID 作用读取唯一 ID 唯一 ID 用于加密TEA 加密算法唯一 ID 的加密和解密 唯一 ID 概念 唯一 ID 作用 nRF52xx 微控制器提供一组 64 位的唯一 ID 号,这个唯一身份标识所提供的 ID 值对任意一个 nRF52xx 微控制器&…

展会邀约 | 加速科技将携重磅产品亮相SEMICON China 2024

SEMICON China 2024将于3月20日-3月22日在上海新国际博览中心隆重举行。展会期间,加速科技将携重磅产品高性能数模混合信号测试机ST2500EX、LCD Driver测试机Flex10K-L、高密度数模混合信号测试系统ST2500E、高性能数模混合信号测试系统ST2500A亮相此次行业盛会&…

WEB区块链开发组件 - KLineChart

当我们开发区块链的时候,实现K线可能大家会想到EChart,但是EChart做可能需要耗费大量工作量,实现出来的功能估计也是牵强着用。 这时候,我们可能网上会搜索到TradingView,可是这个组件虽然功能非常强大,但是还是要费事…

Android7.1 ANR error 弹窗处理

Android7.1 ANR error 弹窗处理 问题描述解决方法 郑重声明:本人原创博文,都是实战,均经过实际项目验证出货的 转载请标明出处:攻城狮2015 Platform: Rockchip OS:Android 7.1.2 Kernel: 3.10 问题描述 有时会用到第三方apk,内置到系统中&…

全国车辆识别代码信息API查询接口-VIN深度解析

我们先来介绍下什么是vin码,以及vin码的构成结构解析,汽车VIN码,也叫车辆识别号码,通俗可以理解为汽车的身份证号码。 VIN码一共分四大部分: 1~3位,是世界制造厂识别代号(WMI)&…

DevOps本地搭建笔记(个人开发适用)

需求和背景 win11 wsl2 armbian(玩客云矿渣),构建个人cicd流水线,提高迭代效率。 具体步骤 基础设施准备 硬件准备:一台笔记本,用于开发和构建部署,一台服务器,用于日常服务运行。 笔记本…

如何批量注册无数个电子邮箱

需求 最近我们需要批量注册无数个steam账号来做一些不可描述的事情,那么我们就需要先批量注册无数个电子邮箱Email 而且我们希望注册和接收邮件是可以通过脚本自动化的,最好是通过正常的API接口 什么叫正常的API接口?正常的API接口是指邮件…

Antd中s-table组件某字段进行排序

Antd中s-table组件某字段进行排序 提前说明&#xff0c;s-table组件包含分页等功能 <s-tableref"table":columns"columns":data"loadData"bordered:row-key"(record) > record.id"></s-table>而其中loadData为获取表数…

线性表的顺序存储实验

附 录 #include<stdio.h> #include<stdlib.h>typedef struct {double* data;int length; }Sqlist;void initSqlist(Sqlist* L, int n) {L->data (double*)malloc(n * sizeof(double)); if (L->data NULL){printf("内存分配失败\n");exit(1);}pri…