5

CVPR'23|一张图重建3D人物新思路:完美复刻复杂动作和宽松衣物,遮挡也不在话下 | 量...

 1 year ago
source link: https://www.qbitai.com/2023/06/63219.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

CVPR’23|一张图重建3D人物新思路:完美复刻复杂动作和宽松衣物,遮挡也不在话下

head.jpg丰色 2023-06-23 13:13:33 来源:量子位

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

修宇亮 投稿

量子位 | 公众号 QbitAI

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

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

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

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

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

CVPR'23|一张图重建3D人物新思路:完美复刻复杂动作和宽松衣物,遮挡也不在话下

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

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

CVPR'23|一张图重建3D人物新思路:完美复刻复杂动作和宽松衣物,遮挡也不在话下

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

CVPR'23|一张图重建3D人物新思路:完美复刻复杂动作和宽松衣物,遮挡也不在话下

如何做到?

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

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

在《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直出的结果,拥有了更加自然的褶皱细节面片拓扑也更规整。

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

CVPR'23|一张图重建3D人物新思路:完美复刻复杂动作和宽松衣物,遮挡也不在话下

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

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

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

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

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

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

这就是ECON的思维起点。

CVPR'23|一张图重建3D人物新思路:完美复刻复杂动作和宽松衣物,遮挡也不在话下

△ICON vs ECON

先做衣服,再把人塞进去

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

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

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

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

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

CVPR'23|一张图重建3D人物新思路:完美复刻复杂动作和宽松衣物,遮挡也不在话下

但我们知道,人体是一个有很强先验信息的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) 中,把衣服撑起来

CVPR'23|一张图重建3D人物新思路:完美复刻复杂动作和宽松衣物,遮挡也不在话下

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

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

CVPR'23|一张图重建3D人物新思路:完美复刻复杂动作和宽松衣物,遮挡也不在话下

△IF-Nets+

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

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

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

CVPR'23|一张图重建3D人物新思路:完美复刻复杂动作和宽松衣物,遮挡也不在话下

△Implicit completion vs. Explicit Completion

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

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

CVPR'23|一张图重建3D人物新思路:完美复刻复杂动作和宽松衣物,遮挡也不在话下

△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,就可以了。

CVPR'23|一张图重建3D人物新思路:完美复刻复杂动作和宽松衣物,遮挡也不在话下

“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天然地可以处理多人遮挡场景。

CVPR'23|一张图重建3D人物新思路:完美复刻复杂动作和宽松衣物,遮挡也不在话下

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

CVPR'23|一张图重建3D人物新思路:完美复刻复杂动作和宽松衣物,遮挡也不在话下

△对裸露部分,比如脸和手,可以直接用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优化过程中来解决。

CVPR'23|一张图重建3D人物新思路:完美复刻复杂动作和宽松衣物,遮挡也不在话下

△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

CVPR'23|一张图重建3D人物新思路:完美复刻复杂动作和宽松衣物,遮挡也不在话下

最后,多亏了开源社区小伙伴的帮助,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/

版权所有,未经授权不得以任何形式转载及使用,违者必究。

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK