模型生成、3D发型生成方法、装置、电子设备及存储介质与流程

文档序号:31626631发布日期:2022-09-24 00:47阅读:52来源:国知局
模型生成、3D发型生成方法、装置、电子设备及存储介质与流程
模型生成、3d发型生成方法、装置、电子设备及存储介质
技术领域
1.本发明实施例涉及图像处理技术领域,特别是涉及一种模型生成、3d发型生成方法、装置、电子设备及存储介质。


背景技术:

2.3d头发重建指的是根据平面人头图像重建得到三维立体的人头发型,当前通常将3d头发重建任务转化为一种回归任务,以计算3d头发点的坐标信息。但在当下传统的通过回归重建3d头发的模型中,随着模型网络结构的加深必然会伴随着头发位置信息的不断丢失,使得模型生成的3d发型中的头发位置信息与平面人头图像中的头发位置信息不相适应且差距较大,从而最终导致模型生成的3d发型效果不好,与平面人头图像的差距较大。


技术实现要素:

3.本发明实施例的目的在于提供一种模型生成、3d发型生成方法、装置、电子设备及存储介质,以尽可能减少3d发型重建模型中头发位置信息的丢失。具体技术方案如下:
4.在本发明实施的第一方面,首先提供了一种模型生成方法,该方法包括:
5.获取3d发型图;
6.将所述3d发型图处理成2d发型图;
7.对所述2d发型图进行预处理,得到所述2d发型图对应的第一预处理数据;
8.将所述第一预处理数据作为输入,将所述2d发型图对应的3d发型图作为输出的目标,对初始模型进行训练;其中,所述初始模型的结构为:所述初始模型包括编码器和解码器,所述编码器和所述解码器均由多个串行的单元模块构成,所述编码器与所述解码器之间连接有多个并行的3d卷积模块;所述单元模块的输入端与输出端之间和所述3d卷积模块的输入端与输出端之间均具有直连分支,每个单元模块对数据流上游相连接的单元模块中输入的特征信息进行融合,使得所述单元模块能不断融合第一预处理数据的特征信息,所述特征信息至少包括位置信息,位置信息包括头发点的坐标信息;
9.将训练完成的初始模型确定为3d发型重建模型。
10.在本发明实施的第二方面,还提供了一种3d发型生成方法,所述方法包括:
11.获取待处理的2d发型图;
12.对所述待处理的2d发型图进行预处理,得到所述待处理的2d发型图对应的第二预处理数据;
13.将所述第二预处理数据输入至如本发明第一方面所述的模型生成方法生成的3d发型重建模型,得到所述3d发型重建模型输出的3d发型图。
14.在本发明实施的第三方面,还提供了一种模型生成装置,该装置包括:
15.第一图像获取模块,用于获取3d发型图;
16.第一图像处理模块,用于将所述3d发型图处理成2d发型图;
17.第一数据处理模块,用于对所述2d发型图进行预处理,得到所述2d发型图对应的
第一预处理数据;
18.模型训练模块,用于将所述第一预处理数据作为输入,将所述2d发型图对应的3d发型图作为输出的目标,对初始模型进行训练;其中,所述初始模型的结构为:所述初始模型包括编码器和解码器,所述编码器和所述解码器均由多个串行的单元模块构成,所述编码器与所述解码器之间连接有多个并行的3d卷积模块;所述单元模块的输入端与输出端之间和所述3d卷积模块的输入端与输出端之间均具有直连分支,每个单元模块对数据流上游相连接的单元模块中输入的特征信息进行融合,使得所述单元模块能不断融合第一预处理数据的特征信息,所述特征信息至少包括位置信息,所述位置信息包括头发点的坐标信息;
19.模型生成模块,用于将训练完成的初始模型确定为3d发型重建模型。
20.在本发明实施的第四方面,还提供了一种3d发型生成装置,所述装置包括:
21.第二图像获取模块,用于获取待处理的2d发型图;
22.第二数据处理模块,用于对所述待处理的2d发型图进行预处理,得到所述待处理的2d发型图对应的第二预处理数据;
23.3d发型获取模块,用于将所述第二预处理数据输入至如本发明第一方面所述的模型生成方法生成的3d发型重建模型,得到所述3d发型重建模型输出的3d发型图。
24.在本发明实施的第五方面,还提供了一种电子设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述计算机程序被所述处理器执行时实现如本发明实施例第一方面所述的模型生成方法的步骤或本发明实施例第二方面所述的3d发型生成方法中的步骤。
25.在本发明实施的第六方面,还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如实现本发明实施例第一方面所述的模型生成方法的步骤或本发明实施例第二方面所述的3d发型生成方法中的步骤。
26.采用本发明实施例提供的模型生成方法,将3d发型重建模型设计成编解码器结构,编解码器均由多个单元模块串行构成,且编解码器之间连接有多个并行的3d卷积模块,而单元模块的输入端与输出端之间和3d卷积模块的输入端与输出端之间均具有直连分支。通过本方法所提出的模型结构和该直连分支,每个串行的单元模块均能对其数据流上游相连接的单元模块中输入的特征信息进行融合,且解码器能够通过多个并行的3d卷积模块不断地对编码器的信息进行融合,从而使得3d发型重建模型中的每个单元模块均能对其数据流上游相连接的单元模块中输入的特征信息进行融合,也就使得模型中的单元模块能不断融合模型低层的位置信息(即第一预处理数据的头发点坐标信息),从而保证模型随着网络结构的加深,尽可能地少减少头发的位置信息,使得训练得到的3d发型重建模型能够充分利用图像中头发的位置信息进行处理,最终输出的3d发型图与输入的2d发型图更接近、更匹配,从而得到能很好适用于回归任务的3d发型重建模型。
附图说明
27.为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例的描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图
获得其他的附图。
28.图1是本发明一实施例示出的一种模型生成方法的流程图;
29.图2是本发明一实施例示出的一种初始模型的结构示意图;
30.图3是本发明一实施例示出的一种3d发型获取方法的流程图;
31.图4是本发明实施例示出的一种发型插值算法的示意图;
32.图5是本发明一实施例示出的一种3d发型分类方法的流程图;
33.图6是本发明一实施例示出的一种数据处理方法的流程图;
34.图7是本发明一实施例示出的一种单元模块信息处理的流程图;
35.图8是本发明一实施例示出的一种模型生成方法的示意图;
36.图9是本发明一实施例示出的一种3d发型生成方法的流程图;
37.图10是本发明一实施例提供的模型生成装置的结构框图;
38.图11是本发明一实施例提供的3d发型生成装置的结构框图;
39.图12是本发明一实施例示出的一种电子设备的示意图。
具体实施方式
40.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
41.由于平面人头图像局部头发的不可见性以及头发结构的高度可变性,使得进行3d头发重建变得非常困难,导致3d头发重建一直以来都是比较复杂的任务。因此,将3d头发重建任务转化为一种回归任务,可以将3d头发重建任务变得相对清晰很多:3d头发可以表示为多根发束的形式,每根发束可以被描述成多个点的连线组合,因此将复杂的3d头发重建任务转化为多个发束点预测的回归任务,进而可以大大降低3d头发重建任务的复杂性。
42.其中,回归任务需要充分考虑头发的位置信息(头发点坐标)和语义信息(头发的纹理、颜色等)。而在当下传统的通过回归重建3d头发的模型中,越低层的结构部分(靠近模型输入的部分)往往提取到更多的位置信息,而随着网络结构的加深,越高层部分(靠近模型输出的部分)会获取到更多的语义信息,其中网络结构的加深必然会伴随低层位置信息的不断流失以及高层语义信息的增多。而3d头发回归的本质就是计算头发点的坐标信息,其对头发的位置信息很敏感,模型中位置信息的不断流失必然会使得模型生成的3d发型中的头发位置信息与平面人头图像中的头发位置信息不相适应且差距较大,导致模型最终输出的3d发型效果不好,与平面人头图像的差距较大。
43.因此,为了至少部分地解决上述问题以及其他潜在问题中的一个或者多个,本发明实施例提出了一种模型生成方法,该方法将模型网络结构设计成单元模块串行和3d卷积模块并行的形式,单元模块的输入端与输出端之间与3d卷积模块的输入端与输出端之间均具有直连分支,各模块内部均能通过直连分支对自身的输入输出进行特征融合,从而尽可能保证单元模块能不断融合模型低层的位置信息,以尽可能保证单元模块内语义信息增多的同时,位置信息尽可能地少减少。
44.参考图1,图1是本发明一实施例示出的一种模型生成方法的流程图。如图1所示,
本实施例的模型生成方法可以包括以下步骤:
45.步骤s11:获取3d发型图。
46.步骤s12:将所述3d发型图处理成2d发型图。
47.在本实施例中,先获取多个3d发型图,再对3d发型图进行处理以得到3d发型图所对应的2d发型图。在一种实施方式中,可以是将3d发型图映射成2d发型图表示,如将3d发型图正交投影,将3d发型图里的z轴去掉转换为平面图像,可以理解,将3d发型图处理成2d发型图有多种方式,本实施例对此不作限制。
48.构建模型需先获取训练样本集,本实施例中的训练样本集即为:多个3d发型图,以及该多个3d发型图所处理成的各自对应的2d发型图。可以理解为本实施例中的训练样本集为多组样本图像对,每组样本图像对为一个2d发型图和该2d发型图所对应的一个3d发型图,且在训练过程中,2d发型图的标签为2d发型图对应的3d发型图中的各3d头发点的坐标信息。此外,需要说明的是,本实施例中的3d发型图为包含人头结构的3d发型图,2d发型图为包含人头结构的2d发型图,所包含的人头结构中是否包括人脸均可。
49.步骤s13:对所述2d发型图进行预处理,得到所述2d发型图对应的第一预处理数据。
50.本实施例中,考虑到样本训练集中的2d发型图是通过3d发型图处理得到的,其与3d发型重建模型应用时所输入的2d发型图(即真实人头发型平面图像)存在差异。因此,为了使模型训练与模型应用时用到的2d发型图的差异尽可能不会对模型应用时生成的3d发型图造成影响,不影响模型的训练效果,本实施例在获得2d发型图后,对2d发型图进行预处理,以得到2d发型图对应的第一预处理数据。其中,本实施例中的预处理可以为从2d发型图中提取出与真实人头发型平面图像差距较小的特征信息的处理方法。本实施例中的第一预处理数据为:2d发型图中进行模型训练时有用、且与真实人头发型平面图像差别较小的数据。本实施例用第一预处理数据进行模型训练,更利于训练出效果更好的3d发型重建模型。
51.步骤s14:将所述第一预处理数据作为输入,将所述2d发型图对应的3d发型图作为输出的目标,对初始模型进行训练。
52.本实施例中,得到2d发型图对应的第一预处理数据后,将第一预处理数据作为初始模型的输入,将训练样本集中2d发型图对应的3d发型图作为输出的目标,对初始模型进行训练。其中,本实施例中初始模型的结构设计如下:初始模型包括编码器和解码器,且编码器和解码器均由多个串行的单元模块构成,每个单元模块的输入端与输出端之间均具有直连分支,而编码器与解码器之间连接有多个并行的3d卷积模块,每个3d卷积模块的输入端与输出端之间也均具有直连分支,其中直连分支可以是跳跃连接,用以将模块的输入通过直连边加入卷积后的输出,从而进行模块输入与输出的特征融合。如图2所示,图2是本发明一实施例示出的一种初始模型的结构示意图,需要说明的是,图2中示意的直连分支只是为了更好地表明数据流的流向,实际上,直连分支均在各模块(各单元模块和各3d卷积模块)的内部,用以进行模块输入和输出的特征融合。
53.在本实施例中,通过整个初始模型结构和模块中的直连分支,单元模块能够对自身的输入与输出进行特征融合,自身的输入为其数据流上游相连接的单元模块的最终输出,而该单元模块数据流上游相连接的单元模块的最终输出为该单元模块数据流上游相连接的单元模块的输入与输出的特征融合的结果,因此,初始模型中每个单元模块均能对其
数据流上游相连接的单元模块中输入的特征信息进行融合,其中,特征信息至少包括:头发的位置信息(如头发点的坐标信息)和头发的语义信息(如头发的颜色、纹理等信息),从而使得在模型训练过程中,初始模型的单元模块能不断融合第一预处理数据的位置信息,充分利用2d发型图中头发的位置信息进行训练,以使初始模型最终输出的3d发型图能与输入的2d发型图更接近、更匹配。
54.步骤s15:将训练完成的初始模型确定为3d发型重建模型。
55.本实施例中,经过对初始模型的训练,当模型训练效果到达目标、符合需求时,结束模型的训练,将训练结束时的初始模型确定为3d发型重建模型。
56.其中,在一种可选实施方式中,可以是当初始模型输出的3d发型图中的各头发点与初始模型的标签(3d发型图中的各3d头发点)的坐标误差小于预设阈值时,结束训练。本实施例的头发点可以是指头发上的关键点,也可以是指组成头发的多个点。其中,预设阈值为事先根据经验设置好的、符合项目需求的模型输出与模型标签之间的最大坐标值误差。预设阈值可以根据训练效果和人工经验进行相应调整,本实施例对预设阈值的具体数值不作任何限制。
57.通过本实施例提出的模型生成方法,每个串行的单元模块均能对其数据流上游相连接的单元模块中输入的特征信息进行融合,且解码器能够通过多个并行的3d卷积模块不断地对编码器的信息进行融合,从而使得3d发型重建模型中的每个单元模块均能对其数据流上游相连接的单元模块中输入的特征信息进行融合,也就使得模型中的单元模块能不断融合模型低层的位置信息,从而保证了模型随着网络结构的加深能尽可能地少减少头发的位置信息,使得训练出的3d发型重建模型能够充分利用图像中头发的位置信息进行处理,以使最终输出的3d发型图与输入的2d人头图像更接近、更匹配,从而生成能很好适用于回归任务的3d发型重建模型。
58.结合以上实施例,在一实施方式中,如图2所示,所述编码器和所述解码器分别由多个单元模块串联构成,且所述编码器中的最后一个单元模块与所述解码器中的第一个单元模块串联连接;其中,所述编码器中的单元模块与所述解码器中的单元模块一一对应;所述编码器中的各单元模块与各单元模块在所述解码器中对应的单元模块之间连接有3d卷积模块。
59.本实施例中的编码器由多个相同的单元模块串联构成,解码器也由多个相同的单元模块串联构成,且编码器中的最后一个单元模块与解码器中的第一个单元模块串联连接,从而构成了模型中的编解码器。其中,编码器中的单元模块与解码器中的单元模块一一对应,也就是说,编码器中的每一个单元模块都有一个对应的解码器中的单元模块,且为基于编解码器连接处呈对称关系。举例来说,如编码器和解码器分别由3个单元模块串联构成,则编码器中的第一个单元模块对应解码器中的第三个单元模块,编码器中的第二个单元模块对应解码器中的第二个单元模块,编码器中的第三个单元模块对应解码器中的第一个单元模块。
60.本实施例中,编码器中的各单元模块与各单元模块在解码器中对应的单元模块之间连接有3d卷积模块,本实施例中的3d卷积模块本质上为一个3d卷积操作,用于将编码器和解码器的信息融合起来。继续以上述示例举例:如编码器和解码器分别由3个单元模块串联构成,则编码器中的第一个单元模块与其对应的解码器中的第三个单元模块之间,连接
有一个3d卷积模块;编码器中的第二个单元模块与其对应的解码器中的第二个单元模块之间,连接有一个3d卷积模块;编码器中的第三个单元模块与其对应的解码器中的第一个单元模块之间,连接有一个3d卷积模块。
61.在本实施例中,初始模型中各模块的输出为:
62.针对单元模块:单元模块对输入进行处理后得到的输出并不会直接给到下一单元模块,或与其连接的3d卷积模块,而是会将单元模块的输入与输出通过单元模块中的直连分支(如跳跃连接,用以将模块的输入通过直连边加入卷积后的输出)进行特征融合,从而得到单元模块的最终输出,再将最终输出给到下一单元模块,或与其连接的3d卷积模块。
63.针对3d卷积模块:3d卷积模块对输入进行处理后得到的输出也并不会直接给到与其连接的解码器中的单元模块,而是会将3d卷积模块的输入与输出通过3d卷积模块中的直连分支(如跳跃连接)进行特征融合,从而得到3d卷积模块的最终输出,再将最终输出与其连接的解码器中的单元模块。
64.其中,本实施例中各模块的输入为:编码器中的首个单元模块的输入为:第一预处理数据;编码器中除首个单元模块外的其他单元模块的输入为:上一个单元模块的最终输出;3d卷积模块的输入为:与其连接的编码器中的单元模块的最终输出;解码器的单元模块的输入为:上一个单元模块的最终输出,以及,与解码器的单元模块相连接的3d卷积模块的最终输出。
65.通过本实施例所提出的模型结构,编码器与解码器中的各单元模块一一对应,且编解码器中对应的单元模块之间连接有3d卷积模块,从而使得编码器与解码器之间能够通过多个并行的3d卷积模块进行信息融合,从而进一步不断融合模型中的低层位置信息,在模型训练过程中尽可能少减少模型中的位置信息。本实施例编码器中的各单元模块能够不断融合前一单元模块(即指数据流上游相连接的单元模块)的输入信息,而解码器中的各单元模块不仅能融合前一单元模块的输入信息,还能通过3d卷积模块对编码器中相对应模块的输入信息进行融合,从而使得在模型训练过程中,单元模块能不断融合模型低层的位置信息(第一预处理数据的位置信息),以保证随着模型网络结构的加深,在尽可能保证单元模块内语义信息增多的同时位置信息少减少,以提升模型的训练效果。
66.结合以上实施例,在一种实施方式中,考虑到高精度的3d头发数据依赖于专业的人工设计才能达到,获取成本将会很高,深度学习需要海量的训练数据才会有较好的效果,而现有的能开源使用的3d头发数据很少,因此,如何在现有的3d头发数据的基础上得到更多的3d头发数据是本实施例必须解决的问题。因此本发明实施例还提供了一种3d发型获取方法,在该方法中,步骤s11包括步骤s31至步骤s35。步骤s31至步骤s35之间的关系如图3所示,图3是本发明一实施例示出的一种3d发型获取方法的流程图。
67.步骤s31:对多个原始3d发型图中的各原始3d发型进行分类。
68.本实施例中,可从现有的可开源使用的3d头发数据中获取多个3d发型图作为原始3d发型图,并对原始3d发型图中的各原始3d发型进行分类。
69.步骤s32:对属于同一类型的两个原始3d发型分别进行发根点位的聚类,分别得到所述两个原始3d发型中每个原始3d发型的多个发束中心簇。
70.本实施例中,对原始3d发型进行分类后,可以得到多个类型的原始3d发型,每个类型的原始3d发型为一组,对属于同一类型(即属于同一组)的两个原始3d发型分别进行发根
点位的聚类,分别得到该两个原始3d发型中每个原始3d发型的多个发束中心簇,其中发根点位指的是每根头发与头皮的交点。本实施例可以根据发型的样式以及实际效果确定聚类分为发束中心簇的具体数量,如可以将每个发型的所有发束聚类成7个发束中心簇,而对发根点位进行聚类可以采用多种实现手段,例如可以采用k-means算法进行发根点位的聚类,本实施例对此均不作任何限制。
71.步骤s33:将所述两个原始3d发型进行以所述多个发束中心簇为标准的两两插值,获得属于同一类型的多个3d新发型。
72.本实施例中,得到同一类型下两个原始3d发型中每个原始3d发型的多个发束中心簇后,将该两个原始3d发型进行以多个发束中心簇为标准的两两插值:本实施例将两个不同原始3d发型中一个原始3d发型中的任一发束中心簇,与另一个原始3d发型中的任一发束中心簇分别进行两两插值计算,从而得到属于该类型下的多个3d新发型。也就是说,同一类型下的一个原始3d发型中的每个发束中心簇均能与该同一类型下的另一个原始3d发型中的每个发束中心簇进行插值计算,从而有多种插值组合方式,每种插值计算均能获得一个3d新发型,从而可通过该方式得到属于同一类型的多个3d新发型,而对于多个类型的原始3d发型,均可用该方法得到属于每一类型的多个3d新发型。
73.示例的,如图4所示,图4是本发明实施例示出的一种发型插值算法的示意图。原始3d发型进行分类后,在同一类型q类型下有两个原始3d发型分别为原始3d发型a和原始3d发型b,原始3d发型a有7个发束中心簇:a1、a2、a3、a4、a5、a6、a7,原始3d发型b也有7个发束中心簇:b1、b2、b3、b4、b5、b6、b7,那么可由a1和b1通过插值算法生成一个3d新发型,可由a1和b2通过插值算法生成一个3d新发型,可由a1和b3通过插值算法生成一个3d新发型
……
可由a2和b1通过插值算法生成一个3d新发型,可由a2和b2通过插值算法生成一个3d新发型
……
以此类推,这样将两个原始3d发型中的7个发束中心簇均进行两两插值计算,则理论上来说原始3d发型a和原始3d发型b一共能生成49个3d新发型。
74.需要说明的是,本实施例中的重点是对每个原始3d发型进行发根点位的聚类得到每个原始3d发型的多个发束中心簇,再对属于同一类型的两个原始3d发型以多个发束中心簇为标准的两两插值,从而得到每一类型下的多个3d新发型,因此本实施例可以是将所有类型下的所有原始3d发型均进行发根点位的聚类,得到多个发束中心簇后,再来分别进行同一类型下的原始3d发型发束中心簇的两两插值,生成新发型;也可以是,一个类型一个类型地进行处理:即在一个同一类型下的所有原始3d发型均进行发根点位的聚类,得到多个发束中心簇后,进行该类型下的原始3d发型发束中心簇的两两插值,生成新发型;然后再在下一个类型下的所有原始3d发型均进行发根点位的聚类,得到多个发束中心簇后,进行该下一个类型下的原始3d发型发束中心簇的两两插值,生成新发型,本实施例对此不作任何限制。
75.步骤s34:将获得的属于各类型的多个3d新发型的3d新发型图,添加到包含所述多个原始3d发型图的3d发型库中。
76.本实施例中,获得属于每一类型的多个3d新发型后,将获得的属于各类型的多个3d新发型的3d新发型图(即获得的每一类型下的多个3d新发型图),添加进包含多个原始3d发型图的3d发型库中,以进一步扩充3d发型库中的3d发型数据,为建立模型提供训练数据集,提升模型的训练效果。
77.步骤s35:从所述3d发型库中获取3d发型图。
78.在进行初始模型训练时,从已经扩充了3d新发型图的3d发型库中获取3d发型图,从而进行后续训练样本集的构建。
79.在本实施例中,通过插值算法对原始3d发型图进行处理,在现有的原始3d发型图的基础上获取更多的3d新发型图,从而使得初始模型可以在尽可能多的训练数据的基础上进行训练,以得到更好的训练效果,进一步提升3d发型重建模型的输出效果。
80.结合以上实施例,在一种实施方式中,本发明还提供了一种3d发型分类方法,在该方法中,步骤s31包括步骤s51至步骤s54。步骤s51至步骤s54之间的关系如图5所示,图5是本发明一实施例示出的一种3d发型分类方法的流程图。
81.步骤s51:将所述原始3d发型图映射成原始2d发型图。
82.本实施例中,将多个原始3d发型图均分别映射成原始2d发型图,得到多个原始2d发型图。
83.步骤s52:对所述原始2d发型图进行图像分割,得到所述原始2d发型图中头发区域对应的掩膜,根据所述掩膜进行发型长度的划分,得到划分结果。
84.本实施例中,可通过图像分割算法或专门的图像分割模型对获得的原始2d发型图进行图像分割,得到原始2d发型图的掩膜,本实施例中的掩膜(mask)为与原始2d发型图相同大小,且每个像素所对应的浮点数的数值均在0到1之间的灰度图。并从原始2d发型图的掩膜中确定原始2d发型图中头发区域对应的掩膜,如头发区域对应的掩膜的浮点数值为1,从而确定原始2d发型图中的头发区域。确定出原始2d发型图中头发区域对应的掩膜后,根据该掩膜进行发型长度的划分,得到划分结果:可以是根据头发掩膜将发型进行长中短的划分,如确定头发的尾部过了下巴,则定为中发;如确定头发的尾部过了耳朵,则定为短发;如确定头发的尾部过了肩膀,则定为长发等等,从而得到头发是属于长发、中发还是短发的划分结果。
85.步骤s53:对所述原始2d发型图中头发区域进行方向图的计算,确定头发的曲率。
86.本实施例中,通过分割算法确定原始2d发型图中的头发区域后,对原始2d发型图中头发区域进行方向图的计算,从而确定头发的曲率。例如可以是通过gabor filter来滤波头发区域,生成一系列的方向角,再根据方向角来确定头发的曲率,如确定头发是直发还是卷发。
87.步骤s54:根据所述头发的曲率以及所述划分结果,确定每个原始3d发型的所属类型。
88.本实施例确定出划分结果和头发的曲率后,可以根据划分结果和头发的曲率,确定出每个原始3d发型的所属类型:如可以根据头发是长是短还是中,以及根据头发是卷还是直,从而将原始3d发型划分成短直、短卷、中直、中卷以及长直和长卷六种类型,从而实现原始3d发型的分类。
89.在本实施例中,通过将原始3d发型映射成原始2d发型图表示,再对2d发型图进行图像分割以及方向图的计算,从而精准进行原始3d发型的自动分类。
90.结合以上实施例,在一种实施方式中,本发明还提供了一种数据处理方法,在该方法中,步骤s13包括步骤s61至步骤s64。步骤s61至步骤s64之间的关系如图6所示,图6是本发明一实施例示出的一种数据处理方法的流程图。
91.步骤s61:通过滤波器对所述2d发型图进行处理,得到所述2d发型图的方向图。
92.本实施例中,通过滤波器对2d发型图进行处理,得到2d发型图的方向图。其中,本实施例可以是通过gabor filter对2d发型图进行处理,从而得到2d发型图的方向图。
93.步骤s62:对所述2d发型图进行图像分割,得到所述2d发型图头发区域对应的掩膜。
94.在本实施例中,步骤s62与上述步骤s52中得到原始2d发型图头发区域对应的掩膜的方法相同,可以是通过图像分割算法或专门的图像分割模型对2d发型图进行图像分割,得到2d发型图的掩膜,再从2d发型图的掩膜中确定2d发型图中头发区域对应的掩膜。
95.步骤s63:通过人体轮廓识别模型对所述2d发型图进行处理,得到所述2d发型图的人头轮廓信息。
96.本实施例的人体轮廓识别模型专门用于从图像中提取图像中的人体轮廓信息,通过人体轮廓识别模型对2d人头图像进行处理,从而得到2d人头图像中的人头轮廓信息。
97.步骤s64:将所述2d发型图的方向图、所述2d发型图头发区域对应的掩膜和所述2d发型图的人头轮廓信息作为所述第一预处理数据。
98.本实施例在得到2d发型图的方向图、2d发型图头发区域对应的掩膜和2d发型图的人头轮廓信息后,将2d发型图的方向图、2d发型图头发区域对应的掩膜以及2d发型图的人头轮廓信息作为第一预处理数据,以用于模型训练。
99.在本实施例中,在进行模型训练前,对2d发型图进行处理后分别得到2d发型图的方向图、2d发型图头发区域对应的掩膜和2d发型图的人头轮廓信息,再将2d发型图的方向图、2d发型图头发区域对应的掩膜和2d发型图的人头轮廓信息输入初始模型中进行模型训练,可以使通过3d发型数据训练出来的3d发型重建模型也能很好地适用于2d真实人头图像的处理,从而保证了3d发型重建模型的重建效果。
100.结合以上实施例,在一种实施方式中,所述初始模型还包括一个初始卷积模块,该初始卷积模块设置在编码器外部的数据流上游。该初始卷积模块用于对第一预处理数据进行升维处理,得到初步特征图,以作为编码器中首个单元模块的输入。
101.而在本实施例中,编码器中的每个单元模块以及解码器中的每个单元模块执行的步骤包括步骤s71至步骤s74,步骤s71至步骤s74之间的关系如图7所示,图7是本发明一实施例示出的一种单元模块信息处理的流程图。
102.步骤s71:对所述单元模块的输入进行信息提取,得到分辨率降低的第一特征图。
103.本实施例中,每个单元模块均会先对单元模块的输入进行信息提取,如通过一个stride=2的卷积完成输入的信息提取,从而得到分辨率降低的第一特征图。其中,由于单元模块分为编码器的首个单元模块、编码器除首个单元模块外的其他单元模块,以及解码器中的单元模块,而这些单元模块的输入均有所差别。下面以首个单元模块举例说明步骤s71:针对首个单元模块来说,其可以是通过一个stride=2的卷积完成初步特征图的信息提取,而此时的特征图的分辨率会降低,如变为初步特征图的一半,从而得到第一特征图。
104.步骤s72:通过双线性插值的方法将所述第一特征图的分辨率恢复到输入的分辨率,得到中间特征图。
105.本实施例得到第一特征图后,单元模块接着会通过双线性插值的方法将第一特征图的分辨率恢复到单元模块输入的分辨率,从而得到中间特征图。本实施例的单元模块进
行信息提取时会伴随着分辨率的下降,由于分辨率不断下降会丢失一定信息,因此单元模块再通过双线性插值方法将特征图的分辨率恢复,这样单元模块就能保持特征图的恒分辨率,尽可能避免信息的丢失。
106.步骤s73:增加所述中间特征图的通道数,得到最终特征图。
107.本实施例中,得到中间特征图后,还可以通过一个1*1卷积增加中间特征图的通道数,如将通道数变为单元模块输入时的两倍,从而得到最终特征图。由于卷积会在一定程度上减少输入的特征信息,因此本实施例的单元模块通过增加通道数来弥补丢失的信息。
108.步骤s74:通过所述直连分支将所述最终特征图和所述输入进行特征融合,得到所述单元模块的最终输出。
109.本实施例中,单元模块的输入端与输出端之间具有直连分支,单元模块可通过该直连分支将最终特征图和该单元模块的输入进行特征融合,以得到单元模块的最终输出。如本实施可以是通过带有1*1卷积的跳跃连接,以将该单元模块的输入的特征通道数与单元模块的输出的通道数保持一致,从而方便单元模块输入输出的特征融合。
110.在本实施例中,单元模块内部通过提取特征信息、保持特征图恒分辨率,增加特征通道数以及输入输出的特征融合,使得由单元模块构成的整个模型网络结构能够尽可能地避免特征的丢失,进一步保持了模型训练过程中的头发位置信息和语义信息。
111.此外在一实施例中,如图8所示,图8是本发明一实施例示出的一种模型生成方法的示意图。图8中的input image即为2d发型图,对2d发型图分别通过gabort filter(gabort滤波器)、segmentation(图像分割)以及bust model(人体轮廓识别模型)进行处理,分别得到2d orientation map(2d方向图)、hair mask(头发掩膜)以及bust depth(人头轮廓信息),再将这些输入至初始卷积模块,进行处理后再输入至encoder-decoder结构(编-解码器结构),其中,encoder(编码器)与decoder(解码器)之间并联有3个3d conv(3d卷积模块),3d卷积模块用于进行编码器和解码器之间的信息融合,其中图8中的“add”即表明3d卷积模块内部进行输入与输出之间的特征融合,最后再由解码器进行相应处理后输出最终结果。
112.结合以上实施例,在一种实施方式中,本发明还提供了一种3d发型生成方法,在该方法中,包括步骤s91至步骤s93。步骤s91至步骤s93的关系如图9所示,图9是本发明一实施例示出的一种3d发型生成方法的流程图。
113.步骤s91:获取待处理的2d发型图。
114.本实施例中,在需要进行3d发型重建时,可获取需要进行3d发型重建的2d发型图,即获取待处理的2d发型图。
115.步骤s92:对所述待处理的2d发型图进行预处理,得到所述待处理的2d发型图对应的第二预处理数据。
116.本实施例中,需对获取到的待处理的2d发型图进行预处理,从而得到待处理的2d发型图对应的第二预处理数据。其中,本步骤中进行预处理的方法可以与上述步骤s13或与步骤61至步骤64的方法相同,本实施例对此不作任何限制。
117.步骤s93:将所述第二预处理数据输入至如本发明上述任一实施例所述的模型生成方法生成的3d发型重建模型,得到所述3d发型重建模型输出的3d发型图。
118.本实施例中,将预处理后得到的第二预处理数据输入至预先训练好的3d发型重建
模型,即可得到该3d发型重建模型输出的3d发型图。本实施例中预先训练好的3d发型重建模型即为本发明上述任一实施例所述的模型生成方法生成的、最后训练得到的3d发型重建模型。
119.在本实施例中,通过预先训练好的、位置信息尽可能少减少的3d发型重建模型来对2d发型图进行3d发型重建,从而能够得到效果更好、与输入的2d发型图更接近、更匹配的3d发型。
120.需要说明的是,对于方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明实施例并不受所描述的动作顺序的限制,因为依据本发明实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作并不一定是本发明实施例所必须的。
121.基于同一发明构思,本发明一实施例提供了一种模型生成装置1000,参考图10,图10是本发明一实施例提供的模型生成装置的结构框图。如图10所示,该装置1000包括:
122.第一图像获取模块1001,用于获取3d发型图;
123.第一图像处理模块1002,用于将所述3d发型图处理成2d发型图;
124.第一数据处理模块1003,用于对所述2d发型图进行预处理,得到所述2d发型图对应的第一预处理数据;
125.模型训练模块1004,用于将所述第一预处理数据作为输入,将所述2d发型图对应的3d发型图作为输出的目标,对初始模型进行训练;其中,所述初始模型的结构为:所述初始模型包括编码器和解码器,所述编码器和所述解码器均由多个串行的单元模块构成,所述编码器与所述解码器之间连接有多个并行的3d卷积模块;所述单元模块的输入端与输出端之间和所述3d卷积模块的输入端与输出端之间均具有直连分支,每个单元模块对数据流上游相连接的单元模块中输入的特征信息进行融合,使得所述单元模块能不断融合第一预处理数据的特征信息,所述特征信息至少包括位置信息,所述位置信息包括头发点的坐标信息;
126.模型生成模块1005,用于将训练完成的初始模型确定为3d发型重建模型。
127.可选的,所述编码器和所述解码器均由多个串行的单元模块构成,包括:
128.所述编码器和所述解码器分别由多个单元模块串联构成,且所述编码器中的最后一个单元模块与所述解码器中的第一个单元模块串联连接;其中,所述编码器中的单元模块与所述解码器中的单元模块一一对应;
129.所述编码器与所述解码器之间连接有多个并行的3d卷积模块,包括:所述编码器中的各单元模块与各单元模块在所述解码器中对应的单元模块之间连接有3d卷积模块。
130.可选的,所述第一图像获取模块1001包括:
131.发型分类模块,用于对多个原始3d发型图中的各原始3d发型进行分类;
132.聚类模块,用于对属于同一类型的两个原始3d发型分别进行发根点位的聚类,分别得到所述两个原始3d发型中每个原始3d发型的多个发束中心簇;
133.新发型合成模块,用于将所述两个原始3d发型进行以所述多个发束中心簇为标准的两两插值,获得属于同一类型的多个3d新发型;
134.3d发型库构建模块,用于将获得的属于各类型的多个3d新发型的3d新发型图,添
加到包含所述多个原始3d发型图的3d发型库中;
135.3d发型图获取模块,用于从所述3d发型库中获取3d发型图。
136.可选的,所述发型分类模块,包括:
137.图像转换模块,用于将所述原始3d发型图映射成原始2d发型图;
138.第一图像分割模块,用于对所述原始2d发型图进行图像分割,得到所述2d发型图中头发区域对应的掩膜,根据所述掩膜进行发型长度的划分,得到划分结果;
139.头发曲率确定模块,用于对所述原始2d发型图中头发区域进行方向图的计算,确定头发的曲率;
140.发型分类子模块,用于根据所述头发的曲率以及所述划分结果,确定每个原始3d发型的所属类型。
141.可选的,所述第一数据处理模块1003,包括:
142.方向图确定模块,用于通过滤波器对所述2d发型图进行处理,得到所述2d发型图的方向图;
143.第二图像分割模块,用于对所述2d发型图进行图像分割,得到所述2d发型图头发区域对应的掩膜;
144.人头轮廓识别模块,用于通过人体轮廓识别模型对所述2d发型图进行处理,得到所述2d发型图的人头轮廓信息;
145.预处理数据确定模块,用于将所述2d发型图的方向图、所述2d发型图头发区域对应的掩膜和所述2d发型图的人头轮廓信息作为所述第一预处理数据。
146.可选的,所述初始模型还包括一个初始卷积模块,所述初始卷积模块设置在所述编码器外部的数据流上游,所述初始卷积模块用于对所述第一预处理数据进行升维处理,得到初步特征图,以作为所述编码器中首个单元模块的输入;所述装置1000还包括单元执行模块,所述单元执行模块用于执行所述编码器和所述解码器中每个单元模块需执行的步骤,所述单元执行模块包括:
147.第一执行模块,用于对所述单元模块的输入进行信息提取,得到分辨率降低的第一特征图;
148.第二执行模块,用于通过双线性插值的方法将所述第一特征图的分辨率恢复到输入的分辨率,得到中间特征图;
149.第三执行模块,用于增加所述中间特征图的通道数,得到最终特征图;
150.第四执行模块,用于通过所述直连分支将所述最终特征图和所述输入进行特征融合,得到所述单元模块的最终输出。
151.基于同一发明构思,本发明一实施例提供了一种3d发型生成装置1100,参考图11,图11是本发明一实施例提供的3d发型生成装置的结构框图。如图11所示,该装置1100包括:
152.第二图像获取模块1101,用于获取待处理的2d发型图;
153.第二数据处理模块1102,用于对所述待处理的2d发型图进行预处理,得到所述待处理的2d发型图对应的第二预处理数据;
154.3d发型获取模块1103,用于将所述第二预处理数据输入至如本发明上述任一实施例所述的模型生成方法生成的3d发型重建模型,得到所述3d发型重建模型输出的3d发型图。
155.基于同一发明构思,本发明另一实施例提供一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器执行时实现如本发明上述任一实施例所述的模型生成方法中的步骤或本发明上述实施例所述的3d发型生成方法中的步骤。
156.基于同一发明构思,本发明另一实施例提供一种电子设备1200,如图12所示。图12是本发明一实施例示出的一种电子设备的示意图。该电子设备包括存储器1202、处理器1201及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行时实现本发明上述任一实施例所述的模型生成方法中的步骤或本发明上述实施例所述的3d发型生成方法中的步骤。
157.对于装置实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
158.本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
159.本领域内的技术人员应明白,本发明的实施例可提供为方法、装置、或计算机程序产品。因此,本发明实施例可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明实施例可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。
160.本发明实施例是参照根据本发明实施例的方法、终端设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理终端设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理终端设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
161.这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理终端设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
162.这些计算机程序指令也可装载到计算机或其他可编程数据处理终端设备上,使得在计算机或其他可编程终端设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程终端设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
163.尽管已描述了本发明实施例的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明实施例范围的所有变更和修改。
164.最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意
在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者终端设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者终端设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者终端设备中还存在另外的相同要素。
165.以上对本发明所提供的一种模型生成、3d发型生成方法、装置、电子设备及存储介质,进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1