【技术实现步骤摘要】
一种基于深度学习的服饰图像外观属性修改方法
本专利技术属于图像处理领域,具体涉及一种基于深度学习的服饰图像外观属性修改方法。
技术介绍
图像编辑和转换一直是计算机视觉领域的热门研究方向。能够对图像中的某些属性进行编辑和迁移在特定场景下是非常有用的,例如用户对于图像中的某个视觉属性不满意的情况。对于购物网站来说,如果能够以让用户以低学习成本来修改商品服饰图像的属性,无疑可以大幅提升用户体验。近年来深度学习和生成对抗网络得到了快速发展。越来越多的图像编辑任务都开始利用生成对抗网络(GAN)完成。然而已有的大部分工作都是在人脸数据集上完成,而鲜少在服饰图像这个更加广阔的应用场景上实现。相比起人脸图像,服饰图像属性编辑具有较高的难度,这主要是由于服饰图像种类繁多、属性复杂,更有颜色、纹理这种人脸数据上不具有的属性。利用生成对抗网络对于服饰图像属性进行迁移有两大挑战,首先是如何生成高质量的属性迁移图像,使得得到的图像看起来真实;其次是在迁移属性时,如何保证不会影响原图的其他属性。本专利技术通过设计网络结构与损失函数,将属性和内容分开处理,实现了上述要求,实验证明这是一个有效的尝试。
技术实现思路
本专利技术的目的在于,提出一种基于深度学习的服饰图像外观属性修改方法,这种方法主要包括数据集的获取与清洗、网络结构的设计、网络训练方法和损失函数的选择。本专利技术提出的一种基于深度学习的服饰图像外观属性修改方法,包括以下步骤:步骤1:在公开的服饰属性数据集Shopping100k中, ...
【技术保护点】
1.一种基于深度学习的服饰图像外观属性修改方法,其特征在于,该方法包括以下步骤:/n步骤1:在公开的服饰属性数据集Shopping100k中,通过Category属性筛选出上半身服饰,并分别根据颜色属性、领口样式属性和袖子长度属性这三个服饰外观属性建立三个子数据集:颜色属性数据集Data
【技术特征摘要】
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:使用训练好的基于深度学习的服饰图像外观属性修改模型对待测试服饰图像进行外观属性修改。
2.根据权利要求1所述的基于深度学习的服饰图像外观属性修改方法,其特征在于,所述步骤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分别代表了属性编码as与ar中对应于第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;使用advrake计算一次判别器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=E...
【专利技术属性】
技术研发人员:陈彦,司新建,胡洋,
申请(专利权)人:电子科技大学,
类型:发明
国别省市:四川;51
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。