一种基于隐式表达的3D单目头发建模方法及装置

文档序号:31087940发布日期:2022-08-09 23:16阅读:208来源:国知局
一种基于隐式表达的3D单目头发建模方法及装置
一种基于隐式表达的3d单目头发建模方法及装置
技术领域
1.本发明属于计算机图形学,计算机视觉领域,尤其涉及一种基于隐式表达的单目3d头发建模方法。


背景技术:

2.头发是人体数字化中重要的组成部分之一,一个真实的3d头发模型可以显著的提高虚拟人的真实性,然而现有的单目头发建模方法不能满足人体数字化灵活,简单和真实的需求。一些基于数据驱动的方法虽然能取得高保真的结果但过程是复杂且不鲁棒的,需要依赖庞大的合成数据集,且匹配搜索过程是复杂耗时的。另一方面,基于学习的方法虽然是轻量且方便部署的,但是现有的方法往往只能取得粗糙的结果。
3.隐式表达已经被广泛应用于3d形状的几何表示,这种表示方法是简单且高效的,可以利用一个隐式函数来表示一个空间中的表面,在重建该几何时只需要在空间中密集采样即可恢复3d形状的几何。但是,现有的基于推测的隐式表达方法通常只能表示一些简单的几何或是比较光滑的表面,然而头发的几何极其复杂且其外部形状和内部结构都很重要。
4.coarse-to-fine的策略常用于生成具有局部细节的高分辨率3d模型。利用低分辨率的输入得到全局特征融合高分辨率图像输入提取到的局部特征重建高分辨率的3d模型,然而由于训练中缺乏成对的训练数据。
5.传统的头发生长算法在空间中采样3d点然后根据所估计的3d orientation field按照统一的步长生长出下一个点。这种方法效率低且不益于端到端的头发建模。


技术实现要素:

