一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

训练试衣模型的方法、生成试衣图像的方法及相关装置与流程

2022-07-10 05:03:32 来源:中国专利 TAG:


1.本技术实施例涉及图像处理技术领域,尤其涉及一种训练试衣模型的方法、生成试衣图像的方法及相关装置。


背景技术:

2.随着现代科技的不断进步,网购规模不断增加,用户可以通过手机在网络购物平台上购买衣物,但是,由于用户获取的待售衣物的信息一般是二维展示图片,用户无法知道这些衣物穿戴在自己身上的效果,因而可能会导致买到不适合自己的衣物,购物体验较差。
3.线上试装一般通过拍摄用户图像,选择系统提供的目标服饰,进行自动替换,具体地,大多采用的都是通过采集人体数据和想要试穿的服饰信息,经3d建模的方式重塑用户形象和目标服饰,然而,目标服饰与用户形象的结合往往不够贴切,缺少自然感。


技术实现要素:

4.本技术实施例主要解决的技术问题是提供一种训练试衣模型的方法、生成试衣图像的方法及相关装置,该方法训练得到的试衣模型能够使得试穿衣服和用户结合贴切,试衣效果真实自然。
5.为解决上述技术问题,第一方面,本技术实施例中提供了一种训练试衣模型的方法,试衣网络包括衣服编码网络、身份编码网络和试衣图像生成网络;
6.该方法包括:
7.获取训练集,训练集包括多个训练数据,训练数据包括衣服图像和真实试衣图像,真实试衣图像包括模特穿有衣服图像中对应衣服的图像;
8.对衣服图像中的衣服按真实试衣图像中模特人体结构进行变形,得到变形后的衣服图像;
9.对真实试衣图像在衣服对应的区域进行掩模遮挡处理,得到掩模图像;
10.采用衣服编码网络对变形后的衣服图像进行特征提取,得到衣服特征编码,以及,采用身份编码网络对掩模图像进行特征提取,得到身份特征图;
11.将衣服特征编码和身份特征图输入试衣图像生成网络进行融合,得到预测试衣图像;
12.根据训练集中各真实试衣图像和各预测试衣图像的差异,对试衣网络进行迭代训练,直到试衣网络收敛,得到试衣模型。
13.在一些实施例中,前述对衣服图像中的衣服按真实试衣图像中模特人体结构进行变形,得到变形后的衣服图像,包括:
14.采用衣服关键点检测算法对衣服图像进行关键点检测,获取衣服关键点信息;
15.采用人体关键点检测算法对真实试衣图像进行关键点检测,获取人体关键点信息;
16.计算衣服关键点信息和人体关键点信息之间的仿射变化矩阵;
17.将衣服图像中的衣服像素按仿射变化矩阵进行仿射变化,得到变形后的衣服图像。
18.在一些实施例中,前述对真实试衣图像在衣服对应的区域进行掩模遮挡处理,得到掩模图像,包括:
19.采用人体解析算法对真实试衣图像进行部位解析,得到人体解析图;
20.根据人体解析图和衣服图像中衣服的类别,确定掩模矩阵;
21.将真实试衣图像和掩模矩阵对应位置相乘,得到掩模图像。
22.在一些实施例中,前述试衣网络还包括纹理编码网络,前述在将衣服特征编码和身份特征图输入试衣图像生成网络进行融合,得到预测试衣图像之前,还包括:
23.采用纹理编码网络对衣服图像进行纹理特征提取,得到至少一个纹理特征图;
24.前述将衣服特征编码和身份特征图输入试衣图像生成网络进行融合,得到预测试衣图像,包括:
25.将衣服特征编码、身份特征图和至少一个纹理特征图输入试衣图像生成网络进行融合,得到预测试衣图像。
26.在一些实施例中,前述根据训练集中各真实试衣图像和各预测试衣图像的差异,对试衣网络进行迭代训练,直到试衣网络收敛,得到试衣模型,包括:
27.采用损失函数计算训练集中各真实试衣图像和各预测试衣图像的差异,其中,损失函数包括真实试衣图像和预测试衣图像之间的对抗损失、重构损失和感知损失,以及,真实试衣图像对应的掩模图像和预测试衣图像对应的掩模图像之间的掩模损失;
28.根据差异,对试衣网络进行迭代训练,直到试衣网络收敛,得到试衣模型。
29.在一些实施例中,前述损失函数包括:
[0030][0031][0032][0033][0034]
其中,为对抗损失,为重构损失,为感知损失,为掩模损失,α为重构损失的权重,β为感知损失的权重,δ为掩模损失的权重,i为真实试衣图像,i

