python三层设计图_Python多阶段框架实现虚拟试衣间,超逼真!

原标题:Python多阶段框架实现虚拟试衣间,超逼真!

作者 | 李秋键

责编 | 晋兆雨

头图 | CSDN下载自视觉中国

任意姿态下的虚拟试衣因其巨大的应用潜力而引起了人们的广泛关注。然而,现有的方法在将新颖的服装和姿势贴合到一个人身上的同时,很难保留服装纹理和面部特征(面孔、毛发)中的细节。故在论文《Downto the Last Detail: Virtual Try-on with Detail Carving》中提出了一种新的多阶段合成框架,可以很好地保留图像显著区域的丰富细节。

故今天我们将在他们代码的基础上,实现虚拟换衣系统。具体流程如下:

实验前的准备

首先我们使用的python版本是3.6.5所用到的模块如下:

opencv是将用来进行图像处理和图片保存读取等操作。

numpy模块用来处理矩阵数据的运算。

pytorch模块是常用的用来搭建模型和训练的深度学习框架,和tensorflow以及Keras等具有相当的地位。

json是为了读取json存储格式的数据。

PIL库可以完成对图像进行批处理、生成图像预览、图像格式转换和图像处理操作,包括图像基本处理、像素处理、颜色处理等。

argparse 是python自带的命令行参数解析包,可以用来方便地读取命令行参数。

网络模型的定义和训练

其中已经训练好的模型地址如下:https://drive.google.com/open?id=1vQo4xNGdYe2uAtur0mDlHY7W2ZR3shWT。其中需要将其中的模型放到"./pretrained_checkpoint"目录下。

对于数据集的存放,分为cloth_image(用来存储衣服图片),cloth_mask(用来分割衣服的mask,可以使用grabcut的方法进行分割保存),image(用来存储人物图片),parse_cihp(用来衣服语义分析的图片结果,可以使用[CIHP_PGN](https://github.com/Engineering-Course/CIHP_PGN)的方法获得)和pose_coco(用来存储提取到的人物姿态特征数据,可以使用openpose进行提取保存为josn数据即可)。

对于模型的训练,我们需要使用到VGG19模型,网络上可以很容易下载到,然后把它放到vgg_model文件夹下。

其中提出的一种基于目标姿态和店内服装图像由粗到细的多阶段图像生成框架,首先是设计了一个解析转换网络来预测目标语义图,该语义图在空间上对齐相应的身体部位,并提供更多关于躯干和四肢形状的结构信息。然后使用一种新的树扩张融合块(tree - block)算法,将空间对齐的布料与粗糙的渲染图像融合在一起,以获得更合理、更体面的结果。其中这个虚拟试穿网络不仅不借助3D信息,可以在任意姿态下将新衣服叠加到人的对应区域上,还保留和增强了显著区域的丰富细节,如布料纹理、面部特征等。同时还使用了空间对齐、多尺度上下文特征聚集和显著的区域增强,以由粗到细的方式各种难题。

(1)其中网络主要使用pix2pix模型,其中的部分代码如下:

classPixelDiscriminator( nn. Module):

def__init__( self, input_nc,ndf= 64, norm_layer=nn.InstanceNorm2d):

super(PixelDiscriminator, self).__init_ _

iftype(norm_layer) ==functools. partial:

use_bias =norm_layer.func == nn.InstanceNorm2d

else:

use_bias = norm_layer ==nn.InstanceNorm2d

self.net = nn.Sequential(

nn.Conv2d(input_nc, ndf,kernel_size= 1, stride= 1, padding= 0),

nn.LeakyReLU( 0. 2, True),

nn.Conv2d(ndf, ndf * 2,kernel_size= 1, stride= 1, padding= 0, bias=use_bias),

norm_layer(ndf * 2),

nn.LeakyReLU( 0. 2, True),

nn.Conv2d(ndf * 2, 1,kernel_size= 1, stride= 1, padding= 0, bias=use_bias),

nn.Sigmoid

)

defforward( self, input):

returnself.net(input)

classPatchDiscriminator( nn. Module):

def__init__( self, input_nc,ndf= 64, n_layers= 3, norm_layer=nn.InstanceNorm2d):

sup

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值