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

前言 用一张人像直接打造3D数字人最大的挑战是什么?或许就是兼顾稳定性和自由度。

本文转载自量子位

仅用于学术分享,若侵权请联系删除

欢迎关注公众号CV技术指南,专注于计算机视觉的技术总结、最新技术跟踪、经典论文解读、CV招聘信息。

CV各大方向专栏与各个部署框架最全教程整理

【CV技术指南】CV全栈指导班、基础入门班、论文指导班 全面上线!!

人物无论摆出多么复杂的姿势、所穿衣服有多宽松、飘逸或个性,我们都能将它全部逼真地重建为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)。

祝大家使用愉快

论文地址:

项目主页:

参考链接:

[1] ICON: 
[2] PaMIR: Parametric Model-conditioned Implicit Representation for image-based human reconstruction (T-PAMIR’21) 
[3] Bilateral Normal Integration (ECCV’22) 
[4] Any-Shot GIN: Generalizing Implicit Networks for Reconstructing Novel Classes (3DV’22) 
[5] HybrIK-X: Hybrid Analytical-Neural Inverse Kinematics for Whole-body Mesh Recovery (arXiv’23) 
[6] BEDLAM: A Synthetic Dataset of Bodies Exhibiting Detailed Lifelike Animated Motion (CVPR’23, Highlight) 

 

欢迎关注公众号CV技术指南,专注于计算机视觉的技术总结、最新技术跟踪、经典论文解读、CV招聘信息。

计算机视觉入门1v3辅导班

【技术文档】《从零搭建pytorch模型教程》122页PDF下载

QQ交流群:470899183。群内有大佬负责解答大家的日常学习、科研、代码问题。

其它文章

12篇CVPR 2023 最佳论文候选

ICLR2023 | 扩散生成模型新方法:极度简化,一步生成

显著提升模型精度!巧用 MMRazor 轻量级骨干网络

小内存有救了!Reversible ViT:显存减少15倍,大模型普及曙光初现!

DCSAU-Net | 更深更紧凑注意力U-Net

此「错」并非真的错:从四篇经典论文入手,理解Transformer架构图「错」在何处

CVPR 2023 | 即插即用!SQR:对于训练DETR-family目标检测的探索和思考

CVPR 2023 Highlight | 西湖大学提出一种全新的对比多模态变换范式

ReID专栏(二)多尺度设计与应用

ReID专栏(一) 任务与数据集概述

libtorch教程(三)简单模型搭建

libtorch教程(二)张量的常规操作

libtorch教程(一)开发环境搭建:VS+libtorch和Qt+libtorch

NeRF与三维重建专栏(三)nerf_pl源码部分解读与colmap、cuda算子使用

NeRF与三维重建专栏(二)NeRF原文解读与体渲染物理模型

NeRF与三维重建专栏(一)领域背景、难点与数据集介绍

异常检测专栏(三)传统的异常检测算法——上

异常检测专栏(二):评价指标及常用数据集

异常检测专栏(一)异常检测概述

BEV专栏(二)从BEVFormer看BEV流程(下篇)

BEV专栏(一)从BEVFormer深入探究BEV流程(上篇)

可见光遥感图像目标检测(三)文字场景检测之Arbitrary

可见光遥感目标检测(二)主要难点与研究方法概述

可见光遥感目标检测(一)任务概要介绍

TensorRT教程(三)TensorRT的安装教程

TensorRT教程(二)TensorRT进阶介绍

TensorRT教程(一)初次介绍TensorRT

AI最全资料汇总 | 基础入门、技术前沿、工业应用、部署框架、实战教程学习

计算机视觉入门1v3辅导班

计算机视觉交流群

聊聊计算机视觉入门

posted @ 2023-06-24 18:35  CV技术指南(公众号)  阅读(263)  评论(0编辑  收藏  举报