为预测试衣图像,为由真实试衣图像提取得到的特征图,为由预测试衣图像提取得到的特征图,p为的个数或的个数,mi为真实试衣图像对应的掩模图像,mi′
为预测试衣图像对应的掩模图像。
[0035]
在一些实施例中,在前述对真实试衣图像进行身份特征提取,得到身份特征图之前,还包括:
[0036]
对真实试衣图像进行填充处理,以使真实试衣图像的分辨率满足预设比例。
[0037]
为解决上述技术问题,第二方面,本技术实施例中提供了一种生成试衣图像的方法,包括:
[0038]
获取待试衣服图像和用户图像;
[0039]
对待试衣服图像中的衣服按用户图像中用户人体结构进行变形,得到变形后的待
试衣服图像;
[0040]
对用户图像在待试衣服对应的区域进行掩模遮挡处理,得到用户的掩模图像;
[0041]
将变形后的待试衣服图像和用户的掩模图像输入试衣模型,生成试衣图像,其中,试衣模型采用如上第一方面中训练试衣模型的方法训练得到。
[0042]
为解决上述技术问题,第三方面,本技术实施例中提供了一种计算机设备,包括:
[0043]
至少一个处理器,以及
[0044]
与至少一个处理器通信连接的存储器,其中,
[0045]
存储器存储有可被至少一个处理器执行的指令,指令被至少一个处理器执行,以使至少一个处理器能够执行如上第一方面中的方法。
[0046]
为解决上述技术问题,第四方面,本技术实施例中提供了一种计算机可读存储介质,计算机可读存储介质存储有计算机可执行指令,计算机可执行指令用于使计算机设备执行如上第一方面的方法。
[0047]
本技术实施例的有益效果:区别于现有技术的情况,本技术实施例提供的训练试衣模型的方法,作为该试衣模型骨架结构的试衣网络包括衣服编码网络、身份编码网络和试衣图像生成网络,首先获取训练集,该训练集包括多个训练数据,各训练数据包括衣服图像和模特穿有该衣服图像中对应衣服的真实试衣图像,即该真实试衣图像可以作为真实标签。然后,对于每一训练数据,对衣服图像中的衣服按真实试衣图像中模特人体结构进行变形,得到变形后的衣服图像,使得变形后的衣服图像中的衣服呈立体状态,与人体结构相适应。对该真实试衣图像在衣服对应的区域进行掩模遮挡处理,得到掩模图像,掩模图像中保留了模特的身份特征等需要保留的特征,遮挡了试穿衣服时需要替换的原有衣服特征。采用衣服编码网络对变形后的衣服图像进行特征提取,以及,采用身份编码网络对该掩模图像进行特征提取,得到身份特征图。最后,将衣服特征编码和身份特征图输入前述试衣图像生成网络进行融合,得到预测试衣图像,根据训练集中各真实试衣图像和各预测试衣图像的差异,对整个试衣网络进行迭代训练直至收敛,得到试衣模型。
[0048]
通过上述方式,由于输入试衣图像生成网络进行融合处理的图像为变形后的衣服图像和掩模图像,变形后的衣服图像中的衣服呈立体状态,与人体结构相适应,掩模图像中保留了模特的身份特征等需要保留的特征,遮挡了试穿衣服时需要替换的原有衣服特征,从而,使得融合后得到的预测试衣图像即能保留模特的身份特征,不失真,又能使试衣衣服和模特结合贴切,试衣效果真实自然。随着试衣网络的不断迭代训练,融合生成的预测试衣图像会不断地靠近真实试衣图像(真实标签),即得到准确的试衣模型。因此,采用该试衣模型生成的用户的试衣图像,即能保留用户的身份特征,不失真,又能使试衣衣服和用户结合贴切,试衣效果真实自然。
附图说明
[0049]
一个或多个实施例通过与之对应的附图中的图片进行示例性说明,这些示例性说明并不构成对实施例的限定,附图中具有相同参考数字标号的元件表示为类似的元件,除非有特别申明,附图中的图不构成比例限制。
[0050]
图1为本技术一些实施例提供的生成式对抗网络的部分结构示意图;
[0051]
图2为本技术一些实施例提供的训练试衣模型的方法的流程示意图;
[0052]
图3为本技术一些实施例中衣服变形示意图;
[0053]
图4为图2所示方法中步骤s20的一子流程示意图;
[0054]
图5为本技术一些实施例中衣服关键点的示意图;
[0055]
图6为本技术一些实施例中人体关键点的示意图;
[0056]
图7为本技术一些实施例中的掩模图像;
[0057]
图8为图2所示方法中步骤s30的一子流程示意图;
[0058]
图9为本技术一些实施例中人体解析图;
[0059]
图10为本技术一些实施例中试衣网络的整体结构示意图;
[0060]
图11为图2所示方法中步骤s60的一子流程示意图;
[0061]
图12为本技术一些实施例中生成试衣图像的方法的流程示意图;
[0062]
图13为本技术一些实施例中计算机设备的结构示意图。
具体实施方式
[0063]
下面结合具体实施例对本技术进行详细说明。以下实施例将有助于本领域的技术人员进一步理解本技术,但不以任何形式限制本技术。应当指出的是,对本领域的普通技术人员来说,在不脱离本技术构思的前提下,还可以做出若干变形和改进。这些都属于本技术的保护范围。
[0064]
为了使本技术的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本技术进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本技术,并不用于限定本技术。
[0065]
需要说明的是,如果不冲突,本技术实施例中的各个特征可以相互结合,均在本技术的保护范围之内。另外,虽然在装置示意图中进行了功能模块划分,在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于装置中的模块划分,或流程图中的顺序执行所示出或描述的步骤。此外,本文所采用的“第一”、“第二”、“第三”等字样并不对数据和执行次序进行限定,仅是对功能和作用基本相同的相同项或相似项进行区分。
[0066]
除非另有定义,本说明书所使用的所有的技术和科学术语与属于本技术的技术领域的技术人员通常理解的含义相同。本说明书中在本技术的说明书中所使用的术语只是为了描述具体的实施方式的目的,不是用于限制本技术。本说明书所使用的术语“和/或”包括一个或多个相关的所列项目的任意的和所有的组合。
[0067]
此外,下面所描述的本技术各个实施方式中所涉及到的技术特征只要彼此之间未构成冲突就可以相互组合。
[0068]
为便于对本技术实施例提供的方法进行理解,首先对本技术实施例中涉及的名词进行介绍:
[0069]
(1)神经网络
[0070]
神经网络可以是由神经单元组成的,具体可以理解为具有输入层、隐含层、输出层的神经网络,一般来说第一层是输入层,最后一层是输出层,中间的层数都是隐含层。其中,具有很多层隐含层的神经网络则称为深度神经网络(deep neural network,dnn)。神经网络中的每一层的工作可以用数学表达式y=a(w
·
x b)来描述,从物理层面,神经网络中的每一层的工作可以理解为通过五种对输入空间(输入向量的集合)的操作,完成输入空间到
输出空间的变换(即矩阵的行空间到列空间),这五种操作包括:1、升维/降维;2、放大/缩小;3、旋转;4、平移;5、“弯曲”。其中、2、3的操作由“w
·
x”完成,4的操作由“ b”完成,5的操作则由“a()”来实现,这里之所以用“空间”二字来表述是因为被分类的对象并不是单个事物,而是一类事物,空间是指这类事物所有个体的集合,其中,w是神经网络各层的权重矩阵,该矩阵中的每一个值表示该层的一个神经元的权重值。该矩阵w决定着上文所述的输入空间到输出空间的空间变换,即神经网络每一层的w控制着如何变换空间。训练神经网络的目的,也就是最终得到训练好的神经网络的所有层的权重矩阵。因此,神经网络的训练过程本质上就是学习控制空间变换的方式,更具体的就是学习权重矩阵。
[0071]
需要注意的是,在本技术实施例中,基于机器学习任务所采用的模型,本质都是神经网络。神经网络中的常用组件有卷积层、池化层、归一化层和反向卷积层等,通过组装神经网络中的这些常用组件,设计得到模型,当确定模型参数(各层的权重矩阵)使得模型误差满足预设条件或调整模型参数的数量达到预设阈值时,模型收敛。
[0072]
其中,卷积层配置有多个卷积核、每个卷积核设置有对应的步长,以对图像进行卷积运算。卷积运算的目的是提取输入图像的不同特征,第一层卷积层可能只能提取一些低级的特征如边缘、线条和角等层级,更深的卷积层能从低级特征中迭代提取更复杂的特征。
[0073]
反向卷积层用于将一个低维度的空间映射到高维度,同时保持他们之间的连接关系/模式(这里的连接关系即是指卷积时候的连接关系)。反向卷积层配置有多个卷积核、每个卷积核设置有对应的步长,以对图像进行反卷积运算。一般,用于设计神经网络的框架库(例如pytorch库)中内置有upsumple()函数,通过调用该upsumple()函数可以实现低维度到高维度的空间映射。
[0074]
池化层(pooling)是模仿人的视觉系统可以对数据进行降维或,用更高层次的特征表示图像。池化层的常见操作包括最大值池化、均值池化、随机池化、中值池化和组合池化等。通常来说,神经网络的卷积层之间都会周期性插入池化层以实现降维。
[0075]
归一化层用于对中间层的所有神经元进行归一化运算,以防止梯度爆炸和梯度消失。
[0076]
(2)损失函数
[0077]
在训练神经网络的过程中,因为希望神经网络的输出尽可能的接近真正想要预测的值,可以通过比较当前网络的预测值和真正想要的目标值,再根据两者之间的差异情况来更新每一层神经网络的权重矩阵(然,在第一次更新之前通常会有初始化的过程,即为神经网络中的各层预先配置参数),比如,如果网络的预测值高了,就调整权重矩阵让它预测低一些,不断的调整,直到神经网络能够预测出真正想要的目标值。因此,就需要预先定义“如何比较预测值和目标值之间的差异”,这便是损失函数(loss function)或目标函数(objective function),它们是用于衡量预测值和目标值的差异的重要方程。其中,以损失函数举例,损失函数的输出值(loss)越高表示差异越大,那么神经网络的训练就变成了尽可能缩小这个loss的过程。
[0078]
(3)生成式对抗网络
[0079]
参见图1,图1为本技术实施例提供的生成式对抗网络的部分结构示意图,如图1所示,生成式对抗网络包括映射网络s1和图像生成器s2。其中,映射网络s1用于对特征潜码包含的复合特征进行特征解耦,以将特征潜码映射为输入至图像生成器的多组特征控制向
量,并将映射得到的多组特征控制向量输入至图像生成器s2中,以对图像生成器进行样式控制。图像生成器s2用于基于映射网络s1输入的控制向量对常数张量进行样式控制和处理,从而生成一张图像。当该特征潜码反映试穿衣服时,则图像生成器s2生成的图像包括衣服。
[0080]
其中,如图1所示,映射网络s1包括8个全连接层,8个全连接层依次连接,用于对特征潜码进行非线性映射,以得到中间向量w。该中间向量w能够反映特征潜码中的特征,例如能够反映试穿衣服的特征。
[0081]
图像生成器s2包括n个顺序排列的卷积模块,第一个卷积模块包括常数张量const和卷积层,常数张量和卷积层后均配置有自适应实例归一化层。可以理解的是,常数张量const相当于一个用于生成图像的初始数据。除第一个卷积模块外的剩余卷积模块中任意一个卷积模块均包括两个卷积层,每一卷积层后均配置有自适应实例归一化层(adain)。在图像生成器s2中,每一卷积模块输出一特征图,该特征图作为下一卷积模块的输入,随着卷积模块的递推,输出的特征图的尺寸越来越大,最后一个卷积模块输出的特征图即为生成的人脸图像。可以理解的是,每一卷积模块输出的特征图的目标尺寸是设置好的,例如图1中第1个卷积模块输出的特征图的大小为4*4,第2个卷积模块输出的特征图的大小为8*8,若最终生成的图像的大小为512*512,则最后一个卷积模块输出的特征图的大小为512*512。
[0082]
为介绍本技术实施例前,先对本技术发明人所知晓的虚拟试衣方法进行简单介绍,使得后续便于理解本技术实施例。
[0083]
线下试装一般采用互动试衣镜设备,购物者站在互动试衣镜设备前,通过其屏幕选择试穿服装,互动试衣镜设备会采集用户图像,根据用户的基本特征和服装款式进行整体的着装展示,用户可以自由进行服装的切换。线上试装一般通过拍摄用户图像,选择系统提供的目标服饰,进行自动替换。然而无论是互动试衣镜设备还是线上虚拟试装,大多都是通过采集人体数据,经3d建模的方式重塑用户形象,即根据二维人体图像建立3d人体模型,将试穿服装设置在3d人体模型的相应位置。往往,衣服与用户形象的结合往往不够贴切,缺少自然感,导致用户体验较差,同时采集人体和服饰的3d信息通常成本较高且较为繁琐。
[0084]
针对上述问题,本技术实施提供了一种训练试衣模型的方法,下面结合附图,对本技术的实施例进行描述。本领域技术人员可知,随着技术的发展和新场景的出现,本技术实施例提供的技术方案对于类似的技术问题,同样适用。
[0085]
请参阅图2,图2为本技术实施例提供的训练试衣模型的方法的流程示意图,作为该试衣模型骨架结构的试衣网络包括衣服编码网络、身份编码网络和试衣图像生成网络,该方法s100具体可以包括如下步骤:
[0086]
s10:获取训练集。
[0087]
该训练集包括多个训练数据,每个训练数据包括衣服图像和真实试衣图像,该真实试衣图像包括模特穿有前述衣服图像中对应衣服的图像。
[0088]
可以理解的是,一训练数据包括衣服图像和真实试衣图像构成的图像对,在一些实施例中,训练数据的数量为万级,例如可以为20000,有利于训练得到准确的通用模型。本领域技术人员可根据实际情况确定训练数据的数量。
[0089]
在衣服图像和真实试衣图像构成的图像对中,衣服图像包括想要试穿的衣服,例
如衣服图像1#包括一件绿色短袖。真实试衣图像中模特穿有对应衣服图像中的衣服,例如与衣服图像1#对应的真实试衣图像中模特穿有该绿色短袖。
[0090]
可以理解的是,包括衣服图像和真实试衣图像的训练数据可由本领域技术人员事先搜集得到,例如在一些服饰售卖网站上可爬取衣服图像和对应的穿有该衣服的模特图像(即真实试衣图像)。
[0091]
在一些实施例中,真实试衣图像是模特全身照,其图像比例与人体长宽比例相近,然而,人体长宽比例不符合网络训练要求,即真实试衣图像的分辨率比例不符合网络训练要求。因此,需要对训练集中真实试衣图像进行预处理,以使得真实试衣图像的分辨率比例符合网络训练要求。
[0092]
在一些实施例中,在训练之前,还包括:
[0093]
对真实试衣图像进行填充处理,以使真实试衣图像的分辨率满足预设比例。
[0094]
基于真实试衣图像是模特全身照,其图像比例与人体长宽比例相近,为了不改变模特的体态,对真实试衣图像进行宽度的填充处理,利用图像长度和宽度之间的差值,对宽度按照比例进行像素填充,例如可以填充值为0的像素,使得真实试衣图像的分辨率满足预设比例。
[0095]
在一些实施例中,预设比例为1:1,即进行填充处理后的真实试衣图像的长宽一致。例如,真实试衣图像的分辨率可以为512*512。在一些实施例中,在训练之前,可以为填充处理后的真实试衣图像进行归一化操作,方便加快试衣网络的训练速度。基于归一化操作是本领域技术人员所熟知的常用数据处理方式,在此不对归一化操作进行详细解释。
[0096]
s20:对衣服图像中的衣服按前述真实试衣图像中模特人体结构进行变形,得到变形后的衣服图像。
[0097]
可以理解的是,在一些实施例中,这里的真实试衣图像可以为经过填充处理和归一化处理后的真实试衣图像。
[0098]
考虑到衣服图像中衣服呈二维平面状态,然而,人体结构是立体的,为了使得衣服与模特在融合时衣服能够与人体结构相适应,本步骤对衣服图像中的衣服按真实试衣图像中模特人体结构进行变形,得到变形后的衣服图像。如图3所示,衣服图像1#中按真实试衣图像1#中的人体结构变形后,得到变形后的衣服图像1#。从而,变形后的衣服图像中的衣服呈立体状态,与人体结构相适应,有益于衣服与人体融合后结合贴切,试衣效果真实自然。
[0099]
在一些实施例中,请参阅图4,前述步骤s20具体包括:
[0100]
s21:采用衣服关键点检测算法对衣服图像进行关键点检测,获取衣服关键点信息。
[0101]
s22:采用人体关键点检测算法对真实试衣图像进行关键点检测,获取人体关键点信息。
[0102]
s23:计算衣服关键点信息和人体关键点信息之间的仿射变化矩阵。
[0103]
s24:将衣服图像中的衣服像素按仿射变化矩阵进行仿射变化,得到变形后的衣服图像。
[0104]
采用衣服关键点检测算法对衣服图像进行关键点检测,可以定位出衣服关键点信息(即衣服上若干个关键点),如图5所示,包括袖口、领口、肩部和下摆等区域的关键点。在一些实施例中,可以基于样本图像对实现该衣服关键点检测算法的神经网络进行训练,其
中,样本图像包括服饰并标注有服饰的参考关键点坐标,神经网络包括多个卷积层、池化层或全连接层等,其结构可以采用现有的深度卷积神经网络,也可由本领域技术人员自行设计。
[0105]
采用人体关键点检测算法对真实试衣图像进行关键点检测,可以定位出人体关键点信息(即人体上若干个关键点),如图6所示,包括头部、肩部、胳膊、腿和身体躯干等区域的关键点。在一些实施例中,人体关键点检测算法可以采用2d关键点检测算法,例如convolutional pose machine(cpm)或stacked hourglass network(hourglass)等。
[0106]
可以理解的是,基于衣服关键点信息包括袖口、领口、肩部和下摆等区域的关键点,人体关键点信息包括头部、肩部、胳膊、腿和身体躯干等区域的关键点,可知,衣服关键点信息反映的区域和人体关键点信息反映的区域具有对应关系,例如,衣服肩部对应人体肩部,衣服袖口对应人体胳膊,衣服下摆对应人体臀部等。
[0107]
可以理解的是,若变形后衣服的关键点信息与人体关键点信息对应部位越相近,例如,衣服肩部区域的关键点与人体肩部区域的关键点相近等,则衣服与模特在融合时衣服能够贴合人体,看起来真实自然。
[0108]
在一些实施例中,可以通过lm算法和最小二乘法算法,计算出衣服关键点信息c和人体关键点信息r之间的仿射变化矩阵h,其中,r=h*c。从而,衣服关键点信息c与仿射变化矩阵h相乘后,得到的变形后衣服的关键点信息与人体关键点信息对应部位相同。
[0109]
然后,将衣服图像中的衣服像素按仿射变化矩阵进行仿射变化,得到变形后的衣服图像。具体地,可以采用如下公式进行计算:
[0110][0111]
(xi,yi)为衣服图像中衣服像素的坐标,(x
′i,y
′i)为变形后的衣服图像中衣服像素的坐标,h为前述计算所得的仿射变化矩阵。
[0112]
在此实施例中,采用衣服图像中的衣服关键点信息和真实试衣图像中的人体关键点信息,计算出用于仿射变化的仿射变化矩阵,然后,将衣服图像中的衣服像素按仿射变化矩阵进行仿射变化,能够得到准确的变形后的衣服图像,有利于衣服与模特在融合时衣服能够贴合人体,看起来真实自然。
[0113]
s30:对真实试衣图像在该衣服对应的区域进行掩模遮挡处理,得到掩模图像。
[0114]
可以理解的是,在对真实试衣图像中的模特进行更换衣服时,需要保留模特的身份特征等需要保留的特征,遮挡试穿衣服时需要替换的原有衣服特征。例如,真实试衣图像中模特穿有黑色外套,当模特试穿绿色短袖时,需要将黑色外套进行遮挡,保留除黑色外套外的其它区域(头部、下肢等身份特征),得到如图7所示的掩模图像。
[0115]
在衣服和模特进行融合前,对模特原有的、与需要试穿的衣服对应的旧衣服进行掩盖遮挡处理,一方面,能够避免原有旧衣服特征对融合造成干扰,另一方面,能够保留模特的身份特征,使得模特换上需要试穿的衣服后不失真。
[0116]
在一些实施例中,请参阅图8,前述步骤s30具体包括:
[0117]
s31:采用人体解析算法对真实试衣图像进行部位解析,得到人体解析图。
[0118]
s32:根据人体解析图和前述衣服图像中衣服的类别,确定掩模矩阵。
[0119]
s33:将真实试衣图像和掩模矩阵对应位置相乘,得到掩模图像。
[0120]
人体解析是将人体的各个部位分割出来,如图9所示,不同的部位,例如头发、脸、上衣、裤子、胳膊、帽子、鞋等各个部位识别分割出来,用不同的颜色表示,即得到人体解析图。
[0121]
在一些实施例中,人体解析算法可以为现有的graphonomy算法。graphomay算法会针对图像分割成20个类别,可以采用不同的颜色进行区分,将各部位进行划分。在一些实施例中,也可以采用标号0-19对前述20个类别进行划分,例如0表示背景,1表示帽子,2表示头发,3表示手套,4表示墨镜,5表示上衣,6表示连衣裙,7表示外套,8表示袜子,9表示裤子,10表示躯干皮肤,11表示围巾,12表示半裙,13表示脸,14表示左手臂,15表示右手臂,16表示左腿,17表示右腿,18表示左鞋,19表示右鞋。
[0122]
从人体解析图中,可以确定图像中各个部位所属的类别。从而,可以根据人体解析图和衣服图像中衣服的类别(即试穿衣服的类别,例如上衣或裤子等),确定掩模矩阵。其中,掩模矩阵反映真实试衣图像中各像素的权重。最后,将真实试衣图像和掩模矩阵对应位置相乘,得到掩模图像。
[0123]
例如,若真实试衣图像的分辨率为512*512,则掩模矩阵是一个512*512的矩阵,真实试衣图像中模特穿有黑色短袖,衣服图像中为绿色短袖(即试穿衣服为上衣),真实试衣图像中黑色短袖需要替换为绿色短袖,其它区域保持不变,从而,掩模矩阵中黑色短袖对应的区域的数值可以为0,其它区域对应的数值可以为1。当掩模矩阵与真实试衣图像对应位置相乘后,在得到的掩模图像中,黑色短袖对应的区域像素值为0,其它区域的像素值仍为真实试衣图像中的像素值。
[0124]
对应位置相乘,可以采用公式m
ij
=f
ij
×mij
解释,其中,f
ij
表示真实试衣图像中第i行第j列的像素值,m
ij
表示掩模矩阵中第i行第j列的数值,m
ij
为掩模板图像中第i行第j列的像素值。
[0125]
在此实施例中,通过采用人体解析图和衣服图像中衣服的类别,构建掩模矩阵,真实试衣图像和掩模矩阵对应位置相乘,即可得到掩模图像,使得掩模图像中能够准确保留模特的身份特征,去除需要被替换的原有衣服特征,使得模特换上需要试穿的衣服后不失真。
[0126]
s40:采用衣服编码网络对变形后的衣服图像进行特征提取,得到衣服特征编码,以及,采用身份编码网络对掩模图像进行特征提取,得到身份特征图。
[0127]
为了使得变形后的衣服图像和掩模图像能够充分融合,首先,采用衣服编码网络对变形后的衣服图像进行下采样,提取特征,得到衣服特征编码。在一些实施例中,衣服特征编码可以为变形后的衣服图像经过下采样后得到的1*512大小的向量。
[0128]
在一些实施例中,该衣服编码网络的结构如下表1所示:
[0129]
表1衣服编码网络的结构
[0130]
层卷积核大小步长输出特征图的尺寸衣服图像x
‑‑
512*512*3卷积层1*12256*256*16卷积层3*32128*128*32卷积层3*3264*64*32
卷积层3*3232*32*64卷积层3*3216*16*64卷积层3*328*8*128卷积层3*324*4*256全连接层
‑‑
1*1024全连接层
‑‑
1*512
[0131]
由上表1可知,该衣服编码网络包括多个卷积层和全连接层,大部分卷积层配置有3*3大小的卷积核,步长设置为2,从而,实现下采样,降维的操作。
[0132]
采用身份编码网络对掩模图像进行下采样,提取特征,得到身份特征图。该身份编码网络包括多个卷积层,该多个卷积层的结构可以与前述衣服编码网络中多个卷积层的结构相同。可以理解的是,该身份编码网络输出4*4大小的身份特征图。
[0133]
s50:将衣服特征编码和身份特征图输入试衣图像生成网络进行融合,得到预测试衣图像。
[0134]
其中,试衣图像生成网络为生成式对抗网络。生成式对抗网络的结构和工作原理已在前述“名词介绍(3)”中得以详细介绍,在此不再重复赘述。由上述可知,试衣图像生成网络包括映射网络和图像生成器。在一些实施例中,图像生成器包括8个卷积模块,这8个卷积模块输出的特征图的大小依次为4*4、8*8、16*16、32*32、64*64、128*128、256*256、512*512。
[0135]
衣服特征编码经试衣图像生成网络的映射网络s1进行特征解耦后生成一个1*512的中间向量。该中间向量输入第1个卷积模块进行上采样后,生成4*4大小的特征图,该4*4大小的特征图与4*4大小的身份特征图进行线性融合或非线性融合后,输入第2个卷积模块进行上采样,依次经过后续的卷积模块进行逐层上采样后,得到一个512*512大小并兼具衣服特征和真实试衣图像中模特身份特征的预测试衣图像。
[0136]
可以理解的是,这里的线性融合是指两个图像进行一次函数运算得到一个融合后的图像,这里的非线性融合是指两个图像进行二次或多次函数运算得到一个融合后的图像。
[0137]
在一些实施例中,前述试衣网络还包括纹理编码网络,在前述步骤s50之前还包括:采用所述纹理编码网络对衣服图像进行纹理特征提取,得到至少一个纹理特征图。
[0138]
为了防止衣服特征编码和身份特征图在融合的过程中丢失试穿衣服的纹理信息,因此,构建纹理编码网络,对衣服图像进行特征提取,提取纹理特征,得到至少一个纹理特征图。
[0139]
纹理编码网络包括多个卷积层,以对衣服图像进行下采样,提取纹理特征,对于每个卷积层均输出一个与该卷积层对应大小的纹理特征图。在一些实施例中,纹理编码网络的结构如下表2所示:
[0140]
表2纹理编码网络的结构示意表
[0141]
层卷积核大小步长输出特征图的尺寸衣服图像x
‑‑
512*512*3卷积层11512*512*16卷积层31512*512*64
卷积层32256*256*64卷积层11256*256*128卷积层32128*128*256卷积层11128*128*256
[0142]
由上表2可知,纹理编码网络会输出大小不完全相同的多个纹理特征图。不同大小的纹理特征图能够反映不同粒度的衣服纹理特征。
[0143]
在此实施例中,前述步骤s50具体包括:将衣服特征编码、身份特征图和至少一个纹理特征图输入试衣图像生成网络进行融合,得到预测试衣图像。
[0144]
可以理解的是,这里“至少一个纹理特征图”是从上述纹理编码网络输出的纹理特征图中选择确定出的。例如,在延续表1中的实施例中,进行融合的“至少一个纹理特征图”可以为128*128与256*256大小的纹理特征图。
[0145]
请参阅图10,128*128大小的纹理特征图与试衣图像生成网络中图像生成器的第6个卷积模块输出的128*128大小的特征图进行线性融合或非线性融合后,得到一个128*128大小的融合特征图。然后,将128*128大小的融合特征图输入第7个卷积模块进行上采样,输出256*256大小的特征图,256*256大小的纹理特征图与第7个卷积模块输出的256*256大小的特征图进行线性融合或非线性融合后,得到一个256*256大小的融合特征图。随着图像生成器的卷积层的推进,该256*256大小的融合特征图输入第8个卷积模块进行上采样,输出512*512大小的预测试衣图像。
[0146]
在此实施例中,通过构建纹理编码网络,将至少一个纹理特征图与试衣图像生成网络在上采样过程中生成的特征图进行融合,使得生成的预测试衣图像能够保存试穿衣服的纹理细节,从而,试衣网络能够学习到衣服图像中衣服的纹理细节,训练得到的试衣模型具备保留试穿衣服纹理细节的能力,生成具有衣服纹理细节的试衣图像,用户能够看到真实的衣服试穿效果。
[0147]
s60:根据训练集中各真实试衣图像和各预测试衣图像的差异,对前述试衣网络进行迭代训练,直到试衣网络收敛,得到试衣模型。
[0148]
可以理解的是,若训练集中各真实试衣图像和各预测试衣图像的差异越小,则真实试衣图像和预测试衣图像就越相似,说明预测试衣图像能够准确地还原出真实试衣图像。从而,可以根据训练集中各真实试衣图像和各预测试衣图像的差异,调整前述试衣网络的模型参数。在一些实施例中,试衣网络包括衣服编码网络、身份编码网络和试衣图像生成网络,则模型参数包括衣服编码网络的模型参数、身份编码网络的模型参数和试衣图像生成网络的模型参数。在一些实施例中,试衣网络包括衣服编码网络、身份编码网络、试衣图像生成网络和纹理编码网络,则模型参数包括衣服编码网络的模型参数、身份编码网络的模型参数、试衣图像生成网络的模型参数的纹理编码网络的模型参数。即将上述差异进行反向传播,使得试衣网络输出的预测试衣图像不断逼近真实试衣图像,直到试衣网络收敛,得到试衣模型。
[0149]
可以理解的是,这里的试衣网络收敛可以指的是在某一模型参数下,训练集中各真实试衣图像和各预测试衣图像的差异总和小于预设阈值或在某一范围内波动。
[0150]
在一些实施例中,采用adam算法优化模型参数,例如,迭代次数设置为10万次,初始化学习率设置为0.001,学习率的权重衰减设置为0.0005,每1000次迭代,学习率衰减为
原来的1/10,其中,可以将学习率、训练集中各真实试衣图像和各预测试衣图像的差异输入至adam算法中,得到adam算法输出的调整模型参数,利用该调整模型参数进行下一次训练,直到训练完后,输出收敛后的试衣网络的模型参数,即得到试衣模型。
[0151]
需要说明的是,本技术实施例中,训练集包括多个训练数据,例如20000个训练数据,其覆盖的模特、衣服不同,能覆盖市面上大部分的衣服特点。因此,训练出的试衣模型是一个通用的模型,能够广泛用于虚拟试衣,生成试衣图像。
[0152]
在一些实施例中,请参阅图11,前述步骤s60具体包括:
[0153]
s61:采用损失函数计算训练集中各真实试衣图像和各预测试衣图像的差异,其中,该损失函数包括真实试衣图像和预测试衣图像之间的对抗损失、重构损失和感知损失,以及,真实试衣图像对应的掩模图像和预测试衣图像对应的掩模图像之间的掩模损失。
[0154]
s62:根据上述差异,对试衣网络进行迭代训练,直到试衣网络收敛,得到试衣模型。
[0155]
损失函数的功能已在前述“名词介绍(2)”中得以详细介绍,在此不再重复赘述。可以理解的是,基于网络结构和训练集不同,损失函数的结构可以根据实际情况而设置。在此实施例中,损失函数反映真实试衣图像和预测试衣图像之间的对抗损失、重构损失和感知损失,以及,真实试衣图像对应的掩模图像和预测试衣图像对应的掩模图像之间的掩模损失。
[0156]
其中,对抗损失是预测试衣图像是否为对应的真实试衣图像的损失,当对抗损失大时,说明预测试衣图像的分布与真实试衣图像的分布差异较大,当对抗损失小时,说明预测试衣图像的分布与真实试衣图像的分布差异较小、相近。这里,试衣图像的分布是指图像中各部位的分布,例如衣服、头部、四肢的分布等。
[0157]
重构损失是预测试衣图像与真实试衣图像之间的像素点方差损失。当重构损失大时,说明预测试衣图像的像素点与真实试衣图像的像素点之间的像素值差异较大,当重构损失小时,说明预测试衣图像的像素点与真实试衣图像的像素点之间的像素值差异较小。即重构损失是将预测试衣图像的像素点与真实试衣图像的像素点作比较,使得各部位对应的像素值接近。
[0158]
感知损失是将真实试衣图像经卷积得到的特征图与预测试衣图像经卷积得到的特征图作比较,使得高层信息(内容和全局结构)接近。
[0159]
掩模损失是将真实试衣图像对应的掩模图像和预测试衣图像对应的掩模图像作比较,使得两者的保留区域接近,约束预测试衣图像的保留区域靠近真实试衣图像的保留区域,使得预测试衣图像不失真。
[0160]
在一些实施例中,损失函数为:
[0161][0162][0163][0164][0165]
其中,为对抗损失,为重构损失,为感知损失,为掩模损失,
α为重构损失的权重,β为感知损失的权重,δ为掩模损失的权重,i为真实试衣图像,i

为预测试衣图像,为由真实试衣图像提取得到的特征图,为由预测试衣图像提取得到的特征图,p为的个数或的个数,mi为真实试衣图像对应的掩模图像,mi′
为预测试衣图像对应的掩模图像。
[0166]
在一些实施例中,可以采用vgg等卷积神经网络对真实试衣图像进行下采样,提取得到p个特征图同理,可以采用vgg等卷积神经网络对预测试衣图像进行下采样,提取得到p个特征图
[0167]
在一些实施例中,可以采用人体解析算法分别对真实试衣图像和预测试衣图像进行解析后,根据解析结果,对试穿衣服对应的区域进行遮挡处理,分别得到mi和mi′

[0168]
因此,基于包括对抗损失、重构损失、感知损失和前述掩模损失的损失函数计算得到的差异,对试衣网络进行迭代训练,能够约束预测试衣图像从分布、像素、内容特征和保留区域这四个方面不断靠近真实试衣图像,有利于提高训练得到的试衣模型的试衣效果。
[0169]
综上,本技术实施例提供的训练试衣模型的方法,作为该试衣模型骨架结构的试衣网络包括衣服编码网络、身份编码网络和试衣图像生成网络,首先获取训练集,该训练集包括多个训练数据,各训练数据包括衣服图像和模特穿有该衣服图像中对应衣服的真实试衣图像,即该真实试衣图像可以作为真实标签。然后,对于每一训练数据,对衣服图像中的衣服按真实试衣图像中模特人体结构进行变形,得到变形后的衣服图像,使得变形后的衣服图像中的衣服呈立体状态,与人体结构相适应。对该真实试衣图像在衣服对应的区域进行掩模遮挡处理,得到掩模图像,掩模图像中保留了模特的身份特征等需要保留的特征,遮挡了试穿衣服时需要替换的原有衣服特征。采用衣服编码网络对变形后的衣服图像进行特征提取,以及,采用身份编码网络对该掩模图像进行特征提取,得到身份特征图。最后,将衣服特征编码和身份特征图输入前述试衣图像生成网络进行融合,得到预测试衣图像,根据训练集中各真实试衣图像和各预测试衣图像的差异,对整个试衣网络进行迭代训练直至收敛,得到试衣模型。
[0170]
通过上述方式,由于输入试衣图像生成网络进行融合处理的图像为变形后的衣服图像和掩模图像,变形后的衣服图像中的衣服呈立体状态,与人体结构相适应,掩模图像中保留了模特的身份特征等需要保留的特征,遮挡了试穿衣服时需要替换的原有衣服特征,从而,使得融合后得到的预测试衣图像即能保留模特的身份特征,不失真,又能使试衣衣服和模特结合贴切,试衣效果真实自然。随着试衣网络的不断迭代训练,融合生成的预测试衣图像会不断地靠近真实试衣图像(真实标签),即得到准确的试衣模型。因此,采用该试衣模型生成的用户的试衣图像,即能保留用户的身份特征,不失真,又能使试衣衣服和用户结合贴切,试衣效果真实自然。
[0171]
在通过本技术提供的训练试衣模型的方法训练得到试衣模型后,可利用该试衣模型进行虚拟试衣,生成试衣图像。参见图12,图12为本技术实施例提供的生成试衣图像的方法的流程示意图,如图12所示,该方法s200包括如下步骤:
[0172]
s201:获取待试衣服图像和用户图像。
[0173]
其中,待试衣服图像中包括衣服,用户图像包括用户的身体。
[0174]
s202:对待试衣服图像中的衣服按用户图像中用户人体结构进行变形,得到变形
后的待试衣服图像。
[0175]
考虑到待试衣服图像中衣服呈二维平面状态,然而,用户人体结构是立体的,为了使得待试衣服图像中衣服与用户在融合时衣服能够与人体结构相适应,本步骤对待试衣服图像中的衣服按用户图像中用户人体结构进行变形,得到变形后的待试衣服图像。
[0176]
在一些实施例中,可以参照前述步骤s21-s24对待试衣服图像中的衣服按用户图像中用户人体结构进行变形,在此不再详细介绍。
[0177]
s203:对用户图像在待试衣服对应的区域进行掩模遮挡处理,得到用户的掩模图像。
[0178]
可以理解的是,在对用户图像中的用户更换衣服时,需要保留用户的身份特征等需要保留的特征,遮挡试穿衣服时需要替换的原有衣服特征。
[0179]
在要试穿的衣服和用户输入试衣模型进行融合前,对用户原有的、与需要试穿的衣服对应的旧衣服进行掩盖遮挡处理,一方面,能够避免原有旧衣服特征对融合造成干扰,另一方面,能够保留用户的身份特征,使得用户换上需要试穿的衣服后不失真。
[0180]
在一些实施例中,可以参照前述步骤s31-s33对用户图像进行掩模遮挡处理,得到用户的掩模图像,在此不再详细介绍。
[0181]
s204:将变形后的待试衣服图像和用户的掩模图像输入试衣模型,生成试衣图像,其中,试衣模型采用如上实施例中任意一项训练试衣模型的方法训练得到。
[0182]
可以理解的是,该试衣模型是通过上述实施例中训练试衣模型的方法训练得到,与上述实施例中试衣模型具有相同的结构和功能,在此不再一一赘述。
[0183]
简而言之,将变形后的待试衣服图像和用户的掩模图像输入试衣模型,试衣模型会分别对变形后的待试衣服图像和掩模图像进行编码,得到待试衣服特征编码和用户身份特征图,然后,在对待试衣服特征编码进行上采样的过程中融合用户身份特征图,得到试衣图像。
[0184]
基于该试衣模型与上述实施例中试衣模型具有相同的结构和功能,使得试衣图中试穿衣服和用户结合贴切,试衣效果真实自然。
[0185]
参见图13,图13是本技术实施例提供的一种计算机设备的结构示意图,该计算机设备50包括处理器501、存储器502。处理器501连接到存储器502,例如处理器501可以通过总线连接到存储器502。
[0186]
处理器501被配置为支持该计算机设备50执行图2-图11的方法或图12的方法中相应的功能。该处理器501可以是中央处理器(central processing unit,cpu),网络处理器(network processor,np),硬件芯片或者其任意组合。上述硬件芯片可以是专用集成电路(application specific integrated circuit,asic),可编程逻辑器件(programmable logic device,pld)或其组合。上述pld可以是复杂可编程逻辑器件(complex programmable logic device,cpld),现场可编程逻辑门阵列(field-programmable gate array,fpga),通用阵列逻辑(generic array logic,gal)或其任意组合。
[0187]
存储器502作为一种非暂态计算机可读存储介质,可用于存储非暂态软件程序、非暂态性计算机可执行程序以及模块,如本技术实施例中训练试衣模型的方法对应的程序指令/模块,或,生成试衣图像的方法对应的程序指令/模块。处理器501通过运行存储在存储器502中的非暂态软件程序、指令以及模块,可以实现上述任一方法实施例中的训练。
[0188]
存储器502可以包括易失性存储器(volatile memory,vm),例如随机存取存储器(random access memory,ram);存储器1002也可以包括非易失性存储器(non-volatile memory,nvm),例如只读存储器(read-only memory,rom),快闪存储器(flash memory),硬盘(hard disk drive,hdd)或固态硬盘(solid-state drive,ssd);存储器502还可以包括上述种类的存储器的组合。
[0189]
本技术实施例还提供一种计算机可读存储介质,该计算机可读存储介质存储有计算机程序,计算机程序包括程序指令,程序指令当被计算机执行时使计算机执行如前述实施例中训练试衣模型的方法或生成试衣图像的方法。
[0190]
需要说明的是,以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。
[0191]
通过以上的实施方式的描述,本领域普通技术人员可以清楚地了解到各实施方式可借助软件加通用硬件平台的方式来实现,当然也可以通过硬件。本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(read-on ly memory,rom)或随机存储记忆体(random access memory,ram)等。
[0192]
最后应说明的是:以上实施例仅用以说明本技术的技术方案,而非对其限制;在本技术的思路下,以上实施例或者不同实施例中的技术特征之间也可以进行组合,步骤可以以任意顺序实现,并存在如上所述的本技术的不同方面的许多其它变化,为了简明,它们没有在细节中提供;尽管参照前述实施例对本技术进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本技术各实施例技术方案的范围。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献