横向各向同性软组织的本构方程及有限元实现

By |2021-06-03T17:04:02+08:00June 3rd, 2021|Creative|

前言 软组织的力学研究在近几十年内已经成熟,各种理论层出不穷,但总体来讲经历了三个阶段: 第一阶段,1940年Mooney提出了一个具有很强变形能力的超弹性材料的力学模型,1948年Rivlin对它做了改良,也就是现在流行的Mooney-Rivlin超弹性模型,目前对于超弹性材料的仿真都使用了Mooney-Rivlin。 第二阶段,1994年,Jeffrey Weiss 定义了纤维增强型Mooney-Rivlin,通过向量场控制当前构型的变形,这个理论为肌肉的力学仿真奠定了基础,并发表了论文(他博士读了九年,都在搞这个)。 第三阶段,2003年-2018年,在斯坦福大学跟工业光魔的共同努力下,肌肉仿真成功在数字人上应用,大幅提升了数字形象的真实感,目前 Ziva Dynamics,FACEGOOD 等公司也是类似技术路线。 我在2016年看到了Weta Digital一篇专访,放了这段肌肉仿真的视频( Weta Digital Horse FEM Simulation)它们从内到外做了一匹“真马”:骨骼层->肌肉层->筋膜层->脂肪层->皮层,深深被其震撼,了解到他们用到了有限元法(FEM),随后就沉迷这个技术了。我个人来讲喜欢写一些有难度的玩意,编译器、虚拟机、3D引擎、渲染器、物理引擎之类的都写过,这么牛逼的物理引擎不搞一下自然心痒得很,很幸运,是兴趣又跟自己的创业方向吻合,肌肉仿真的研发就这样开始了。刚开始对计算力学一窍不通,只好从头学起,一开始就像个无头苍蝇学习路线比较乱,有限元的书买了一堆,发现它只是个数值工具,想搞明白原理需要先看力学,力学里面又有经典力学、理论力学、固体力学、结构力学、材料力学、弹性力学,不知道从哪里出发,于是干脆全都看了一遍,最后范围逐渐缩小,聚焦之后学习起来自然就很高效了,现在已经在手撸有限元的C++实现了。 图(2)计算力学知名学者吴建营老师(左) 2017年FACEGOOD上线了表情捕捉产品,但当时对计算力学方向还是很迷惘,有幸遇见了吴建营老师,我把这个课题给他看了之后他给的反馈是“都是技术问题,没有理论问题,但是工程化方面人才比较缺”。听了这一番话我反倒是觉着靠谱了,工程化是我们的专长,这些年一直在做工程化的急先锋。FACEGOOD 搞仿真主要是提升数字人的真实感,例如只有从力学上模拟表情产生的全过程才能做到Physically Correct,这里面最核心的是解决人体软组织的力学建模问题,也就是需要得到韧带、肌腱、脂肪、皮层等软组织的精确力学模型。本文主要介绍软组织的数学建模以及其有限元的实现,读者需要具备变分法(Caculus of Variations)、计算力学(Computional Mechanics)、有限元法(Finite Element Method)等知识,熟悉横向各向同性(Transverse Isotropy)、不可压缩超弹性材料的应力、弹性张量等理论特性。按照本栏目一向硬核风格,直接给出完整思路,最后附上一段小DEMO。 认识韧带与肌腱 图(3) 人体有206块骨头,大部分骨头是不能直接向接触的,这样会有很大的摩擦,也没法运动。骨与骨之间并没有榫卯结构,也没有机械齿轮,把骨与骨连结起来的就是韧带和关节。从解剖学角度讲,韧带是骨与骨之间的直接连结,指的就是连接骨与骨之间的致密结缔组织。 每一块骨骼肌都分成肌腹和肌腱两部分,肌腹由肌纤维构成,色红质软,有收缩能力,肌腱由致密结缔组织构成,色白较硬,没有收缩能力。肌腱为肌肉末端的结缔组织纤维索,肌肉藉此附着于骨骼或其它结构。 材料初步(超弹性,横向各向异性的Strain Energy方程推导) 大部分生物材料的力学特性都是各向同性的,他们对载荷的变形反应取决于材料的分布方向,这种材料变形行为是材料内部超微小结构造成的结果,也就是跟纤维束有关,最常见的是胶原纤维、弹性纤维。弹性纤维主要存在于韧带和脉管壁,它与胶原纤维共同存在, 赋予组织以弹性和抗张能力。弹性纤维如同橡皮带一样,它的长度能够伸展到正常长度的几倍,当收缩时又能恢复到原始长度。组织的弹性则是通过改变散布在弹性纤维中胶原的数量来控制。 图(4)肌肉结构 [...]

FACEGOOD 推出10万点人脸关键点跟踪,重新定义工业级人脸3D重建

By |2021-09-01T12:14:53+08:00June 3rd, 2021|Creative|

前言 目前无论是学术界还是工业界对人脸的研究有两个方向,其一民用级,通过技术泛化为用户提供低精的产品,这些技术在工业级高精度上是无法满足需要的,主要因为算法泛化丢失了人脸的低频信息(五官的细微差别)。其二工业级,从人脸生物力学仿真层面,持续提高精度,FACEGOOD走在这个方向,在技术适当泛化的基础上,其将人脸关键点跟踪推向了极致,目前已将精度推到10万级,该技术可用于工业级换脸、表情捕捉等场合。 人脸关键点检测在安防、金融、娱乐等领域具有广泛的应用,可以说已经成为非常基础的算法,我们先来回顾一下它的发展历史,Tim Cootes & Chris Taylor在1995提出了一种新的方法(Active Shape Model)开创了人脸关键点对齐的先河,ASM引入了统计模型来解决对齐问题,紧接着三年之后,他俩在此基础上发展出了Active Appreance Model,这个方法有很重的历史地位,要知道当时人脸对齐问题是个很棘手的事,传统的CV算法太粗暴,难以应付人脸这种高纬特征,AAM之后算是进入了一个正确的方向,为后来神经网络方法奠定了基础,基本思想是ASM并没有考虑到纹理特征,只是对landmark训练了一个统计模型出来,AAM进一步优化了ASM,在回归的过程中加入了纹理特征,这样就解决了特征的泛化匹配的问题,使得人脸对齐更加鲁棒。20年之后,在众多研究者不断推动下2D人脸对齐问题已经彻底解决了,算法也已经白菜化,随便在github都有大量的精度不错的开源项目。 3DMM 与此同时,在1998年有两位研究人员又开辟了一条新赛道,他们提出了3D对齐算法,将人脸对齐推向了一个全新的维度,这套方法目前已经成为现在工业界主流的算法流程,现在工业界习惯上把它叫做3DMM,虽然并不严谨,但我们姑且沿用这样一个定义,3DMM计算结果是在人脸上拟合并投影出一个3D点云,它的应用就非常丰富了,美颜、表情捕捉、通过照片生成一张人脸等等都用了类似的技术。 公式1 如上图所示基本思想是:一张脸可以由多个不同的人脸通过线性组合得出,换句话说,给出一张人脸,要得出3D模型,就是一个系数的回归问题,了解AAM的同学一眼就看出来这个公式就是AAM公式,也可以说这是AAM的另一种应用,其中S是平均脸,s是特征向量,ai是权重系数。Tmodel是用来拟合人脸纹理,同样使用线性组合得出。3DMM是一个非常初期的idea,他的计算结果并不理想,现在来看只能算玩具级,主要是PCA在精度上的丢失是很严重的。 2008年,一篇论文的发表将3DMM的精度进一步推广,公式1只采样了人脸在某一时刻的表情,因此在表情上没有考虑到其他情况,导致精度丢失。这篇论文增加了一个维度,因此叫“双线性模型”,在人脸基础上加上了表情因素,这样的计算结果更加可信。 公式2 这个双线性公式在公式1的思路上增加了一个系数a,表示不同表情,b表示不同的个体,w是人脸数据库,到此3DMM在算法流程上完整了,为日后Facewarehouse等应用奠定了基础,后面的故事大家都知道了Facewarehouse推出了自己的数据库及应用思路,讲到这里我们对前面这些研究做个总结。 3DMM缺点是很明显的,在技术泛化这条路上一路狂奔,忽略了人脸非常多的细节,尤其是高频低幅度的表情细节,在个体上体现非常明显,造成这个局面的原因有两个,基于统计的回归并不精确,是一个模糊解,3D数据库模型的采集多数用成本低廉的设备生成,精度不高,两者加起来,3DMM在高精应用场景可以说完全无法满足需求,更不可能达到工业级超高精度需要。 FACEGOOD 3DMM 图示1 BFM & SFM 模型 图示2 FACEGOOD 模型 为了更精确的计算人脸的3D信息,并能适用于工业级业务场景,FACEGOOD团队采用相机阵列方式采集了100个不同个体的3D模型,每个人有43个不同的表情,以及他们对应的高精度皮肤材质数据,至于这些数据建立了FACEGOOD 3DMM模型。 目前开源的数据库主要有BFM跟SFM两个,同时还有一个Facewarehouse仅供学术研究使用,对比这些数据库,FACEGOOD 3DMM主要体现在精度上,抛弃kinect这类民用级扫描技术,使用相机阵列的方式,可以完全重建人脸的所有肖像特征,如上图所示,图示2是FACEGOOD数据,图示1是SFM数据,后者在细节上损失很大,基本上只保留了人脸的大概特征。 神经网络的优势主要在技术泛化上有很好的表现,但在高精度场合并非理想选择,为了达到高精度跟踪人脸的3D特征,包括脸型、五官的深度、微表情的变化等,FACEGOOD研发人员使用传统算法实现了这一套方案,目前已经在超写实数字人上开始应用。 传统绑定的问题 [...]

Go to Top