虚拟试穿 without parsing

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

二、新虚拟试穿算法测试
1.测试效果
采用try-on的测试集和,随机对应数据做测试,得到的效果展示如下:


免解析虚拟试衣算法测试

2. 模型
模型调用

# 初始化
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)  # 最后穿上的模样

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
测试流程
1)按照代码注释,测试流程:

2)训练设计流程那是相当复杂,而且前期训练数据里需要用到人体解析和关键点相关数据:


三、虚拟试穿算法测试分析
1.主要特点
算法训练的设计复杂,应用简单。
虽然设计训练模型的过程复杂,但应用方面做了很大的简化,缩短了运行时间,完成一次平均时间0.074s。


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

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


算法的模型参数量不大,两个模型约280M,我的GPU:GeForce RTX 2080 Ti 11G显存,测试可运行batch_size小于16。


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}
}
1
2
3
4
5
6
@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}
}
————————————————
版权声明:本文为CSDN博主「柏常青」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/beauthy/article/details/118147977

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值