今天小编分享的科学经验:一张图重建3D人物新思路:完美复刻复杂动作和宽松衣物,遮挡也不在话下,欢迎阅读。
在计算机视觉领網域,我们用一张人像直接打造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 ) 。
祝大家使用愉快。
One More Thing
附作者携 ECON 参加 China3DV 会议时做的一个宣传视频,魔改了《让子弹飞》中的片段,也是相当有趣~
论文地址:
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/