本文经AI新媒体量子位(公众号ID: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)。
祝大家使用愉快。
One More Thing附作者携ECON参加China3DV会议时做的一个宣传视频,魔改了《让子弹飞》中的片段,也是相当有趣~
论文地址:https://arxiv.org/abs/2212.07422
项目主页:https://xiuyuliang.cn/econ/