6.本发明基于现有技术的不足,提出了一种基于隐式表达的3d单目头发建模方法,以2d方向图作为输入,提出体素对齐的隐函数来表示复杂的3d头发的全局特征,并结合从高分辨率亮度图中提取的局部特征使用一个解码器解码出相应的occupancy值和orientation值。利用得到的3d方向图进一步使用所提出的基于隐函数的头发生长算法高效的合成3d发丝模型。
7.本发明采用的技术方案如下:
8.一种基于隐式表达的单目3d头发建模方法,包括:
9.构建头部模型,基于输入的单张肖像图像提取对应的头发2d方向图和亮度图并与头部模型对齐;
10.将2d方向图和亮度图输入至一训练好的头发隐式表达模型提取获得头发3d方向场和3d占位场;
11.利用头发生长算法根据获取的3d方向场和3d占位场在头部模型上生长获得3d发丝模型;
12.其中,所述头发隐式表达模型包括精模块和粗模块;其中,粗模块包括u-net架构、
多个隐式体素化模块和第一occupancy解码器、第一orientation解码器;其中,u-net架构包含依次连接的多个卷积单元和反卷积单元,所述隐式体素化模块用于对卷积单元输出的每个体素v的特征沿着z方向复制,将2d的图像特征转换为体素级的3d特征,3d特征再与2d的图像特征对应的卷积单元的上一层反卷积单元输出拼接获得每个体素v的隐式编码f(v),隐式编码f(v)作为下一层反卷积单元的输入;表示如下:
13.f(v)=θ(i(x),z(v))+ir(x)
14.其中,图像特征i(x)是卷积单元的输出,ir(x)是i(x)对应卷积单元的上一层的反卷积单元的输出;θ表示隐式体素化模块神经网络的参数,x是空间中体素投影到平面上对应的2d坐标x;
15.第一occupancy解码器、第一orientation解码器分别用于依据每个点p的隐式编码和z坐标解码获得每个点p的第一occupancy值和第一orientation值;其中,每个点p的隐式编码采用点p对应体素的隐式编码表示,体素的隐式编码为u-net架构最后的输出f(v);
16.所述精模块包括一个用于提取亮度图中点p的局部特征的第二神经网络、第二occupancy解码器和第二orientation解码器;第二occupancy解码器、第二orientation解码器分别用于依据输入的点p的局部特征、全局特征和z坐标解码获得点p的第二occupancy值和第二orientation值,从而获得头发3d方向场和3d占位场;其中,全局特征为第一occupancy解码器、第一orientation解码器的中间层输出的特征。
17.本发明通过体素对齐的隐式表达来更好的表示错综复杂的头发几何,同时高分辨率的亮度图不仅能表示头发的几何结构还保留了头发几何的全部细节同时能弥补与真实数据的大部分数据分布gap,使本发明方法在推测真实数据时依然具有鲁棒性。
18.进一步地,所述头发隐式表达模型通过将训练数据集的每个样本作为头发隐式表达模型的输入,以最小化损失函数为目标训练获得;其中,所述损失函数为occupancy值、orientation值与真值的误差。
19.进一步地,所述头发隐式表达模型通过将训练数据集的每个样本作为头发隐式表达模型的输入,以最小化损失函数为目标训练获具体为:
20.先将训练数据集的每个样本作为头发隐式表达模型的输入,将粗模块输出的occupancy或orientation值与真值构建损失函数,进行训练,直至损失函数收敛或达到预设的最大训练次数;然后冻结粗模块的参数,将训练数据集的每个样本作为头发隐式表达模型的输入,将粗模块输出的occupancy或orientation值与真值构建损失函数,进行训练,直至损失函数收敛或达到预设的最大训练次数。
21.进一步地,所述损失函数具体如下:
[0022][0023][0024][0025]
其中,表示粗模块或精模块输出的occupancy值,表示粗模块或精模块输出的orientation值,d(p)是任意的p点的深度值,τ是阈值,λ是正负样本的权重因子,wp表
示点p的权重。
[0026]
在训练使使用了深度信息为损函数的计算失分配不同的权重,对于看不见的发丝分配较低的权重以学习一个经验性看似合理的结构,对看得见的部分则分配更大的权重使其能保留图像中可见的发丝结构。
[0027]
进一步地,所述利用头发生长算法根据获取的3d方向场和3d占位场获得3d发丝模型,具体如下:
[0028]
将3d方向场分为若干个块,将每个块分别输入至一训练好的头发生长模型,结合3d占位场的约束迭代后获得完整的3d发丝模型;
[0029]
所述头发生长模型包含一个编码器和一个或两个解码器,其中,编码器用于依据3d方向场的块进行编码,获得每个块的隐式编码zi;
[0030]
所述解码器,用于依据每个块i中任意一点pn,结合其隐式编码zi获得下一个和/或上一个点的位置p
n+1
/p
n-1
,如下公式所示:
[0031][0032][0033]
其中zi,pi分别是第i个块对应的隐式编码和中心点坐标,d是patch的大小。
[0034]
上述使用一个隐函数模拟头发的生长过程,将3d方向场分为若干patch,在每个patch内独立并行的生长发丝得到最终完整的3d头发模型。不仅使特征更容易解码也使头发生长并行更加方便和高效。特别地,为了生长出完整的发丝,growingnet包含两个解码器(mlp)从一个起始点开始双向生长发丝。
[0035]
进一步地,所述头发生长模型通过将训练数据集的每个样本作为头发生长模型的输入,以最小化损失函数为目标训练获得;其中,所述损失函数为采用点pn经过头发生长模型预测得到的上一个点的真值和下一个点的真值的误差。
[0036]
进一步地,损失函数表示如下:
[0037][0038]
其中,||*||1表示一范数。
[0039]
一种基于隐式表达的单目3d头发建模装置,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如上述的基于隐式表达的单目3d头发建模方法。
[0040]
一种包含计算机可执行指令的存储介质,所述计算机可执行指令在由计算机处理器执行时实现如上述的基于隐式表达的单目3d头发建模方法。
[0041]
本发明的有益效果是是:
[0042]
本发明提出了neuralhdhair,一种全自动的高保真3d头发建模框架,引入了一种coarse-to-fine的建模策略并提出一种新颖的体素对齐的隐函数来表示头发复杂的几何特征。此外,本发明还提取头发的高分辨率的亮度图以补充更多头发几何的局部细节,实现高分辨率的3d头发建模。基于所得到的3d方向场,本发明还提出了一种基于隐函数的头发生长算法,它可以高效并行的将3d方向场转换为3d发丝模型。
附图说明
[0043]
图1是本发明的网络结构图;
[0044]
图2是本发明重建的结果。
具体实施方式
[0045]
下面,结合具体的实施例和附图对本发明方法作进一步说明。
[0046]
由于头发非常精致、多变和复杂。它由数以千计的细线组成,并受到光照、运动和遮挡的影响,因此难以分析、表示和生成。本发明的目标是给定单张图像,全自动端到端的重建一个高保真的发丝模型。我们采用一种coarse-to-fine的策略并结合所提出的体素对齐的隐式函数及亮度图得到高分辨率的3d头发几何特征再利用所设计的隐式函数实现高效并行的发丝生长。图1说明了本发明中网络的结构及数据流通方向。具体包括如下步骤:
[0047]
步骤一:对于一张给定的肖像图像i,本发明的目标是得到对应的3d发丝模型。因此首先构建头部模型(depth bust map)并基于输入的单张肖像图像提取对应的头发2d方向图(2dorientation map)和亮度图(luminance map);具体如下:
[0048]
使用头发分割网络获得头发的掩模(mask),然后使用gabor滤波器提取头发的2d方向图,将图像i转换到cie xyz颜色空间再从cie xyz转换到lab颜色空间,得到亮度图。利用3dbust模型渲染得到2d头部模型(bust map),然后使用landmark将2d方向图和亮度图的人脸与2d头部模型通过计算仿射变换矩阵对齐以统一网络的输入,本实施例中还将2d头部模型组合进2d方向图中,便于后续头发生长。
[0049]
步骤二:将2d方向图和亮度图输入至一训练好的头发隐式表达模型(irhairnet)提取获得头发3d方向场和3d占位场;
[0050]
其中2d方向图用于粗模块(coarse module)的输入,如图1,coarse module包含u-net架构、多个隐式体素化(implicit tovoxel)模块和第一occupancy解码器、第一orientation解码器,u-net架构包含依次连接的多个卷积单元和反卷积单元,其中,implicit tovoxel模块包含一个特征维度扩展和沿着z方向复制的操作以及一个用于细化特征的第一神经网络,即,将每个体素所对应的z坐标z(v)及其对应的卷积单元输出的每个体素v的图像特征i(x)拼接作为隐式体素化模块的输入,实现沿着z方向复制和特征维度扩展,再利用第一神经网络(mlp)细化其特征向量,最后细化的特征向量与对应卷积单元的上一层反卷积单元的输出融合输出每个体素v对应的隐式编码f(v),同时作为下一层反卷积单元的输入;该过程具体表示为:将2d的图像特征转换为体素级的3d特征网格,如下公式所示:
[0051]
f(v)=θ(i(x),z(v))+ir(x)
[0052]
其中,图像特征i(x)是卷积单元的输出,ir(x)是i(x)对应卷积单元的上一层的反卷积单元的输出;f(
·
)也是一个隐函数,它将每个体素v的坐标映射到一个隐式编码,θ表示隐式体素化模块第一神经网络的参数,其中x是空间中体素投影到平面上对应的2d坐标x。因此,经过该模块,特征能从m
x
*my*c扩展为mz*m
x
*my*c(本实施例为从8*8*c扩展为6*8*8*c),其中c为特征的通道数,mz、m
x
、my分别表示z、x、y三个维度的特征数量;随着u-net中反卷积decode的进行,最终可以得到2k*mz*2k*m
x
*2k*my*2k*c,k为反卷积的数量;以图中4个反卷积层为例,本实施例最终可以得到96*128*128*c1的3d特征,即空间中每一个体素都对应一
个c1维的特征向量(体素对齐的隐函数)。对于空间中的任意点p,可以查询到其对应的体素的隐式编码,将该编码与该点的z坐标拼接作为第一occupancy解码器、第一orientation解码器的输入即可解码出该点对应的第一occupancy和第一orientation值公式如下:
[0053][0054][0055]
其中,fc(*)表示第一occupancy解码器的输出,fr(*)表示第一orientation解码器的输出;f(v
p
)表示空间中的任意点p对应的体素的隐式编码,z(p)表示点p的z坐标。
[0056]
在同一个体素内可以通过采样更多的点来提高特征的分辨率。
[0057]
为了生成具有更多细节的3d头发几何特征,将高分辨率的亮度图作为精模块(fine module)的输入,精模块包含一个用于提取亮度图任意点p局部特征的第二神经网络和第二occupancy解码器、第二orientation解码器,其中,第二神经网络提取的任意点p的局部特征、第一解码器中间层输出和点p的z坐标作为第二解码器的输入,第二occupancy解码器、第二orientation解码器分别解码获得对应的3d方向场和3d占位场、本实施例以hourglass网络作为第二神经网络为例,如下公式所示:
[0058][0059][0060]
其中ωc(p)代表第一occupancy解码器的中间层输出,ωr(p)代表第一orientation解码器的中间层输出,是p点所对应的全局特征,h代表高分辨率,ih(π(p))代表p点投影到二维空间后对应的高分辨率亮度图经第二神经网络提取的局部特征。分别表示第二occupancy解码器、第二orientation解码器,用来拟合一个隐函数,它将空间中的坐标及相应的特征向量映射为occupancy或orientation值。对整个空间密集采样,将每个点的orientation和occupancy值用体素表示得到最终的3d方向场(3d orientation field)和3d占位场(3d occupancy field)。
[0061]
其中,所述头发隐式表达模型通过将训练数据集的每个样本作为头发隐式表达模型的输入,以最小化损失函数为目标训练获得;所述损失函数为occupancy值、orientation值与真值的误差。本实施例中采用粗模块和精模块分别训练,具体地,先将训练数据集的每个样本作为头发隐式表达模型的输入,将粗模块输出的occupancy或orientation值与真值构建损失函数,进行训练,直至损失函数收敛或达到预设的最大训练次数;然后冻结粗模块的参数,将训练数据集的每个样本作为头发隐式表达模型的输入,将粗模块输出的occupancy或orientation值与真值构建损失函数,进行训练,直至损失函数收敛或达到预设的最大训练次数。
[0062]
粗模块和精模块的采用的损失函数如下:
[0063][0064]
[0065][0066]
其中,表示粗模块或精模块输出的occupancy值,表示粗模块或精模块输出的orientation值,d(p)是任意的p点的深度值,τ是阈值,本实施例中取值为10,可根据实际情况调整,λ是正负样本权重因子,本实施例中取值为0.5,wp表示点p的权重,z(p)-d(p)大于阈值时,表明点p是被遮挡的点,给予更小的权重,反之亦然。
[0067]
上述损失对于看不见的发丝分配较低的权重以学习一个经验性看似合理的结构,对看得见的部分则分配更大的权重使其能保留图像中可见的发丝结构。
[0068]
进一步地,头发生长模型growingnet利用8*8*8的网格大小将整个3d方向场分为若干块(patch),每个patch都有其局部的发丝生长趋势,这些patch使用同一个编码器encoder e(包含3个下采样卷积操作)将所有信息存储在一个隐式编码z中,所有patch的隐式编码组成一个特征网格(feature grid),特征网格上每一个点代表一个patch;在对应patch中取任意一个点pn,结合其隐式编码z使用一个或两个解码器decoder输出其下一个点和/或上一个点的空间位置p
n+1
/p
n-1
,如下公式所示:
[0069][0070][0071]
其中,g()、g
inv
()分别表示下一个点、上一个点的空间位置解码器,zi,pi分别是第i个patch对应的隐式编码和中心点坐标,d是patch的大小,即对于所有patch都将坐标转换到一个相同的局部坐标系下,因此可以仅使用一个相同的编码器encoder和解码器decoder学习所有块中头发的生长方式。同时可以在整个空间中采样上万个初始点并行计算,结合3d占位场的约束经过迭代后即可得到完整的3d发丝模型。
[0072]
所提出的growingnet将3d orientation field分为许多小得patch,不仅使特征更容易解码也使头发生长并行更加方便和高效。
[0073]
优选地,growingnet包含两个解码器(mlp)从一个起始点开始双向生长发丝。
[0074]
其中,头发生长模型的在训练时采用点pn经过头发生长模型预测得到的上一个点及下一个点的值与上一个点的真值和下一个点的真值的l1 loss作为损失函数,表示如下:
[0075][0076]
其中,||*||1表示一范数。
[0077]
图2是本发明方法的重建结果,可以看出,本发明重建的发丝模型具有高分辨率。
[0078]
与前述基于隐式表达的单目3d头发建模方法的实施例相对应,本发明还提供了基于隐式表达的单目3d头发建模方法装置的实施例。
[0079]
本发明实施例提供的一种基于隐式表达的单目3d头发建模装置,包括一个或多个处理器,用于实现上述实施例中的基于隐式表达的单目3d头发建模方法。
[0080]
本发明基于隐式表达的单目3d头发建模装置的实施例可以应用在任意具备数据处理能力的设备上,该任意具备数据处理能力的设备可以为诸如计算机等设备或装置。
[0081]
装置实施例可以通过软件实现,也以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在任意具备数据处理能力的设备的处理器将非易失性存储器中对应的计算机程序指令读取到内存中运行形成的;从硬件层面而言,一般包括处理器、内存、网络接口、以及非易失性存储器,除此之外,实施例中装置所在的任意具备数据处理能力的设备通常根据该任意具备数据处理能力的设备的实际功能,还可以包括其他硬件,对此不再赘述。
[0082]
上述装置中各个单元的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。
[0083]
对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本发明方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
[0084]
本发明实施例还提供一种计算机可读存储介质,其上存储有程序,该程序被处理器执行时,实现上述实施例中的基于隐式表达的单目3d头发建模方法。
[0085]
所述计算机可读存储介质可以是前述任一实施例所述的任意具备数据处理能力的设备的内部存储单元,例如硬盘或内存。所述计算机可读存储介质也可以是任意具备数据处理能力的设备,例如所述设备上配备的插接式硬盘、智能存储卡(smart media card,smc)、sd卡、闪存卡(flash card)等。进一步的,所述计算机可读存储介质还可以既包括任意具备数据处理能力的设备的内部存储单元也包括外部存储设备。所述计算机可读存储介质用于存储所述计算机程序以及所述任意具备数据处理能力的设备所需的其他程序和数据,还可以用于暂时地存储已经输出或者将要输出的数据。
[0086]
显然,上述实施例仅仅是为清楚地说明所作的举例,而并非对实施方式的限定。对于所属领域的普通技术人员来说,在上述说明的基础上还可以做出其他不同形式的变化或变动。这里无需也无法把所有的实施方式予以穷举。而由此所引申出的显而易见的变化或变动仍处于本发明的保护范围。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1