REC-MV: REconstructing 3D Dynamic Cloth from Monocular Videos 项目地址open in new window
CVPR 2023
Fig. 1: Overview Abstract 从单目视频中重建具有开放边界的动态 3D 服装表面是一个重要的问题,因为它为服装数字化提供了实用且低成本的解决方案。最近的神经渲染方法从单目视频中实现了高质量的动态服装人体重建结果,但这些方法无法将服装表面与身体分开。此外,尽管基于特征曲线表示的现有服装重建方法展示了从单个图像重建服装的令人印象深刻的结果,但它们很难为视频输入生成时间一致的表面。为了解决上述限制,在本文中,我们将此任务制定为 3D 服装特征曲线和单目视频表面重建的优化问题。我们引入了一种称为REC-MV 的新颖方法来联合优化服装的显式特征曲线和隐式符号距离场 (SDF) 。然后可以通过规范空间中的服装模板注册来提取开放的服装网格。对多个随意捕获的数据集的实验表明,我们的方法优于现有方法,并且可以生成高质量的动态服装表面。
Introduction 目前有 2 种主流的解决方案,1) 利用神经渲染的方法,隐式表示标准空间下穿着衣服的人体,再用基于蒙皮的变形方法将其变形到对应的 pose。想要用这种方法使衣服与人体分离需要大量的工作。2) 直接从单目图像中重建高保真的衣物 mesh 模板,ReER 就使用特征曲线和隐式表面场的方法来重建衣物的模板。但是这些方法在以视频为输入时,很难保证重建出的衣服在时间上具有表面一致性。
本文结合神经渲染方法中的动态表面模型和显式特征曲线,使用基于蒙皮的运动建模来表示标准空间下的显示曲线和隐式表面,并通过从视频中自动提取的2D信息 (如图片像素,服装 mask 和可视化特征曲线) 来优化。主要贡献如下:
REC-MV,第一个从单目视频中重建动态且拥有开放边界的宽松衣服的方法。 提出优化显式特征曲线和隐式服装表面的方法。 对于随意拍摄的单目视频,本文方法是SOTA。 Method 使用特征曲线 (领口、袖口、衣服下摆、裙摆等) 确定服装的轮廓,使用 SDF 来表示服装的表面。首先从视频中获取显式特征曲线和隐式服装表面,然后应用非刚性服装模板配准来提取开放边界服装 mesh。
Preprocessing :通过 Videoavatar 生成初始体格参数 (shape parameters) β \beta β ,相机内参 π \pi π 和每帧的 SMPL 姿态参数 (pose parameters) θ ⃗ \vec\theta θ 。使用 Self-Correction-Human-Parsingopen in new window 的方法来估计服装 mask。还需要 2D 可见曲线 ζ = { ζ l , t ∣ l = 1 , . . . N l , t = 1 , . . . , N i } \zeta=\{\zeta_{l,t}|l=1,...N_l,t=1,...,N_i\} ζ = { ζ l , t ∣ l = 1 , ... N l , t = 1 , ... , N i } (其中 N l N_l N l 表示曲线的数量,N i N_i N i 表示视频的帧数) 来恢复 3D 曲线,2D 可见曲线在分析服装 mask 的边界时会自动生成。
特征曲线和表面重建 显式表面模板 (Explicit Surface Template) :本文采用了几个表面模板 (包括上衣、连衣裙、外套、短裤和衬衫 ),模板包含预定义的 3D 特征曲线几何集 L = { L i ∣ i = 1 , . . . , N l } \mathbf{L}=\{\mathbf{L}_i|i=1,...,N_l\} L = { L i ∣ i = 1 , ... , N l } (N l N_l N l 表示特征曲线的数量),这些特征曲线是从服装的边界提取出来的。表面模板和预定义的特征曲线将分别用于服装表面和特征曲线的初始化。
无交点曲线变形 (Intersection-free Curve Deformation) :如果直接将特征曲线表示为离散的点集,那么优化时对每个点进行 3D 变形偏移的时候,点的顺序可能会打乱,导致曲线交叉。所以本文提出了无交点曲线变形 (Intersection-free Curve Deformation) 的方法,点点变形由曲线中心和两个正交方向控制:
C ′ ( i ) = p c + S i d n i d + S i c n c (1) \mathcal{C}'(i)=\mathbf{p}_{\mathbf{c}}+S^d_i\mathbf{n}^{\mathbf{d}}_{\mathbf{i}}+S^c_i\mathbf{n}^{\mathbf{c}} \tag{1} C ′ ( i ) = p c + S i d n i d + S i c n c ( 1 )
C ′ ( i ) \mathcal{C}'(i) C ′ ( i ) 表示偏移后的点p c \mathbf{p}_{\mathbf{c}} p c 表示曲线的中心n i d \mathbf{n}^{\mathbf{d}}_{\mathbf{i}} n i d 表示曲线中心到当前点 C ( i ) \mathcal{C}(i) C ( i ) 的方向n c = 1 N p − 1 ∑ i = 1 N p ( n i d × n i − 1 d ) \mathbf{n}^{\mathbf{c}}=\frac{1}{N_p-1}\sum_{i=1}^{N_p}(\mathbf{n}^{\mathbf{d}}_{\mathbf{i}}\times\mathbf{n}^{\mathbf{d}}_{\mathbf{i-1}}) n c = N p − 1 1 ∑ i = 1 N p ( n i d × n i − 1 d ) 表示垂直于特征曲线平面的方向S i d ∈ R , S i c ∈ R S^d_i\in\R,S^c_i\in\R S i d ∈ R , S i c ∈ R 是可学习的参数,确定变形步长Fig. 2: 可视化无交点曲线变形 标准空间的隐式 SDF (Implicit SDF in Canonical Space) :UDF 是可以表示开放表面的隐函数,但是在接近表面的点处不可微。因此本文用 SDF 来表示一个封闭的衣服表面,然后使用服装模板配准来提取开放表面的服装。本文并不使用一整个 SDF 来表示整个衣服表面,而是拆分成三种表面类型 (上衣、下衣和连体衣物 ),SDF 由具有可学习权重 η \eta η 的 MLP f f f 表示:S ( η ) = { p ∈ R 3 ∣ f ( p ; η ) = 0 } S(\eta)=\{\mathbf{p}\in\R^3|f(\mathbf{p};\eta)=0\} S ( η ) = { p ∈ R 3 ∣ f ( p ; η ) = 0 }
基于蒙皮的运动建模 对于大型身体运动,采用线性混合蒙皮 (LBS ) ,对于细粒度的变形则是采用非刚性变形场。
蒙皮转换 (Skinning Transformation) :用 SMPL 里的 LBS 方法进行蒙皮,但是蒙皮权重是仅针对 SMPL 表面上的点。为了将标准空间内的任意一点变换到相机空间,则需要用到扩散蒙皮策略 (diffused skinning strategy) 将 SMPL 顶点的蒙皮权重传播到整个标准空间,并将权重存储在 256 × 256 × 256 256\times256\times256 256 × 256 × 256 的体素网格内,然后通过三线性插值获得蒙皮权重。
非刚性变形 (Non-rigid Deformation) :蒙皮使服装表面能够以与身体大规模运动一致的方式变形。然而,距离身体较远的部分服装的细节不能通过蒙皮完全表示。因此,要用非刚性变形 MLP 对这些细粒度变化进行建模。用 MLP D \mathcal{D} D 来表示这个非刚性变形 (ϕ \phi ϕ 是可学习的参数):
p ′ = D ( p , h , E ( p ) ; ϕ ) (2) \mathbf{p}'=\mathcal{D}(\mathbf{p},\mathbf{h},E(\mathbf{p});\phi) \tag{2} p ′ = D ( p , h , E ( p ) ; ϕ ) ( 2 )
p \mathbf{p} p 表示标准空间中的点p ′ \mathbf{p}' p ′ 表示变换后的点h \mathbf{h} h 表示当前帧的 latent codeE ( p ) E(\mathbf{p}) E ( p ) 表示 NeRF 中的位置编码最终结合蒙皮权重矩阵 W \mathcal{W} W ,可以定义一个变形场 Φ ( ⋅ ) = W ( D ( ⋅ ) ) \Phi(\cdot)=\mathcal{W}(\mathcal{D}(\cdot)) Φ ( ⋅ ) = W ( D ( ⋅ )) 将标准空间内的任意一点变换到相机空间。
基于 2D 投影的 3D 特征曲线 初始化特征曲线 (Feature Curve Initialization) :使用服装模板提供的预定义的 3D 特征曲线几何集 L = { L i ∣ i = 1 , . . . , N l } \mathbf{L}=\{\mathbf{L}_i|i=1,...,N_l\} L = { L i ∣ i = 1 , ... , N l } ,本文直接最小化相机空间的 3D 特征曲线在的 2D 投影与 2D 可见曲线之间的倒角距离 (Chamfer Distance, CD) :
s , t , R = arg min C D ( Π ( W ( L ˉ i ) ) , ζ ) (3) s,\mathbf{t},\mathbf{R}=\arg\min \mathrm{CD}(\Pi(\mathcal{W}(\bar{\mathbf{L}}_i)),\zeta) \tag{3} s , t , R = arg min CD ( Π ( W ( L ˉ i )) , ζ ) ( 3 )
L ˉ i = s R ( L i ) + t (4) \bar{\mathbf{L}}_i=s\mathbf{R}(\mathbf{L}_i)+t \tag{4} L ˉ i = s R ( L i ) + t ( 4 )
Π \Pi Π 表示投影矩阵L ˉ i \bar{\mathbf{L}}_i L ˉ i 表示变换后的特征曲线ζ \zeta ζ 表示 2D 可见曲线t ∈ R 3 , R ∈ S O ( 3 ) , s ∈ R \mathbf{t}\in\R^3,\mathbf{R}\in SO(3),s\in\R t ∈ R 3 , R ∈ SO ( 3 ) , s ∈ R 分别表示优化后的平移、旋转和缩放参数在经过刚性优化后,将 L ˉ \bar{\mathbf{L}} L ˉ 设置为特征曲线集 { C i ∣ i = 1 , . . . , N l } \{\mathcal{C}_i|i=1,...,N_l\} { C i ∣ i = 1 , ... , N l } 的初始位置,用于之后的非刚性优化。
表面感知曲线的可见性估计 (Surface-aware Curve Visibility Estimation) :由于 2D 特征曲线 γ \gamma γ 仅包含可见点,因此检测相机空间中 3D 曲线 C \mathcal{C} C 上的点是否被人体遮挡至关重要。用等值面提取算法 (marching cube) 将标准空间的 SDF S ( η ) S(\eta) S ( η ) 转换成显式的 mesh T s \mathbf{T}_{\mathbf{s}} T s ,再通过变换场 Φ ( T s ) \Phi(\mathbf{T}_{\mathbf{s}}) Φ ( T s ) 将 mesh 从标准空间变换到相机空间,然后就可以基于 z-buffer 检测特征曲线上的点 Φ ( C ( i ) ) \Phi(\mathcal{C}(i)) Φ ( C ( i )) 是否被mesh 遮挡。
然而 3D 曲线 C \mathcal{C} C 有时可能会移动到 mesh 的外部或者比 mesh 大,只依靠 z-buffer 检测可能会出现一些错误。因此本文还检测了相机空间中曲线上的点是否被 SMPL 身体上离其最近的点遮挡,能这么做是因为之前的无交点曲线变形几乎没有改变两者之间的关系。如果两项检测都通过,就被视为可见的。
曲线和表面协同优化 服装的表面由隐式 SDF 表示。由于特征曲线可见性估计取决于服装表面,因此曲线和表面在优化过程中必须保持一致性。为了确保优化过程中曲线可见性的准确性,我们联合优化曲线和和表面,同时进行正则化,使曲线位于 SDF 的零等值面上。通过基于可微表面渲染的光度损失最小化隐式表面。
曲线感知表面初始化 (Curve-aware Surface Initialization) :首先得到公式 (4) 中初始化后的特征曲线 L ˉ \bar{\mathbf{L}} L ˉ ,然后用基于句柄的变形 (handle-based deformation) 方法使服装模板发生变形,使其特征曲线与 L ˉ \bar{\mathbf{L}} L ˉ 对齐。最后使用隐式几何正则化 (Implicit Geometric Regularization, IGR) 的方法,通过拟合成变形后的服装模板来初始化隐式表面 S ( η ) S(\eta) S ( η ) 。
可微表面渲染 (Differentiable Surface Rendering) :SelfRecon 里的方法,具体内容看 SelfRecon。
C p = f c ( p , n p v p , z , E ( p ) ; ψ ) (5) C_{\mathbf{p}}=f_c(\mathbf{p},\mathbf{n}_{\mathbf{p}}\mathbf{v}_{\mathbf{p}},\mathbf{z},E(\mathbf{p});\psi) \tag{5} C p = f c ( p , n p v p , z , E ( p ) ; ψ ) ( 5 )
p \mathbf{p} p 表示表面上的交点n p = ∇ f ( p ; η ) \mathbf{n}_{\mathbf{p}}=\nabla f(\mathbf{p};\eta) n p = ∇ f ( p ; η ) 表示交点的梯度v p \mathbf{v}_{\mathbf{p}} v p 表示变换点 Φ ( p ) \Phi(\mathbf{p}) Φ ( p ) 的雅可比矩阵,用于将相机空间转换到标准空间z \mathbf{z} z 表示视频帧的 latent codef c f_c f c 表示颜色渲染网络C p C_{\mathbf{p}} C p 表示点 p \mathbf{p} p 的颜色 损失函数 显式特征曲线损失 特征曲线投影损失 (Feature Curve Projection Loss) :
L p r o j = C D ( V C ⊗ Π ( Φ ( C ) ) , ζ ) (6) \mathcal{L}_{proj}=\mathrm{CD}(V_{\mathcal{C}}\otimes\Pi(\Phi(\mathcal{C})),\zeta) \tag{6} L p ro j = CD ( V C ⊗ Π ( Φ ( C )) , ζ ) ( 6 )
C \mathcal{C} C 表示 3D 特征曲线Φ ( ⋅ ) \Phi(\cdot) Φ ( ⋅ ) 表示变形场,用于将点从标准空间变形到相机空间Π \Pi Π 表示投影矩阵V C V_{\mathcal{C}} V C 表示曲线的可见性 mask⊗ \otimes ⊗ 表示 mask 选择操作ζ \zeta ζ 表示 2D 可见曲线CD 表示倒角距离 特征曲线斜率正则化 (Feature Curve Slope Regularization) :为了保持 3D 曲线的曲率 (使整体曲线平滑且连续),设置了斜率损失来保证相邻点之间的斜率一致性:
L s l o p = ∑ i = 1 N p ( 1 − cos < s i + 1 , s i > ) (7) \mathcal{L}_{slop}=\sum_{i=1}^{N_p}(1-\cos<\mathbf{s_{i+1},\mathbf{s}_i}>) \tag{7} L s l o p = i = 1 ∑ N p ( 1 − cos < s i + 1 , s i > ) ( 7 )
s i = C ( i + 1 ) − C ( i ) \mathbf{s}_i=\mathcal{C}(i+1)-\mathcal{C}(i) s i = C ( i + 1 ) − C ( i ) 表示相邻两点组成的向量N p N_p N p 表示曲线上点的数量cos < > \cos<> cos <> 表示余弦相似度函数表面正则化 (On-surface Regularization) :为了保证特征曲线在对应服装的表面,因此设定了尽可能接近 (as near as possible) 损失:
L a n a p = ∑ i = 1 N p ∣ f ( C ( i ) ; η ) ∣ (8) \mathcal{L}_{anap}=\sum_{i=1}^{N_p}|f(\mathcal{C}(i);\eta)| \tag{8} L ana p = i = 1 ∑ N p ∣ f ( C ( i ) ; η ) ∣ ( 8 )
f ( C ( i ) ; η ) ) f(\mathcal{C}(i);\eta)) f ( C ( i ) ; η )) 是求曲线上一点 C ( i ) \mathcal{C}(i) C ( i ) 的 SDF 值整体的显式特征曲线的损失如下:
L c u r v e = λ p r o j L p r o j + λ s l o p L s l o p + λ a n a p L a n a p (9) \mathcal{L}_{curve}=\lambda_{proj}\mathcal{L}_{proj}+\lambda_{slop}\mathcal{L}_{slop}+\lambda_{anap}\mathcal{L}_{anap} \tag{9} L c u r v e = λ p ro j L p ro j + λ s l o p L s l o p + λ ana p L ana p ( 9 )
服装表面损失 对于 N i N_i N i 帧的单目视频,可学习的隐式表面重建参数可以表示为 Θ = { η , ϕ , ψ } ∪ { h i , z i ∣ i = 1 , . . . , N i } \Theta=\{\eta,\phi,\psi\}\cup\{\mathbf{h}_i,\mathbf{z}_i|i=1,...,N_i\} Θ = { η , ϕ , ψ } ∪ { h i , z i ∣ i = 1 , ... , N i } 。
表面渲染损失 (Surface Rendering Loss) :我们用 SelfRecon 的方法渲染表面,先求出光线和标准空间表面的交点,然后用公式 (6) 的表面渲染网络预测颜色,其光度损失如下:
L R G B = 1 ∣ R ∣ ∑ p ∈ R ∣ C p ( Θ ) − I p ∣ (10) \mathcal{L}_{RGB}=\frac{1}{|\mathcal{R}|}\sum_{\mathbf{p}\in\mathcal{R}}|C_{\mathbf{p}}(\Theta)-I_{\mathbf{p}}| \tag{10} L RGB = ∣ R ∣ 1 p ∈ R ∑ ∣ C p ( Θ ) − I p ∣ ( 10 )
R \mathcal{R} R 表示采样点集I p I_{\mathbf{p}} I p 表示输入图像的像素值的 ground-truthMask 引导的隐式一致性损失 (Mask-guided Implicit Consistency Loss) :也是 SelfRecon 的方法,定期从标准空间的 SDF 中提取显示表面 mesh T s \mathbf{T}_{\mathbf{s}} T s ,使用可微渲染器基于表面 mask 来迭代优化 mesh T s \mathbf{T}_{\mathbf{s}} T s ,更新后的显示表面 T ^ s \hat{\mathbf{T}}_{\mathbf{s}} T ^ s 将被用来监督 SDF f f f :
L m c o n s = 1 ∣ T ^ s ∣ ∑ p ∈ T ^ s ∣ f ( p ; η ) ∣ (11) \mathcal{L}_{mcons}=\frac{1}{|\hat{\mathbf{T}}_{\mathbf{s}}|}\sum_{\mathbf{p}\in\hat{\mathbf{T}}_{\mathbf{s}}}|f(\mathbf{p};\eta)| \tag{11} L m co n s = ∣ T ^ s ∣ 1 p ∈ T ^ s ∑ ∣ f ( p ; η ) ∣ ( 11 )
曲线引导的隐式一致性损失 (Curve-guided Implicit Consistency Loss) :通过 mask 损失来更新显示 mesh 可能导致衣服表面有洞或者发生塌陷,为了接近这个问题,设计了显式曲线和表面一致性损失。具体来说,对于属于两个服装的特征曲线 C \mathcal{C} C (比如腰部曲线既属于上衣又属于下衣),先生成闭合表面 T C \mathbf{T}_\mathcal{C} T C ,然后从闭合表面 T C \mathbf{T}_\mathcal{C} T C 采样 N a N_a N a 个点来约束 SDF:
L c c o n s = 1 ∣ T C ∣ ∑ p ∈ T C ∣ f ( p ; η ) ∣ (12) \mathcal{L}_{ccons}=\frac{1}{|\mathbf{T}_{\mathcal{C}}|}\sum_{\mathbf{p}\in\mathbf{T}_{\mathcal{C}}}|f(\mathbf{p};\eta)| \tag{12} L cco n s = ∣ T C ∣ 1 p ∈ T C ∑ ∣ f ( p ; η ) ∣ ( 12 )
常见隐式损失 (Common Implicit Loss) :用了 Eikonal 损失 L e i k \mathcal{L}_{eik} L e ik 来优化 SDF;为了避免非刚性变换的扭曲,使用刚性损失 L a r a p \mathcal{L}_{arap} L a r a p 来约束非刚性变换;计算标准空间的法向损失 L n o r m \mathcal{L}_{norm} L n or m 来精细化表面;计算骨架平滑度损失以减少帧间 SMPL 姿态的高频抖动。总体隐式表面损失可以写为:
L i m s = L R G B + λ m c o n s L m c o n s + λ c c o n s L c c o n s + λ a r a p L a r a p + λ e i k L e i k + λ n o r m L n o r m (13) \mathcal{L}_{ims}=\mathcal{L}_{RGB}+\lambda_{mcons}\mathcal{L}_{mcons}+\lambda_{ccons}\mathcal{L}_{ccons}+\lambda_{arap}\mathcal{L}_{arap}+\lambda_{eik}\mathcal{L}_{eik}+\lambda_{norm}\mathcal{L}_{norm} \tag{13} L im s = L RGB + λ m co n s L m co n s + λ cco n s L cco n s + λ a r a p L a r a p + λ e ik L e ik + λ n or m L n or m ( 13 )
Reference [1]REC-MV: REconstructing 3D Dynamic Cloth from Monocular Videosopen in new window