您的位置:首页 >财经 >

3D人物重建新思路:完美动作和衣物

2023-06-24 06:04:47 来源:量子位

修宇亮 投稿

量子位 | 公众号 QbitAI


(资料图片)

在计算机视觉领域,我们用一张 人像 直接打造 3D数字人 最大的挑战是什么?

或许就是 兼顾稳定性和自由度 。

也就是人物无论摆出 多么复杂的姿势 、所穿 衣服有多宽松 、飘逸或个性,我们都能将它全部逼真地重建为3D姿态。

像下面的例子,就很尴尬:

姿势是够稳,但衣服都缺块了。

现在,来自 CVPR’23 的一篇Highlight论文—— 《ECON: Explicit Clothed humans Optimized via Normal integration》 ,专门解决了这个问题。

它所用方法既能逼真重建各种复杂pose,也能把衣服从整体版型到细节褶皱都完美复刻出来。

即使是带遮挡的多人重建任务,也可放心地“包在它身上”。

如何做到?

以下为投稿作者第一人称角度自述。

既要姿态鲁棒,又要拓扑灵活

在《CVPR 2022 | ICON: 提高三维数字人重建的姿势水平》中 ([1]注:作者知乎专栏文章) ,我在“把我批判一番”段落,讲了一下ICON (注:作者去年中标CVPR的3D数字人重建算法) 的问题,其中最突出的, 就是”稳定性vs自由度”的左右两难 ,鱼和熊掌不可得兼。

这里的鱼,就是姿态稳定性 (Pose Robustness) ,这里的熊掌,就是拓扑灵活度 (Topological Flexibility) 。

翻译成大白话,就是ICON能在难的姿势下较好地重建,但宽松的衣服就不行。

几何先验 (SMPL Body) 的引入固然带来了姿态的稳定性,但却有损拓扑的灵活度。

在同样使用SMPL作为几何先验的其他工作中,比如PaMIR ([2]) ,这个tradeoff也普遍存在。

够稳定就不够灵活,这不光是个问题,还是个非常令人尴尬的问题。

PIFu (HD) 的大火,导致整个领域内大家纷纷开始卷Implicit Function (IF) ,就是因为它能做到自由拓扑。

以前mesh-based方法揪不出来的衣服褶皱、头发纹路、开衫夹克、宽松裙子等,上了IF就都能搞出来了。

而ICON虽然号称比PIFuHD拥有更好的泛化性,但这仅仅体现在姿态上,却以牺牲宽松衣服重建效果为代价,相当于忘记了Clothed Human Reconstruction这个问题的“初心”。

因此,如何在不牺牲姿态稳定性的情况下,尽量保证灵活拓扑,就成为绕不过去的问题。

更具体,就是得想个辙,对SMPL-X取其精华去其糟粕,“润物细无声”地将它融入到整个重建过程中。

在这篇文章中,我们还提到了 ICON的另一个问题,那就是“几何不如法向好” 。

因此,在ICON的开源代码中,我们引入了一个后处理模块 (-loop_cloth) ,对于ICON直出的mesh,用从图像中估计的normal进行“二次抛光”,这个没写在论文中,但实际效果还不错,抛光后的mesh较ICON直出的结果,拥有了更加自然的褶皱细节面片拓扑也更规整。

当然,也额外多费一点时间。

△图片-normal estimate-ICON直出-ICON抛光

但抛光仅仅就是抛光,它依旧不能解决拓扑的问题。

裙子裂了,再抛光也不过就是 “拥有更真实褶皱细节的、裂开的裙子” 。

可是normal看起来质量是真的好,那么有没有可能,让法向图 (Normal map) 来主导整个重建过程,而不仅仅用来做二次抛光呢?

之前的抛光,“主”是粗糙的几何,“辅”是normal。

如果 主辅易位,normal作为“主”,而粗糙几何SMPL body作为“辅” ,这个问题会不会有更好的解法?

这就是ECON的思维起点。

△ICON vs ECON

先做衣服,再把人塞进去

上面这个想法让人很自然联想到Normal Integration这个技术路线,这是个挺古早的技术了,但本身是个ill-posed problem,即如果:

