[发明专利]一种基于深度学习的服饰图像外观属性修改方法有效
申请号: | 202110293375.1 | 申请日: | 2021-03-19 |
公开(公告)号: | CN112861884B | 公开(公告)日: | 2022-05-03 |
发明(设计)人: | 陈彦;司新建;胡洋 | 申请(专利权)人: | 电子科技大学 |
主分类号: | G06V10/44 | 分类号: | G06V10/44;G06V10/56;G06V10/764;G06V10/82;G06K9/62;G06N3/04;G06N3/08;G06Q30/06 |
代理公司: | 电子科技大学专利中心 51203 | 代理人: | 周刘英 |
地址: | 611731 四川省成*** | 国省代码: | 四川;51 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 一种 基于 深度 学习 服饰 图像 外观 属性 修改 方法 | ||
1.一种基于深度学习的服饰图像外观属性修改方法,其特征在于,该方法包括以下步骤:
步骤1:在公开的服饰属性数据集Shopping100k中,通过Category属性筛选出上半身服饰,并分别根据颜色属性、领口样式属性和袖子长度属性这三个服饰外观属性建立三个子数据集:颜色属性数据集Datacolor、领口样式属性数据集Datacollar以及袖子长度属性数据集Datasleeve,其中,颜色属性数据集Datacolor包括38359张仅在颜色属性上进行了分类标注的服饰图像,即包括38359张真实样本图像;领口样式属性数据集Datacollar包括18076张仅在领口样式属性上进行了分类标注的服饰图像,即包括18076张真实样本图像;袖子长度属性数据集Datasleeve包括45791张仅在袖子长度属性上进行了分类标注的服饰图像,即包括45791张真实样本图像;
步骤2:建立基于深度学习的服饰图像外观属性修改模型,所述基于深度学习的服饰图像外观属性修改模型共包括四个独立的神经网络模型,分别为:基于深度卷积神经网络的属性编码器Ea,用于提取输入服饰图像的属性相关的特征,得到输入服饰图像的属性编码;基于深度卷积神经网络的内容编码器Ec,用于提取输入服饰图像的内容特征,输出为输入服饰图像的内容编码;解码器Dec,接收属性编码和内容编码作为输入,按照属性编码以及内容编码表示的特征生成伪图像;判别器D,将来自三个子数据集的真实样本图像或者由解码器Dec生成的伪图像作为输入,输出为对输入的真伪判别结果以及输入在颜色、袖子长度或领口样式这三个服饰外观属性上的分类结果;
步骤3:使用步骤1得到的三个子数据集,对步骤2建立的基于深度学习的服饰图像外观属性修改模型进行训练,得到训练好的基于深度学习的服饰图像外观属性修改模型,其中,对基于深度学习的服饰图像外观属性修改模型的训练采取了循环训练的策略,循环次数为80000次,每次循环训练中依次进行三次子训练,这三次子训练分别对应三个服饰图像外观属性:领口样式属性、袖子长度属性和颜色属性;
步骤4:使用训练好的基于深度学习的服饰图像外观属性修改模型对待测试服饰图像进行外观属性修改;
其中,所述步骤3中对基于深度学习的服饰图像外观属性修改模型进行训练的具体步骤包括步骤3.1-步骤3.6,其中,步骤3.1-步骤3.3对应一次循环训练中的领口样式属性子训练;步骤3.4对应一次循环训练中的袖子长度属性子训练;步骤3.5对应一次循环训练中的颜色属性子训练:
步骤3.1:从领口样式属性数据集Datacollar中获取两张服饰图像src和ref,这两张服饰图像具有不同的领口样式属性分类,它们的领口样式属性分类标签分别用lsrc和lref表示;
步骤3.2:训练判别器D:
使用属性编码器Ea分别提取服饰图像src和ref的属性编码as和ar:
as=Ea(src)
ar=Ea(ref)
将服饰图像src送入内容编码器Ec得到服饰图像src的内容编码cs:
cs=Ec(src)
将服饰图像src送入判别器D,得到判别器D对于服饰图像src是否为领口样式属性数据集Datacollar中真实样本图像的判别结果advreal以及对于服饰图像src的领口样式属性分类结果clsreal;判别器D在多次循环训练后由于对抗损失函数的约束,学习到来自领口样式属性数据集Datacollar中的真实样本图像分布,因此advreal代表了服饰图像src接近领口样式属性数据集Datacollar中真实样本图像分布的程度;
advreal,clsreal=D(src)
使用advreal和clsreal计算一次判别器D的对抗损失函数和分类损失函数
其中采用二元交叉熵损失函数计算,binary_cross_entropy为PyTorch自带的损失函数,用于接收两个相同维度的张量并计算它们之间的交叉熵损失,在的计算中要求advreal的结果接近1,用于监督判别器D正确判断领口样式属性数据集中Datacollar的真实样本图像为真;使用了交叉熵损失函数计算,用于监督判别器D对于服饰图像src进行正确的领口样式属性分类;
为了修改服饰图像外观属性,需要将ar与as进行重组,ar与as都是192维度的张量,分别沿着ar与as中最后一个维度对张量ar与as进行划分,有:
ar=[r1,r2,r3]
as=[s1,s2,s3]
其中ri与si分别代表了属性编码ar与as中对应于第i个属性的特征编码,i=1,2,3;ri与si均为64维度的张量;要将服饰图像ref中的第i个属性迁移到服饰图像src中,需要将ar与as重组得到arec;i=1对应于颜色属性,i=2对应于领口样式属性,i=3对应于袖子长度属性,在此次子训练中,i=2;
arec=[s1,r2,s3]
将arec与cs送入解码器Dec得到伪图像fake:
fake=Dec(cs,arec)
将伪图像fake送入判别器D,得到判别器D对于伪图像fake接近领口样式属性数据集Datacollar中真实样本图像分布程度的判别结果advfake以及对于伪图像fake的领口样式属性分类结果clsfake;使用advfake计算一次判别器D的对抗损失函数
advfake,clsfake=D(fake)
其中采用了二元交叉熵损失函数计算,要求advfake的结果接近0,用于监督判别器D正确判断生成的伪图像fake为假;
判别器D总的损失函数为:
其中,λadv、λcls分别代表判别器D总的对抗损失函数和分类损失函数的权重,λadv、λcls均为经验参数,可根据实际情况进行调节;
采用上述判别器D总的损失函数并使用Pytorch框架的自动求导与反向传播机制,更新判别器D的参数,得到在领口样式属性修改任务上更新参数后的判别器D′;
步骤3.3:训练属性编码器Ea、内容编码器Ec与解码器Dec:
继续使用步骤3.1从领口样式属性数据集Datacollar中取出的服饰图像src与服饰图像ref,由于在实际训练中,步骤3.2使用Pytorch框架的反向传播机制后计算图被摧毁,因此需要重复步骤3.2中伪图像fake的生成过程,其中,计算图是指输入服饰图像被输入基于深度学习的服饰图像外观属性修改模型后,经过一系列计算得到的基于深度学习的服饰图像外观属性修改模型中各网络层参数之间的计算关系,计算图用于反向传播时计算梯度;
使用内容编码器Ec提取服饰图像src的内容编码cs:
cs=Ec(src)
将服饰图像src与服饰图像ref分别送入属性编码器Ea得到服饰图像src的属性编码as与服饰图像ref的属性编码ar:
as=Ea(src)
ar=Ea(ref)
为了修改服饰图像外观属性,需要将ar与as进行重组,ar与as都是192维度的张量,分别沿着ar与as中最后一个维度对张量ar与as划分,有:
ar=[r1,r2,r3]
as=[s1,s2,s3]
其中ri与si分别代表了属性编码ar与as中对应于第i个属性的特征编码,i=1,2,3;ri与si均为64维度的张量,要将服饰图像ref中的第2个属性迁移到服饰图像src中,需要将ar与as重组得到arec:
arec=[s1,r2,s3]
将arec与cs送入解码器Dec得到伪图像fake,这里的伪图像fake与步骤3.2中得到的伪图像fake相同,
fake=Dec(cs,arec)
将伪图像fake送入判别器D′,得到判别器D′对于伪图像fake接近领口样式属性数据集Datacollar中真实样本图像分布程度的判别结果advfake′以及对于伪图像fake领口样式属性的分类结果clsfake′,lref为服饰图像ref在领口样式属性上的分类标签,
advfake′,clsfake′=D′(fake)
其中,分别表示属性编码器Ea、内容编码器Ec与解码器Dec的对抗损失函数以及属性编码器Ea、内容编码器Ec与解码器Dec的分类损失函数;果用二元交叉熵损失函数计算,要求advfake′的结果接近1,使得生成的伪图像fake成功欺骗能够分辨输入服饰图像真伪的判别器D′,使其判断伪图像fake为领口样式属性数据集中的真实样本图像,来约束属性编码器Ea、内容编码器Ec与解码器Dec生成尽可能真实的服饰图像;采用交叉熵损失函数计算,的约束使得生成的伪图像fake在领口样式属性上的分类由原来服饰图像src的分类变为服饰图像ref的分类;
为了避免生成的伪图像fake将其他与领口样式属性不相关的属性也进行了修改,还使用了基于PyTorch的开源视觉时尚分析工具箱mmfashion获取领口样式属性数据集Datacollar中每一张服饰图像的关键点,将对应于服饰图像ref中的领口样式属性的关键点取出,使用取出的这些属性关键点,获取领口样式属性相关区域的框,利用获取的领口样式属性相关区域的框,将领口样式属性相关区域分别从伪图像fake和服饰图像src中去掉,分别获得伪图像fake和服饰图像src中与领口样式属性不相关的区域,获得与领口样式属性不相关的区域的过程用函数Funrelate()表示,因此,属性编码器Ea、内容编码器Ec与解码器Dec的像素损失函数有如下形式:
其中,||*||1表示L1范数,是为了约束基于深度学习的服饰图像外观属性修改模型,防止在生成的伪图像fake中将与领口样式属性不相关的区域进行了修改;
综上,属性编码器Ea、内容编码器Ec与解码器Dec总的损失函数为
其中,λadv、λcls和λpix分别代表属性编码器Ea、内容编码器Ec与解码器Dec对抗损失函数、分类损失函数和像素损失函数的权重;λadv、λcls和λpix均为经验参数,可根据实际情况进行调节;
采用属性编码器Ea、内容编码器Ec与解码器Dec总的损失函数并使用Pytorch框架的自动求导与反向传播机制,更新属性编码器Ea、内容编码器Ec与解码器Dec的参数,得到在领口样式属性修改任务上更新参数后的属性编码器Ea′、内容编码器Ec′与解码器Dec′;
步骤3.4:从袖子长度属性数据集Datasleeve中获取两张具有不同袖子长度属性分类的服饰图像src′和ref′,基于步骤3.2得到的在领口样式属性修改任务上更新参数后的判别器D′和步骤3.3得到的在领口样式属性修改任务上更新参数后的属性编码器Ea′、内容编码器Ec′与解码器Dec′,继续训练基于深度学习的服饰图像外观属性修改模型,其训练思路与步骤3.1-步骤3.3相同,最后得到在袖子长度属性修改任务上更新参数后的判别器以及在袖子长度属性修改任务上更新参数后的属性编码器、内容编码器与解码器;
步骤3.5:继续从颜色属性数据集Datacolor中获取两张具有不同颜色属性分类的服饰图像src″和服饰图像ref″,基于步骤3.4得到的在袖子长度属性修改任务上更新参数后的判别器以及在袖子长度属性修改任务上更新参数后的属性编码器、内容编码器与解码器,继续训练基于深度学习的服饰图像外观属性修改模型,其训练思路与步骤3.1-步骤3.3相同,但在步骤3.3中,由于颜色属性的修改并不涉及服饰图像结构的变化,因此不再计算像素损失函数,属性编码器、内容编码器与解码器总的损失函数中不再包括像素损失函数,最后得到在颜色属性修改任务上更新参数后的判别器以及在颜色属性修改任务上更新参数后的属性编码器、内容编码器与解码器;
步骤3.6:重复步骤3.1-步骤3.5直到达到给定的循环次数,最终得到训练好的基于深度学习的服饰图像外观属性修改模型及其参数,使用Pytorch提供的torch.save()函数,将训练好的基于深度学习的服饰图像外观属性修改模型的参数持久化保存为.pth格式的文件,以便测试和展示使用。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于电子科技大学,未经电子科技大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/202110293375.1/1.html,转载请声明来源钻瓜专利网。
- 上一篇:一种盾构机新型旋挖齿煤截齿
- 下一篇:一种提拉线