掌桥专利:专业的专利平台
掌桥专利
首页

虚拟试衣及试衣模型训练的方法、装置和设备

文献发布时间:2023-06-19 19:30:30


虚拟试衣及试衣模型训练的方法、装置和设备

技术领域

本申请涉及数据处理技术领域,尤其涉及一种虚拟试衣方法、一种试衣模型训练的方法、一种虚拟试衣装置、一种试衣模型训练的装置、一种电子设备、一种计算机可读存储介质以及一种计算机程序产品。

背景技术

随着互联网的发展,网络购物越来越受大众喜欢,但和线下购物相比,线上购物存在一些体验差的问题,例如购买的衣服没有办法试穿,不知道效果如何,导致退货率高。而虚拟试衣技术目的就是提供一种虚拟的试衣场景,给用户带来更好的体验。虚拟试衣技术是计算机视觉领域的一种重要技术方向,其可以广泛用于电商平台中,以提升用户体验。

相关技术中提及的虚拟试衣技术,主要是通过重构3D人体,将3D的衣服变换(warp)到重构的3D人体身上。然而,3D的衣服是比较难获取的,并且重构的3D人体如果不够真实则会影响衣服试穿效果,存在贴合度差的问题。

发明内容

本申请提供一种虚拟试衣及试衣模型训练的方法、装置和设备,以解决现有技术中的虚拟试衣技术中试衣效果不够真实、贴合度差的问题。

第一方面,本申请实施例提供了一种虚拟试衣方法,所述方法包括:

获取用户输入的目标衣服图像以及试衣对象图像;

获取所述试衣对象图像的人体区域的目标人体mask图像以及目标人体关键点图像;

获取所述目标衣服图像对应的目标衣服mask图像;

将所述目标衣服图像、所述目标衣服mask图像、所述目标人体mask图像以及所述目标人体关键点图像输入至预先生成的试衣模型中;

在所述试衣模型中,基于接收到的输入数据,预测所述目标衣服图像对应的目标预测光流,并根据所述目标预测光流以及所述目标衣服图像生成目标形变衣服图像;

根据所述目标形变衣服图像生成试衣效果图像。

第二方面,本申请实施例提供了一种试衣模型训练的方法,所述方法包括:

获取第一训练数据集,所述第一训练数据集中各第一训练数据包括样本衣服图像,以及,所述样本衣服图像对应的样本衣服穿着在人体身上后的第一形变衣服图像;

采用所述第一训练数据集训练试衣光流模型;

采用所述试衣光流模型生成所述样本衣服图像与所述第一形变衣服图像之间的光流,并基于所述光流与所述样本衣服图像生成光流对数据;

获取第二训练数据集,所述第二训练数据集中各第二训练数据包括所述样本衣服图像,以及,所述样本衣服图像对应的样本衣服穿着在人体身上后获得的人体图像;

基于所述第二训练数据集以及所述光流对数据训练试衣模型。

第三方面,本申请实施例还提供了一种虚拟试衣装置,所述装置包括:

图像获取模块,用于获取用户输入的目标衣服图像以及试衣对象图像;

人体信息获取模块,用于获取所述试衣对象图像的人体区域的目标人体mask图像以及目标人体关键点图像;

衣服mask图像获取模块,用于获取所述目标衣服图像对应的目标衣服mask图像;

目标形变衣服图像获取模块,用于将所述目标衣服图像、所述目标衣服mask图像、所述目标人体mask图像以及所述目标人体关键点图像输入至预先生成的试衣模型中;在所述试衣模型中,基于接收到的输入数据,预测所述目标衣服图像对应的目标预测光流,并根据所述目标预测光流以及所述目标衣服图像生成目标形变衣服图像;

试衣效果图像生成模块,用于根据所述目标形变衣服图像生成试衣效果图像。

第四方面,本申请实施例还提供了一种试衣模型训练的装置,所述装置包括:

第一训练数据集获取模块,用于获取第一训练数据集,所述第一训练数据集中各第一训练数据包括样本衣服图像,以及,所述样本衣服图像对应的样本衣服穿着在人体身上后的第一形变衣服图像;

试衣光流模型训练模块,用于采用所述第一训练数据集训练试衣光流模型;

光流对数据生成模块,用于采用所述试衣光流模型生成所述样本衣服图像与所述第一形变衣服图像之间的光流,并基于所述光流与所述样本衣服图像生成光流对数据;

第二训练数据集获取模块,用于获取第二训练数据集,所述第二训练数据集中各第二训练数据包括所述样本衣服图像,以及,所述样本衣服图像对应的样本衣服穿着在人体身上后获得的人体图像;

试衣模型训练模块,用于基于所述第二训练数据集以及所述光流对数据训练试衣模型。

第五方面,本申请实施例还提供了一种电子设备,所述电子设备包括:

一个或多个处理器;

存储装置,用于存储一个或多个程序,

当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现上述第一方面或第二方面的方法。

第六方面,本申请实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述第一方面或第二方面的方法。

第七方面,本申请实施例还提供了一种计算机程序产品,所述计算机程序产品包括计算机可执行指令,所述计算机可执行指令在被执行时用于实现上述第一方面或第二方面的方法。

在虚拟试衣场景中,用户输入目标衣服图像以及试衣对象图像以后,则本实施例可以获取试衣对象图像的人体区域的目标人体mask图像以及目标人体关键点图像,并获取目标衣服图像对应的目标衣服mask图像。然后将目标衣服图像、目标衣服mask图像、目标人体mask图像以及目标人体关键点图像输入至预先生成的试衣模型中,由试衣模型预测目标衣服图像对应的目标预测光流,并根据该目标预测光流以及目标衣服图像生成目标形变衣服图像,然后就可以根据目标形变衣服图像生成试衣效果图像。由于试衣模型的处理过程中采用光流来预测目标衣服的形变衣服图像,使得生成的试衣效果图像更加逼真,能够解决衣袖扭曲、试穿美感差、清晰度低以及贴合度的问题。且整个过程无需用户进行其他复杂的操作,对用户友好,通用性强。