normal map有悬崖,即存在不连续区域 (discontinuity) ,这在关节几何 (articulated objects) 中很常见:

1、悬崖落差未知,即boundary condition不明确;

2、normal map本身又是有噪声的;

3、那么normal就很难通过优化过程,唯一确定depth,换句话说,此时normal与depth,是一对多的关系。

但我们知道,人体是一个有很强先验信息的articulated object。

比如上面思考者,尽管双腿之间的距离是未知的,但如果被拉的过远,也是不符合人体结构的,所以如果可以将人体先验,即SMPL-X depth,作为一个几何软约束 (soft geometric constrain) ,加入到整个Normal Integration的优化方程中。那么不光悬崖落差有了一个大致的初始值,normal中的噪声也被约束住了,避免因normal noise干扰整个积分过程,导致表面突刺 (artifacts) 。

同时,对于在normal map上连续,但SMPL-X depth上不连续的区域,比如两腿中间的裙子 (有normal覆盖,没SMPL-X depth覆盖) ,可以仅在normal上积分的同时,尽量与nearby surface保持连贯性。这就是文章中提到的d-BiNI (depth-aware BiNI([3])) 。

整个优化过程,有一个更形象的解释—— 把裸体模特 (SMPL-X body) 慢慢地塞进一套做好的衣服 (Normal map) 中,把衣服撑起来 。

好了,现在正反两面的衣服已经被人体“撑起来”了,这个时候我们会注意到,正反两面的间隙,尤其是侧面,有缝,这就好比旗袍开叉开到了嘎吱窩。所以接下来我们要做的,就是 补全这个裂缝 。

在ECON中,我们提供了 两种补全策略 ,一种是用类似IF-Nets的思路 (如下图) ,输入SMPL-X body和d-BiNI优化出来的正反面,implicitly做几何补全,称为IF-Nets+,其结果我们标记为 ECONIF。

△IF-Nets+

另一种策略则不需要data-driven地去学这种补全策略,而是直接register SMPL-X body into front&back surfaces,其结果我们标记为 ECONEX。

换言之,就是将SMPL-X直接进行显式形变 (explicit deformation) ,直到其与d-BiNI优化出来的正反面完全重合。这种方法扔掉了DL模块,整个pipeline更干净,但缺乏补全未知区域的“想象力”。

正反面完整时,一切正常,但遇到遮挡 (下图234) ,优化出来的正反面本身就会有缺陷,因此形变后的ECONEX结果,遮挡边界处几何不连贯,遮挡处则显得“赤裸裸”。

△Implicit completion vs. Explicit Completion

如果输入图片没有遮挡,我比较推荐explicit的策略 (use_ifnet: False) ,因为快且稳定,而如果有遮挡,就不得不上IF-Nets+ (use_ifnet: True) 。

另外,几何补全 (shape completion) 本身就是一个研究课题,这块不是我的专长,ECON仅提供了两种比较直觉的补全思路,大家如果有更优雅的解决,可以在评论区留言或者pull request。

△Overview of ECON

以上就是ECON的完整思路了,三步走,一个normal estimation,咳~,一个normal integration,一个shape completion,训练有素,simple yet effective,既没有引入新的网络设计,也没有增加训练数据,连normal estimator都是从ICON继承过来的。

如果说ICON是将feature encoder简化为七维度的手工特征,ECON就是将encoder + implicit regressor合并为一个explicit optimizer,这样问题本身,就从data-driven learning,转化为一个纯优化问题。

从此我们只需要关注用什么方法可以拿到更好的normal map,就可以了。

“Make everything as simple as possible, but not simpler.”—— Albert Einstein.

不同于implicit-based methods, ECONEX 没有任何implicit模块,这也是标题的立意,单目穿衣人重建这个问题,不是非要上implicit才能保住细节,explicit也可以的,一个数字人,显式隐式各自表述。

而且ECON的三明治结构,也适用于通用物体,比如去年3DV Best Paper Honourable Mention,Any-shot GIN ([4]) ,大同小异。

