虚拟试穿 without parsing

一、引言

首先测试算法来自:CVPR 2021 paper 'Parser-Free Virtual Try-on via Distilling Appearance Flows'作者:Yuying Ge等论文地址
虚拟试穿应用市场要求同步(实时性),保真,硬件要求不要太高等等。总之,物美价廉高大上(设计美,操作易,反应快,效果好,价格优,高科技光环等)。前面有朋友就嫌弃上一个算法(虚拟试穿–测试上衣代码详解,包括输入预处理中的人物解析和关键点等)的输入预处理太复杂,希望指定模特和服装就可以看到试穿效果。今天这个算法就基本满足了这个要求,操作易。不过大家应该都知道一句话,“人前显贵,幕后受罪”,或者励志点,“台上一分钟,台下十年功”。免层层预处理的方式约两种,将预处理封装在模型前头,这样做实时性可能受损;第二就是训练的时候有多个中间环节,将可能情况训练到模型当中。如果把设计训练过程比如幕后,训练后的模型应用属于台上得话。免人体解析的虚拟试穿算法就属于“台上一分钟,台下十年功”的范。因为,训练过程设计非常全面,也是相当复杂。所以,应用模型就非常简单。

二、新虚拟试穿算法测试

1.测试效果

采用try-on的测试集和,随机对应数据做测试,得到的效果展示如下:

免解析虚拟试衣算法测试

2. 模型

  1. 模型调用

    # 初始化
    warp_model = AFWM(opt, 3)
    gen_model = ResUnetGenerator(7, 4, 5, ngf=64, norm_layer=nn.BatchNorm2d)
    # 加载训练参数
    load_checkpoint(warp_model, opt.warp_checkpoint)
    load_checkpoint(gen_model, opt.gen_checkpoint)
    
    # 应用测试
    # 模型输入:real_image模特,clothes衣服
    flow_out = warp_model(real_image.cuda(), clothes.cuda())
    warped_cloth, last_flow, = flow_out
    warped_edge = F.grid_sample(edge.cuda(),
                                last_flow.permute(0, 2, 3, 1),
                                mode='bilinear',
                                padding_mode='zeros')
    gen_inputs = torch.cat([real_image.cuda(), warped_cloth, warped_edge], 1)
    gen_outputs = gen_model(gen_inputs)  # torch.Size([1, 4, 256, 192])
    
    # 结果处理
    p_rendered, m_composite = torch.split(gen_outputs, [3, 1], 1)  # 切成两块
    p_rendered = torch.tanh(p_rendered)  # 呈现[1, 3, 256, 192]
    m_composite = torch.sigmoid(m_composite)  # 合成的,[1, 1, 256, 192]
    m_composite = m_composite * warped_edge  # [1, 1, 256, 192],[1, 1, 256, 192] 轮廓卷曲
    
    # 虚拟试穿结果
    p_tryon = warped_cloth * m_composite + p_rendered * (1 - m_composite)  # 最后穿上的模样
    
  2. 测试流程
    1)按照代码注释,测试流程:
    在这里插入图片描述
    2)训练设计流程那是相当复杂,而且前期训练数据里需要用到人体解析和关键点相关数据:
    在这里插入图片描述

三、虚拟试穿算法测试分析

1.主要特点

  1. 算法训练的设计复杂,应用简单。
    虽然设计训练模型的过程复杂,但应用方面做了很大的简化,缩短了运行时间,完成一次平均时间0.074s。

    在这里插入图片描述
    也就是说,1个人换装和2个、4个、8个同时换装的时间都很短(只要你的硬件GPU装得下)。是不是可期望的实时性效果就可以得到保证了啦。

  2. 算法还原人体肤色和形态效率高。
    例如:测试集测试结果图的肩部(第三幅为试穿效果)显示,可以很好的还原(虚构)肢体和肤色,几乎毫无违和感。这依赖于前期的训练。
    在这里插入图片描述

  3. 算法的模型参数量不大,两个模型约280M,我的GPU:GeForce RTX 2080 Ti 11G显存,测试可运行batch_size小于16。
    在这里插入图片描述

2.还存在的不足

  1. 观察测试视频,会发现,算法在测试集上表现不好。不排除是训练的模型不稳定原因。
    作者展示的结果秒杀战场,无论是带解析的算法,还是不带解析的算法。
    在这里插入图片描述
    但测试数据集上的测试结果经常出现漏洞的情况:在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    这个给人的感觉是将衣服脱了,在蒙上去,所以容易缺边少角,顾不全。

  2. 还发现同try-on相比,或者原图相比,算法没有学到模特服装的纹理特征,或者特征过少,而显得扁平化。扭曲和纹理变化没有学到。
    在这里插入图片描述

3.总结

免解析算法使虚拟试穿的输入简化,应用效率提高,还原肢体结构和肤色有重要意义。改进算法的劣势还需从训练入手,和优化模型开始。
测试代码:https://gitee.com/rpr/pf-afn_test.git
测试数据:测试用数据集可以参考前面try-on with parsing的blog,文章一开始就介绍了资源.
测试用模型文件:下载

四、 参考文献

分享学习,共同进步。感谢本算法作者们。
If the code is helpful to your work, please cite:

@article{ge2021parser,
  title={Parser-Free Virtual Try-on via Distilling Appearance Flows},
  author={Ge, Yuying and Song, Yibing and Zhang, Ruimao and Ge, Chongjian and Liu, Wei and Luo, Ping},
  journal={arXiv preprint arXiv:2103.04559},
  year={2021}
}
@inproceedings{han2019clothflow,
  title={Clothflow: A flow-based model for clothed person generation},
  author={Han, Xintong and Hu, Xiaojun and Huang, Weilin and Scott, Matthew R},
  booktitle={Proceedings of the IEEE/CVF International Conference on Computer Vision},
  pages={10471--10480},
  year={2019}
}
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

柏常青

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值