在训练试衣模型时,首先通过样本衣服图像,以及,各样本衣服图像对应的样本衣服穿着在人体身上后的第一形变衣服图像训练试衣光流模型,然后基于该试衣光流模型生成样本衣服图像与对应的第一形变衣服图像之间的光流,并基于该光流与对应的样本衣服图像生成光流对数据。接着结合生成的光流对数据以及包含样本衣服图像对应的样本衣服穿着在人体身上后获得的人体图像的第二训练数据集训练试衣模型。结合光流pair数据来训练试衣模型,使得最终得到的试衣模型能够解决衣袖扭曲、试穿美感差、清晰度低以及贴合度的问题,达到更加逼真的试穿效果。且本实施例无需复杂的建模过程,模型的泛化性能强、适用范围广。

附图说明

为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是本申请实施例一提供的一种试衣模型训练的方法实施例的流程图;

图2是本申请实施例一提供的一种试衣光流模型的架构示意图;

图3是本申请实施例一提供的一种试衣光流模型训练的示例性方法流程图;

图4是本申请实施例一提供的一种样本衣服图像示意图;

图5是本申请实施例一提供的一种训练过程光流示意图;

图6是本申请实施例一提供的一种第二形变衣服图像示意图;

图7是本申请实施例一提供的一种试衣模型的架构示意图;

图8是本申请实施例一提供的一种试衣模型训练的示例性方法流程图;

图9是本申请实施例一提供的一种残差块的结构示意图;

图10是本申请实施例二提供的一种虚拟试衣方法实施例的流程图;

图11是本申请实施例三提供的一种试衣模型训练的装置实施例的结构框图;

图12是本申请实施例四提供的一种虚拟试衣装置实施例的结构框图;

图13是本申请实施例五提供的一种电子设备的结构示意图。

具体实施方式

为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。

需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。

实施例一

图1为本申请实施例一提供的一种试衣模型训练的方法实施例的流程图,该试衣模型可以应用在虚拟试衣场景中,实现虚拟试衣的功能。例如,在电商平台、短视频娱乐、图像处理、电影制作、直播、游戏等场景下都可添加虚拟试衣功能。

如图1所示,本实施例可以包括如下步骤:

步骤101,获取第一训练数据集,该第一训练数据集中各第一训练数据包括样本衣服图像,以及,该样本衣服图像对应的样本衣服穿着在人体身上后的第一形变衣服图像。

其中,第一训练数据集可以为由若干第一训练数据组成的集合。进一步地,每条第一训练数据又可以包括样本衣服图像以及第一形变衣服图像。

样本衣服图像例如可以是样本衣服的平铺图像,也就是,将样本衣服进行平铺后拍摄的图像,可以理解为,样本衣服图像为样本衣服没有发生形变的图像,如图2的样本衣服图像C1示意图所示。

第一形变衣服图像为样本衣服图像对应的样本衣服穿着在人体身上后发生形变的衣服图像。例如,第一形变衣服图像可以为样本衣服穿着在模特身上后从模特身上扣下来的衣服图像,如图2的第一形变衣服图像C2示意图所示。

在一种实施例中,步骤101进一步可以包括如下步骤:

步骤101-1,获取全量训练数据集,该全量训练数据集中的各训练数据包括样本衣服图像,以及,该样本衣服图像对应的样本衣服穿着在人体身上后的穿衣图像。

其中,该穿衣图像为样本衣服图像对应的样本衣服穿着在人体身上后进行拍照的,包含该样本衣服以及人体的图像。

在全量训练数据集中的各训练数据包含样本衣服图像以及与之关联的穿衣图像。需要说明的是,为了提升训练效果,全量训练数据集覆盖的样本越全越好。例如,对于样本衣服图像中的样本衣服,可以包括短袖、长袖、外套、连衣裙、长裙、短裙等市面上有的衣服样式;对于穿衣图像中的人体姿势,可以包括手的不同姿势、腿的不同姿势、简单的姿势、复杂的姿势等不同类型的姿势。

在进一步的实施例中,为了提升模型的训练效果,还可以将全量训练数据集划分成不同难度等级的训练数据子集,然后根据训练数据子集的难易程度进行分批训练。例如,将全量训练数据集划分成难样本数据集以及普通样本数据集,对于难样本数据集,可以采用迭代过拟合的方式进行单独训练。在一种实现中,可以采用如下方式判断训练数据是否为难样本:将训练数据中的穿衣图像通过预先训练的关键点模型进行关键点提取,得到该穿衣图像中的人体关键点信息,然后根据该人体关键点信息来判断该训练数据是否为难样本,例如,根据该人体关键点信息判断手臂的姿势、腿的姿势等来判断样本是否为难样本,比如如果手或腿弯曲或者张开的程度比较大,那么对应的训练数据就是难样本,将该难样本放入难样本数据集,则当所有训练数据都遍历完毕以后,除难样本数据集以外的训练数据则为普通样本数据集。

步骤101-2,从穿衣图像中提取所述样本衣服,生成第一形变衣服图像。

在一种实现中,可以预先训练分割模型,通过该分割模型来对穿衣图像中的衣服进行分割,获得样本衣服的mask图像,然后基于样本衣服的mask图像将样本衣服从穿衣图像中提取出来,生成第一形变衣服图像。

步骤101-3,将第一形变衣服图像与对应的样本衣服图像关联记录为一条第一训练数据。

步骤101-4,将获得的所有第一训练数据组成第一训练数据集。

针对当前样本衣服图像,当获得其第一形变衣服图像以后,则可以将该样本衣服图像与对应的第一形变衣服图像关联记录为一条第一训练数据。

当所有样本衣服图像都生成第一训练数据以后,则所有的第一训练数据组成第一训练数据集。

本实施例的训练数据,除了样本衣服图像以外,还可以包括第一形变衣服图像,将第一形变衣服图像作为训练数据训练试衣光流模型可以提升试衣光流模型的训练效果,得到更真实的光流。

步骤102,采用所述第一训练数据集训练试衣光流模型。

其中,该试衣光流模型用于确定样本衣服图像与其第一形变衣服图像之间的光流(Optical Flow),即,样本衣服穿到人体身上的光流。当人的眼睛观察运动物体时,物体的景象在人眼的视网膜上形成一系列连续变化的图像,这一系列连续变化的信息不断“流过”视网膜(即图像平面),好像一种光的“流”,故称之为光流。光流表达了图像的变化,由于它包含了目标运动的信息,因此可被观察者用来确定目标的运动情况。在本实施例中,则可以采用光流来表达样本衣服与其形变衣服之间的形变情况。

利用图像序列中像素在时间域上的变化以及相邻帧之间的相关性来找到上一帧跟当前帧之间存在的对应关系,从而计算出相邻帧之间物体的运动信息的方法称为光流法,本实施例的试衣光流模型可以依据光流法获取样本衣服图像与其第一形变衣服图像之间的光流。

在一种实施例中,该试衣光流模型可以为无监督光流模型,如图3的试衣光流模型训练示意图所示,在步骤102中进一步可以采用如下步骤训练试衣光流模型:

步骤102-1,确定样本衣服图像与第一形变衣服图像之间的训练过程光流。

在实现时,可以使用光流法计算样本衣服图像与第一形变衣服图像之间的光流,为了便于区分,将此阶段的光流称为训练过程光流。

具体的,可以从样本衣服图像中提取第一特征信息,以及,从第一形变衣服图像中提取第二特征信息。在一种实现中,如图2所示,可以将样本衣服图像C1输入至第一特征提取网络进行特征提取,由第一特征提取网络输出第一特征信息;以及,将第一形变衣服图像C2输入至第二特征提取网络进行特征提取,由第二特征提取网络输出第二特征信息。

示例性地,第一特征提取网络以及第二特征提取网络均可以为卷积神经网络,第一特征提取网络中可以包括多个次第相连的第一子网络P1,第二特征提取网络中可以包括多个次第相连的第二子网络P2。进一步的,每个P1或P2中可以包括:卷积层、归一化层以及激活函数层,其中,该激活函数层中使用的激活函数可以包括带泄露线性整流激活函数(leaky_relu)。

接着,计算第一特征信息与第二特征信息之间的相关性,得到两者的训练过程光流。如图2所示,O1表示特征之间计算相关性得到光流w。

其中,光流可以理解为一个大小为(N,H,W,2)的矩阵,用于反映图像之间的平移、旋转、扭曲等变化情况。

步骤102-2,根据样本衣服图像与训练过程光流,预测样本衣服图像对应的样本衣服穿着在人体身上的第二形变衣服图像。

在一种实现中,可以将训练过程光流与样本衣服图像进行grid_sample(一种特殊的采样算法),以预测样本衣服图像对应的样本衣服穿着在人体身上后发生形变的样子,生成第二形变衣服图像,如图2的第二形变衣服图像C3所示。

grid_sample的原理如下:假设输入图(即本实施例中的样本衣服图像)的shape为(N,C,H,W)(N表示单次训练样本数(batch size)、C表示通道数、H和W表示特征图长和宽),grid(流场,本实施例中为训练过程光流的光流场)的shape设定为(N,H,W,2),以双线性差值为例进行处理。首先根据input和grid设定,输出特征图tensor的shape为(N,C,H,W),输出特征图上每一个cell上的值由grid最后一维(x,y)确定。那么如何计算输出tensor上每一个点的值?首先,通过(x,y)找到输入图上的采样位置,由于x、y取值范围为[-1,1],为了便于计算,先将x、y取值范围调整为[0,1]。通过(w-1)*(x+1)/2、(wh-1)*(y+1)/2将x、y映射为输入图的具体坐标位置。将x、y映射到特征图实际坐标后,取该坐标附近四个角点特征值,通过四个特征值坐标与采样点坐标相对关系进行双线性插值,得到采样点的值。

例如,若样本衣服图像如图4所示,其训练过程光流如图5所示,两者进行grid_sample后得到的第二形变衣服图像如图6所示。

步骤102-3,根据第一形变衣服图像以及第二形变衣服图像,确定形变损失。

在获得第二形变衣服图像以后,则可以将该第二形变衣服图像C3与第一形变衣服图像C2进行比较,确定形变损失。

在一种实施例中,步骤102-3进一步可以包括如下步骤:

根据第一形变衣服图像以及第二形变衣服图像,确定平均绝对误差损失以及感知域损失;将平均绝对误差损失与感知域损失的和作为形变损失。

具体的,如图2所示,形变损失Loss=L1_loss+Perceptual_loss

其中,L1_loss为L1损失,也就是平均绝对误差损失;Perceptual_loss为感知域损失。

进一步地,在一种实现中,L1_loss的计算方式可以为:L1_loss=abs(c3–c2),其中,“abs”为绝对值。

第二形变衣服图像C3与第一形变衣服图像C2的Perceptual_loss可表示为Perceptual loss(C3,C2),其可以采用VGG模型(例如VGG-19或VGG-16)的特征层计算平方差损失得到,因此也可以称为VGG_loss,即:

Perceptual loss(C3,C2)=E((VGG(C3)-VGG(C2))

其中,E为均值。

步骤102-4,基于所述形变损失进行反向传播,以优化所述试衣光流模型的参数,继续训练所述试衣光流模型,直到所述形变损失达到最优,则所述试衣光流模型训练完成。

对试衣光流模型进行训练时,形变损失越小,训练得到的试衣光流模型输出的光流就会越接近真实光流。

步骤103,采用试衣光流模型生成样本衣服图像与第一形变衣服图像之间的光流,并基于该光流与样本衣服图像生成光流对数据。

当试衣光流模型训练完成以后,则可以将第一训练数据集中各第一样本衣服图像与对应的第一形变衣服图像输入至试衣光流模型,由第一训练数据集获取两者之间的光流。然后可以将该光流与对应的样本衣服图像进行绑定,得到光流对(pair)数据,则每个光流pair数据可以包括样本衣服图像与其对应的光流。

在一种实施例中,通过步骤103可以得到各种不同的光流pair数据。在这些光流pair数据中可能会包含存在美感、扭曲以及贴合度等问题的光流pair数据,如果直接拿这些光流pair数据去训练试衣模型,无法得到最佳的效果,因此可以过滤掉这些存在问题的光流pair数据,以得到更好的pair数据。则在步骤103之后,还可以包括如下步骤:

根据光流对数据中的光流以及样本衣服图像,生成形变衣服图像;将该形变衣服图像输入至预先生成的二分类模型中,获取该二分类模型输出的形变识别结果;若基于该形变识别结果判断该形变衣服图像中的形变衣服存在形变问题,则过滤掉当前光流对数据。

具体的,针对各个光流pair数据,可以将该光流pair数据中的样本衣服图像与对应的光流进行grid_sample,得到对应的形变衣服图像。然后将该形变衣服图像输入至预先生成的二分类模型中,由该二分类模型进行形变问题识别,例如,二分类模型可以将形变衣服图像穿着(Warp)在模特身上,判断是否存在贴合度、纹理扭曲、清晰度等问题,并输出形变识别结果。

其中,该形变识别结果例如可以包括0和1,0表示该形变衣服图像存在形变问题,1表示该形变衣服图像不存在形变问题。若某个光流pair数据生成的形变衣服图像存在形变问题,则可以将该光流pair数据作为缺陷光流pair数据,并可以过滤掉该光流pair数据;若某个光流pair数据生成的形变衣服图像不存在形变问题,则可以将该光流pair数据作为完美光流pair数据,并可以保留该光流pair数据。

示例性地,该二分类模型可以为深度残差网络模型(Deep Residual Network),例如基于ResNet50生成的模型。

示例性地,一个不存在形变问题的形变衣服图像可以考虑如下因素:衣袖或者裤腿没有扭曲;图案清晰、无扭曲;没有出现贴合度的问题,例如脖子处、衣袖处等的贴合问题;版型没有问题,没有出现衣服的长度等版型错乱问题。

步骤104,获取第二训练数据集,该第二训练数据集中各第二训练数据包括样本衣服图像,以及,该样本衣服图像对应的样本衣服穿着在人体身上后获得的人体图像。

其中,该第二训练数据集用于训练试衣模型。

示例性地,人体图像可以包括人体区域的人体mask图像以及人体关键点图像,则步骤104进一步可以包括如下步骤:

步骤104-1,从穿衣图像中提取所述人体区域的mask图像,记作人体mask图像。

具体的,对于全量训练数据集中的每条训练数据,可以提取其穿衣图像,然后从穿衣图像中提取人体区域的mask图像,此处记作人体mask图像,如图7的人体mask图像C5所示。

在一种实施例中,步骤104-1进一步可以包括如下步骤:

步骤104-1-1,采用预训练的DensePose模型从穿衣图像中提取人体特征信息,并基于该人体特征信息生成二值化的人体初步mask图像。

其中,该人体特征信息可以为DensePose模型输出的人体姿态识别结果,例如可以包括手臂解析信息、腿部的解析信息等人体解析特征,然后对该人体特征信息进行二值化处理,得到人体初步mask图像。

为了得到更好效果的试衣模型,人体mask图像较佳地可以为没有穿衣服的人体的mask图像。而人体初步mask图像未必能达到上述的效果,因此可以根据下述步骤采用分割mask图像来得到效果更好的人体mask图像。

步骤104-1-2,获取人体分割mask图像。

示例性地,人体分割mask图像可以包括穿衣图像中的人体的各个部位的mask图像,例如手部mask图像、腿部mask图像、脚部mask图像、躯干mask图像等。

在一种实现中,可以将穿衣图像输入至预训练的人体解析模型中,由人体解析模型将该穿衣图像的人体区域划分成各个人体部位并生成对应的mask图像。

步骤104-1-3,取该人体初步mask图像与人体分割mask图像的交集,生成人体区域的mask图像。

当获得人体分割mask图像以后,则可以将人体初步mask图像与人体分割mask图像取交集,获得最终的人体区域的mask图像。

上述做法的好处是可以避免DensePose的准确率影响贴合度的问题,同时不直接使用densepose输出的信息,因为densepose输出的信息容易出现数据泄露,例如容易直接泄露了人的衣服的长度等,所以采用densepose的二值化特征,这样训练的模型更加稳定,模型泛化性能更强。

步骤104-2,采用预先生成的关键点模型提取穿衣图像中人体区域的人体关键点图像。

具体的,对于全量训练数据集中的每条训练数据,可以提取其穿衣图像,然后从穿衣图像中提取人体区域的人体关键点图像,如图7的人体关键点图像C6所示。

人体关键点是指人体的各个部位的关键位置点,人体关键点对于描述人体姿态,预测人体行为至关重要。人体关键点例如可以包括左、右手臂的三个点(手腕、手肘、肩膀),左、右腿的三个点(脚腕、膝盖、胯骨),髋、臀部点以及头部点(眼睛,下巴,头顶)等。

在该步骤中,可以通过关键点模型来对穿衣图像进行关键点检测。具体的,人体关键点检测也称人体姿态估计,其任务是要在给定的图片中定位人体的身体关键部件,例如头部、颈部、肩部、手部等。在不同数据集上,需要检测的具体部位不同,检测出的关键点的数量也不同。

在一种实现中,关键点模型可以是一种基于深度学习的模型。较佳地,关键点模型还可以是预训练的经过多次推理检测、精度较高的无差别的关键点检测模型。例如,将穿衣图像输入一个现有的无差别检测的人体关键点检测模型,得到每一人体关键点对应的概率分布图。其中,根据实际的处理情况和网络结构,可以对穿衣图像进行不同的采样处理,例如,穿衣图像是大小为3x256x256,经过三次下采样和卷积操作将穿衣图像预处理为nx32x32的图像。接着,将nx32x32的图像输入一个预设的沙漏网络(Hourglass),进行升采样处理和卷积操作,得到对应的热力图(heatmap),将该热力图对应的结果确定为人体关键点检测结果。

步骤104-3,从样本衣服图像中提取样本衣服区域的mask图像,记作样本衣服mask图像。

具体的,对于全量训练数据集中的每条训练数据,可以提取其样本衣服图像,然后从样本衣服图像中提取样本衣服的mask图像,如图7的样本衣服mask图像C4所示。

在一种实现中,可以预先训练人体解析模型,通过该人体解析模型来从样本衣服图像中生成样本衣服的mask图像。人体解析就是将人体的各个部位分割出来,是一种细粒度的语义分割任务。例如,通过人体解析后可以将目标人体分割成头发、脸部、衣服、裤子、四肢等部位。

步骤104-4,将样本衣服图像、样本衣服mask图像、人体mask图像、人体关键点图像关联记录为一条第二训练数据。

在第二训练数据中,可以将样本衣服图像和样本衣服mask图像拼接在一起作为样本衣服的相关训练数据,以及,将人体mask图像和人体关键点图像拼接在一起作为人体的相关训练数据,然后将样本衣服的相关训练数据和人体的相关训练数据关联起来生成第二训练数据。

步骤104-5,将获得的所有第二训练数据组成第二训练数据集。

步骤105,基于第二训练数据集以及光流对数据训练试衣模型。

在该步骤中,可以结合保留下来的完美光流pair数据和第二训练数据集训练试衣模型,使得训练试衣模型达到切合度更好的试衣效果。

在一种实施例中,如图8所示,步骤105可以包括如下步骤:

步骤105-1,将样本衣服图像以及对应的样本衣服mask图像进行拼接作为第一输入数据输入至试衣网络,以及,将人体mask图像以及对应的人体关键点图像进行拼接作为第二输入数据输入至所述试衣网络。

其中,在试衣网络中可以包括与第一输入数据对应的多个级联的第一残差块(即第一res_block模块),以及,与第二输入数据对应的多个级联的第二残差块(即第二res_block模块)。例如,如图7所示,试衣网络包含第一残差网络和第二残差网络,第一残差网络中可以包括多个级联的第一残差块P3,第二残差网络中可以包括多个级联的第二残差块P4。C1和C4拼接后作为第一输入数据输入至第一残差网络,C5和C6拼接后作为第二输入数据输入至第二残差网络。

本实施例将样本衣服图像以及对应的样本衣服mask图像进行拼接作为第一输入数据的好处是,因为增加了mask信息的输入,类似于告诉试衣网络哪部分是背景,哪部分是样本衣服的区域,解决了当样本衣服的背景和衣服颜色相近时出现的一些模型奔溃的问题。

另外,本实施例将人体mask图像以及对应的人体关键点图像进行拼接作为第二输入数据的好处是,可以更好地呈现人体的姿态信息,便于进行衣服的warp,达到更好的试衣效果。

在一种实现中,第一残差块和第二残差块的结构如图9所示,每个第一残差块或第二残差块中均可以包括若干相连的第三子网络P5,每个第三子网络P5可以包括:卷积层、归一化层以及激活函数层,其中,该激活函数层中使用的激活函数可以包括带泄露线性整流激活函数(leaky_relu)。在图9中,O2符号表示特征相加。

步骤105-2,基于同一位置的第一残差块的第一输出特征以及第二残差块的第二输出特征,计算两者的光流,记作预测光流。

其中,第一残差网络中的第N个残差块与第二残差网络中的第N个残差块属于同一位置的第一残差块和第二残差块。例如,图7中P3和P4属于同一位置的第一残差块和第二残差块。

将同一位置的第一残差块的第一输出特征与第二残差块的第二输出特征计算相关性得到两者的预测光流,例如,图7中,第一残差块P3的第一输出特征与第二残差块P4的第二输出特征计算相关性得到两者的预测光流w

步骤105-3,将该预测光流作为样本衣服的特征输入至下一第一残差块中,使得下一第一残差块基于样本衣服特征以及获得的预测光流获得形变衣服特征作为第一输出特征进行输出,并返回基于同一位置的所述第一残差块的第一输出特征以及所述第二残差块的第二输出特征,计算两者的光流,记作预测光流的步骤,以此类推,直到最后的第一残差块和第二残差块处理完毕。

例如,如图7所示,第一残差块P3(假设为第一个第一残差块)的第一输出特征与第二残差块P4(假设为第二个第二残差块)的第二输出特征计算相关性得到两者的预测光流w

第二个第一残差块在进行特征提取时会考虑预测光流w

第三个第一残差块在进行特征提取时会考虑预测光流w

第四个第一残差块在进行特征提取时会考虑预测光流w

第五个第一残差块在进行特征提取时会考虑预测光流w

需要说明的是,每个第一残差块的输出特征图的分辨率是不一样的,每个第二残差块的输出特征图的分辨率也是不一样的,例如,假设第一输入数据和第二输入数据的分辨率大小为1024*768*N,第一个第一残差块和第二残差块的输出分辨率为512*384*32,第二个第一残差块和第二残差块的输出分辨率为256*192*64,第三个第一残差块和第二残差块的输出分辨率为128*96*128,第四个第一残差块和第二残差块的输出分辨率为64*48*512,第五个第一残差块和第二残差块的输出分辨率为32*24*512。则w

本实施例通过多级光流与残差块相结合,每个光流都会作用在下一层样本衣服的特征上面,可以更好地提升模型的学习效果。

步骤105-4,每次获得预测光流以后,根据当前获得的预测光流以及该预测光流对应的样本衣服图像,预测该样本衣服图像对应的样本衣服穿着在人体身上的形变衣服图像,记作预测形变衣服图像。

每一次获得预测光流w以后,则可以根据该预测光流与其对应的样本衣服图像进行grid_sample,得到对应的预测形变衣服图像。

例如,在图7中,获得最后输出的预测光流w

步骤105-5,基于各当前获得的所述预测光流、样本衣服图像、预测形变衣服图像确定试衣损失。

如图7所示,试衣损失Loss可以包括平均绝对误差损失(即L1_loss)、感知域损失(Perceptual_loss)以及光流损失(flow_pair_loss)。

在一种实施例中,步骤105-5进一步可以包括如下步骤:

步骤105-5-1,从光流对数据中查找当前样本衣服图像对应的光流,记作真实光流。

步骤105-5-2,确定当前获得的所述预测光流与真实光流的光流差异,并根据该光流差异确定光流损失。

步骤105-5-3,确定当前样本衣服图像对应的第一形变衣服图像与预测形变衣服图像的形变差异,并根据该形变差异确定平均绝对误差损失。

步骤105-5-4,根据当前样本衣服图像对应的第一形变衣服图像与预测形变衣服图像,确定感知域损失。

步骤105-5-5,将光流损失、平均绝对误差损失与感知域损失之和作为试衣损失。

例如,图7的架构中,试衣损失Loss可以采用如下公式计算:

其中,

k表示多级光流,在图7中共5个光流;

w

w

w

w

vgg表示vgg模型,用于计算Perceptual_loss;

a、b、c分别表示flow_pair_loss、平均绝对误差损失(即L1_loss)和Perceptual_loss的权重,在训练时,可以设定a=10、b=1、c=1。

步骤105-6,基于试衣损失进行反向传播,以优化所述试衣网络的参数,继续训练所述试衣模型,直到所述试衣损失达到最优,则所述试衣模型训练完成。

每一次计算得到试衣损失以后,则可以基于该试衣损失进行梯度反向传播,以优化试衣网络的参数,直到试衣损失达到最优则试衣模型训练完成。

在该实施例中,结合光流pair数据来训练试衣模型,使得最终得到的试衣模型能够解决衣袖扭曲、试穿美感差、清晰度低以及贴合度的问题,达到更加逼真的试穿效果。且本实施例无需复杂的建模过程,模型的泛化性能强、适用范围广。

实施例二

图10为本申请实施例二提供的一种虚拟试衣方法实施例的流程图,该方法可以通过虚拟试衣装置实现,其中,该虚拟试衣装置可以按开发文档接入到APP或Web页面中,以在该APP或者Web页面中实现虚拟试衣功能。该APP或Web页面所在的终端可以包括手机、平板电脑、试衣机器人等。

本实施例可以应用于电商平台、短视频娱乐、图像处理、电影制作、直播、游戏等场景的虚拟试衣功能上。例如,在电商平台中,买家用户选定衣服以后,可以上传一张包含想要试穿该衣服的人物的照片,则通过虚拟试衣功能用户可以直接看到在该人物身上穿上该选定衣服的穿衣效果图;卖家用户给定模特的图以及拍好的衣服以后,则可以通过本实施例的虚拟穿衣功能得到电商平台的衣服主图。又如,给定一段视频,指定视频中需要试穿衣服的人物,以及想要试穿的衣服,则通过视频应用程序中的虚拟试衣功能,可以将视频中的该指定的人物的衣服换成想要试穿的衣服。

需要说明的是,本实施例的虚拟试衣的原理不仅仅适用于衣服上,也可以适用于其他的穿戴物,例如可以包括鞋子、袜子、首饰等。

如图10所示,本实施例可以包括如下步骤:

步骤201,获取用户输入的目标衣服图像以及试衣对象图像。

示例性地,目标衣服图像可以是用户上传的包含目标衣服的图像;或者,目标衣服图像还可以是用户在当前APP或者Web页面展示的衣服图像序列中选定的图像;或者,目标衣服图像还可以是用户在视频中选定某个人物,然后从该人物身上提取出衣服并查找该衣服对应的目标衣服的图像,本实施例对目标衣服图像的获取方式不作限定。

较佳地,目标衣服图像中的目标衣服需要尽可能保留穿戴物的纹理、形状等重要特征,例如可以是平铺后的衣服的图像,如图2的C1所示。

在一种例子中,试衣对象图像可以包括:经由虚拟试衣功能页面导入的图像。例如,当用户触发虚拟试衣功能进入虚拟试衣功能页面以后,可以根据页面中的导入接口导入试衣对象图像。其中,试衣对象图像为包含需要试穿的试衣对象的图像,该试衣对象可以是用户本人,也可以是其他人;该试衣对象图像可以是自拍图像,也可以是其他非自拍图像,本实施例对此不作限制。

在另一种例子中,试衣对象图像还可以包括:目标视频中包含试衣对象的各图像帧。例如,在直播场景中,当用户在直播界面中触发虚拟试衣功能、并指定需要试穿衣服的人物时,则可以将该直播场景中包含该指定人物的图像帧作为试衣对象图像。

需要说明的是,试衣对象图像中的试衣对象需要尽可能地完整保留人体的正面特征,至少是保留与试穿衣服相关的人体部位的正面特征。

在获得目标衣服图像以及试衣对象图像以后,可以将这两图像的尺寸处理成统一尺寸,例如采用中心等比例切割和等比例缩放等方式将两图像处理成统一尺寸。

步骤202,获取试衣对象图像的人体区域的目标人体mask图像以及目标人体关键点图像。

其中,关于目标人体mask图像以及目标人体关键点图像的获取方式可以参考实施例一中步骤104-1至步骤104-2的描述。

步骤203,获取目标衣服图像对应的目标衣服mask图像。

其中,目标衣服mask图像的获取方式可以参考步骤104-3的描述。

步骤204,将目标衣服图像、目标衣服mask图像、目标人体mask图像以及目标人体关键点图像输入至预先生成的试衣模型中。

具体的,可以将目标衣服图像和目标衣服mask图像拼接在一起作为试衣模型的一路输入流,此处可以称为衣服输入数据;将目标人体mask图像以及目标人体关键点图像拼接在一起作为试衣模型的另一路输入流,此处可以称为试衣对象输入数据。

步骤205,在试衣模型中,基于接收到的输入数据,预测目标衣服图像对应的目标预测光流,并根据目标预测光流以及目标衣服图像生成目标形变衣服图像。

在实现时,试衣模型可以从衣服输入数据中提取衣服特征,以及,从试衣对象输入数据中提取试衣对象特征。然后基于该衣服特征和试衣对象特征计算两者的光流,称为目标预测光流。

得到目标预测光流以后,则可以将该目标预测光流与目标衣服图像进行grid_sample,得到目标形变衣服图像。

步骤206,根据目标形变衣服图像生成试衣效果图像。

具体的,可以先擦除试衣对象原有的衣服,然后将该目标形变衣服图像贴在(Warp)在试衣对象身上,生成试衣效果图像。

获得试衣效果图像以后,在一种实施例中还可以将试衣效果图像返回用户。

在一种实现中,擦除试衣对象原有的衣服的方式可以为:可以基于手臂关键点绘制一个椭圆的图像掩模mask,这个椭圆的大小需要比原有手臂的范围大,在实现时椭圆的大小可以根据经验值确定。然后对于身体部分,可以基于初步人体解析结果中的身体部位,绘制方形mask,然后将两手臂的mask与身体部位的mask连接成一个完整的masks,最后再通过膨胀腐蚀的方法进行处理,得到擦除人体衣服的结果。

在本实施例中,用户输入目标衣服图像以及试衣对象图像以后,则可以得到逼真的试穿效果,无需用户进行其他复杂的操作,通用性强。

实施例三

图11为本申请实施例三提供的一种试衣模型训练的装置实施例的结构框图,可以包括如下模块:

第一训练数据集获取模块301,用于获取第一训练数据集,所述第一训练数据集中各第一训练数据包括样本衣服图像,以及,所述样本衣服图像对应的样本衣服穿着在人体身上后的第一形变衣服图像;

试衣光流模型训练模块302,用于采用所述第一训练数据集训练试衣光流模型;

光流对数据生成模块303,用于采用所述试衣光流模型生成所述样本衣服图像与所述第一形变衣服图像之间的光流,并基于所述光流与所述样本衣服图像生成光流对数据;

第二训练数据集获取模块304,用于获取第二训练数据集,所述第二训练数据集中各第二训练数据包括所述样本衣服图像,以及,所述样本衣服图像对应的样本衣服穿着在人体身上后获得的人体图像;

试衣模型训练模块305,用于基于所述第二训练数据集以及所述光流对数据训练试衣模型。

在一种实施例中,试衣光流模型训练模块302进一步可以包括如下模块:

训练过程光流确定模块,用于确定所述样本衣服图像与所述第一形变衣服图像之间的训练过程光流;

第二形变衣服图像确定模块,用于根据所述样本衣服图像与所述训练过程光流,预测所述样本衣服图像对应的样本衣服穿着在人体身上的第二形变衣服图像;

形变损失确定模块,用于根据所述第一形变衣服图像以及所述第二形变衣服图像,确定形变损失;

模型优化模块,用于基于所述形变损失进行反向传播,以优化所述试衣光流模型的参数,继续训练所述试衣光流模型,直到所述形变损失达到最优,则所述试衣光流模型训练完成。

在一种实施例中,形变损失确定模块具体用于:

根据所述第一形变衣服图像以及所述第二形变衣服图像,确定平均绝对误差损失以及感知域损失;

将所述平均绝对误差损失与所述感知域损失的和作为所述形变损失。

在一种实施例中,第一训练数据集获取模块301具体用于:

获取全量训练数据集,所述全量训练数据集中的各训练数据包括样本衣服图像,以及,所述样本衣服图像对应的样本衣服穿着在人体身上后的穿衣图像;

从所述穿衣图像中提取所述样本衣服,生成第一形变衣服图像;

将所述第一形变衣服图像与对应的所述样本衣服图像关联记录为一条第一训练数据;

将获得的所有第一训练数据组成第一训练数据集。

在一种实施例中,所述人体图像包括所述人体区域的人体mask图像以及人体关键点图像;

第二训练数据集获取模块304具体用于:

从所述穿衣图像中提取所述人体区域的mask图像,记作人体mask图像;

采用预先生成的关键点模型提取所述穿衣图像中所述人体区域的人体关键点图像;

从所述样本衣服图像中提取所述样本衣服区域的mask图像,记作样本衣服mask图像;

将所述样本衣服图像、所述样本衣服mask图像、所述人体mask图像、所述人体关键点图像关联记录为一条第二训练数据;

将获得的所有第二训练数据组成第二训练数据集。

在一种实施例中,试衣模型训练模块305进一步可以包括如下模块:

输入模块,用于将所述样本衣服图像以及对应的所述样本衣服mask图像进行拼接作为第一输入数据输入至试衣网络,以及,将所述人体mask图像以及对应的所述人体关键点图像进行拼接作为第二输入数据输入至所述试衣网络,其中,所述试衣网络包括与所述第一输入数据对应的多个级联的第一残差块,以及,与所述第二输入数据对应的多个级联的第二残差块;

预测光流获取模块,用于基于同一位置的所述第一残差块的第一输出特征以及所述第二残差块的第二输出特征,计算两者的光流,记作预测光流;

残差处理模块,用于将该预测光流作为样本衣服的特征输入至下一第一残差块中,使得下一第一残差块基于样本衣服特征以及获得的预测光流获得形变衣服特征作为第一输出特征进行输出,并返回基于同一位置的所述第一残差块的第一输出特征以及所述第二残差块的第二输出特征,计算两者的光流,记作预测光流的步骤,以此类推,直到最后的第一残差块和第二残差块处理完毕;

预测形变衣服图像确定模块,用于每次获得预测光流以后,根据当前获得的预测光流以及该预测光流对应的所述样本衣服图像,预测所述样本衣服图像对应的样本衣服穿着在人体身上的形变衣服图像,记作预测形变衣服图像;

试衣损失确定模块,用于基于当前获得的所述预测光流、所述样本衣服图像、所述预测形变衣服图像确定试衣损失;

试衣模型优化模块,用于基于所述试衣损失进行反向传播,以优化所述试衣网络的参数,继续训练所述试衣模型,直到所述试衣损失达到最优,则所述试衣模型训练完成。

在一种实施例中,试衣损失确定模块具体用于:

从所述光流对数据中查找所述样本衣服图像对应的光流,记作真实光流;

确定当前获得的所述预测光流与所述真实光流的光流差异,并根据所述光流差异确定光流损失;

确定所述样本衣服图像对应的第一形变衣服图像与所述预测形变衣服图像的形变差异,并根据所述形变差异确定平均绝对误差损失;

根据所述样本衣服图像对应的第一形变衣服图像与所述预测形变衣服图像,确定感知域损失;

将所述光流损失、所述平均绝对误差损失与所述感知域损失之和作为所述试衣损失。

在一种实施例中,所述装置还可以包括光流对数据筛选模块,用于:

在基于所述光流与所述样本衣服图像生成光流对数据之后,根据所述光流对数据中的光流以及所述样本衣服图像,生成形变衣服图像;

将所述形变衣服图像输入至预先生成的二分类模型中,获取所述二分类模型输出的形变识别结果;

若基于所述形变识别结果判断所述形变衣服图像中的形变衣服存在形变问题,则过滤掉当前光流对数据。

本申请实施例所提供的一种试衣模型训练的装置可执行本申请实施例一的一种试衣模型训练的方法,具备执行方法相应的功能模块和有益效果。

实施例四

图12为本申请实施例四提供的一种虚拟试衣装置实施例的结构框图,可以包括如下模块:

图像获取模块401,用于获取用户输入的目标衣服图像以及试衣对象图像;

人体信息获取模块402,用于获取所述试衣对象图像的人体区域的目标人体mask图像以及目标人体关键点图像;

衣服mask图像获取模块403,用于获取所述目标衣服图像对应的目标衣服mask图像;

目标形变衣服图像获取模块404,用于将所述目标衣服图像、所述目标衣服mask图像、所述目标人体mask图像以及所述目标人体关键点图像输入至预先生成的试衣模型中;在所述试衣模型中,基于接收到的输入数据,预测所述目标衣服图像对应的目标预测光流,并根据所述目标预测光流以及所述目标衣服图像生成目标形变衣服图像;

试衣效果图像生成模块405,用于根据所述目标形变衣服图像生成试衣效果图像。

本申请实施例所提供的一种虚拟试衣装置可执行本申请实施例二的一种虚拟试衣方法,具备执行方法相应的功能模块和有益效果。

实施例五

图13示出了可以用来实施本申请的方法实施例的电子设备10的结构示意图。如图13所示,电子设备10包括至少一个处理器11,以及与至少一个处理器11通信连接的存储装置,如只读存储器(ROM)12、随机访问存储器(RAM)13等,其中,存储装置存储有可被至少一个处理器执行的一个或多个计算机程序,处理器11可以根据存储在只读存储器(ROM)12中的计算机程序或者从存储单元18加载到随机访问存储器(RAM)13中的计算机程序,来执行各种适当的动作和处理。在RAM 13中,还可存储电子设备10操作所需的各种程序和数据。

在一些实施例中,实施例一或实施例二中的方法可被实现为计算机程序,其被有形地包含于计算机可读存储介质,例如存储单元18。在一些实施例中,计算机程序的部分或者全部可以经由ROM 12和/或通信单元19而被载入和/或安装到电子设备10上。当计算机程序加载到RAM 13并由处理器11执行时,可以执行上文描述的实施例一或实施例二中的方法的一个或多个步骤。

在一些实施例中,实施例一或实施例二中的方法可被实现为计算机程序产品,该计算机程序产品包括计算机可执行指令,该计算机可执行指令在被执行时用于执行上文描述的实施例一或实施例二中的方法的一个或多个步骤。

相关技术
  • 基于单目深度相机的虚拟试衣方法及装置
  • 一种利用虚拟现实技术的试衣方法及装置
  • 基于真实人物图像的虚拟试衣模型训练方法、虚拟试衣方法、装置及设备
  • 虚拟试衣模型训练方法、虚拟试衣方法和相关装置
技术分类

06120115936559