这种三明治设计简化了重建,正反面搞定了,九成的物体几何信息就有了,留给补全模块的工作量就小很多。同时,补全能“填缝”,也能应对大面积遮挡,所以ECON天然地可以处理多人遮挡场景。

同时,由于优化还是基于SMPL-X几何先验,所以ECON的结果,已经内嵌了一个严丝和缝的SMPL-X参数化模型,所以接下来,无论是要做皮肤裸露部位 (手,脸) 的替换,还是做驱动动画,都很容易。

△对裸露部分,比如脸和手,可以直接用SMPL-X替换

这里我和李杰锋同学一起合作搞了一个demo,先用HybrIK-X ([5]) 从视频中做视觉动捕,得到的动作序列,直接驱动ECON的重建。

不够完美,有些jitter,还有global trans不准确导致的地板穿模问题,同时,纹理只有正面,因为看起来很别扭,我就把纹理全扔掉了,但这个问题肯定是要解决的,先开个坑,之后搞定了会过来填。

不完美之处

ECON也有一些问题,比如:

A. SMPL-X对于直立站姿的预测结果往往会屈腿,这会“带坏”ECON的重建

B. SMPL-X的手腕旋转如果预测错误,直接替换就会出现图示的stitching artifacts

D. 极端宽松的衣服下,目前normal预估的质量无法保证,伴随着ECON的重建也会有破洞

至于C,人体和衣服之间往往是有距离的,而ECON的优化过程,目前没有考虑衣服的紧合度tightness (具体实现中,我们手工设定了thickness=2cm) ,导致在一些极端的情况下,人会看起来扁扁的,这个问题,或许可以通过额外预测tightness,并将其引入到d-BiNI优化过程中来解决。

△Failure cases

尽管有以上各种问题, (但个人认为) , ECON依旧是目前为止,泛化性最好的,单图穿衣人重建算法 ,我们在AMT上花了六百欧做了上千组perception study,最后的结论是——除了在fashion images上和PIFuHD打了个平手,其他所有的hard cases,challenging poses or loose clothing,ECON的重建质量一骑绝尘。

而fashion images上打平手的主要原因,主要还是因为这个屈腿的问题,所以,只要SMPL-X estimate可以解决掉屈腿的问题 (比如像BEDLAM([6])那样造synthetic data,然后用perfect SMPL-X gt而不是pseudo SMPL-X gt做训练) ,那么ECON就是六边形战士,单目穿衣人重建界的马龙 (只要限定词足够多,就没人可以打败我) 。

ECON paves the path towards large-scale human digitization from internet data

最后,多亏了开源社区小伙伴的帮助,ECON提供了全家桶。

Windows Ubuntu都支持,Google Colab, HuggingFace Demo,Docker Image一应俱全,除此之外,我们还支持了Blender插件。

所以,无论你是reseacher,engineer,artist/animator,还是只想尝鲜不想配环境的吃瓜群众,只要你想用,总有一款适合你。

后续有兴趣讨论的,可以Github上提issue,或者加入我们的Discord讨论组 (Avatarizer) 。

祝大家使用愉快。

论文地址: https://arxiv.org/abs/2212.07422

项目主页: https://xiuyuliang.cn/econ/

参考链接:

[1] ICON: https://zhuanlan.zhihu.com/p/477379718 [2] PaMIR: Parametric Model-conditioned Implicit Representation for image-based human reconstruction (T-PAMIR’21) https://github.com/ZhengZerong/PaMIR [3] Bilateral Normal Integration (ECCV’22) https://github.com/xucao-42/bilateral_normal_integration [4] Any-Shot GIN: Generalizing Implicit Networks for Reconstructing Novel Classes (3DV’22) https://virtualhumans.mpi-inf.mpg.de/gin/ [5] HybrIK-X: Hybrid Analytical-Neural Inverse Kinematics for Whole-body Mesh Recovery (arXiv’23) https://jeffli.site/HybrIK-X/ [6] BEDLAM: A Synthetic Dataset of Bodies Exhibiting Detailed Lifelike Animated Motion (CVPR’23, Highlight) https://bedlam.is.tue.mpg.de/

— 完 —

量子位 QbitAI · 头条号签约

关注我们,第一时间获知前沿科技动态

关键词: