目录
- 开发环境
- 数据下载
- VITON复现(未完成)
- [Toward Characteristic-Preserving Image-based Virtual Try-On Network](https://arxiv.org/abs/1807.07688v1) (ECCV 2018)
- CP-VTON复现
开发环境
除了根据link配置好cuDNN,Tensorflow,PyTorch以外,一些其他的依赖包如TensorboardX,Opencv 等也可以用同样的方法在命令行用pip3 install 并通过清华镜像 -i https://pypi.tuna.tsinghua.edu.cn/simple 进行配置。
安装PyCharm。先在PyCharm官网下载安装包,在命令行进入解压后的/bin文件夹,执行 sh ./pycharm.sh 命令,之后的操作参照链接,并参考link配置项目环境。
错误解决方案:
-
sudo apt-get install 出现“E: 有几个软件包无法下载,要不运行 apt-get update 或者加上 --fix-missing 的选项再试试?”。参考1 参考2 。由于两种方案都有尝试,所以不确定是哪一个奏效。
-
“sudo add-apt-repository command not found”:解决方案
-
“no module named Tensorflow”:存在多个版本的python时,需要键入正确版本如使用pip3安装则是python3,以导入模块。参考
-
“tensorboard: command notfound”:解决方案 我是在tensorboard里python main.py解决的
数据下载
谷歌搜索镜像:谷歌学术镜像
MultCloud:在官网注册一个账号,进入后绑定百度云或其他可访问的网盘,绑定Google Drive(需要代理),在Google Drive中将需要下载的文件保存到自己的空间后,在MultCloud中选中,Copy to 目标网盘,即可在其他网盘工具进行高速下载。如果是放在谷歌网盘的数据集,可以通过上述方法下载。
我后来保存了cp-vton的数据集和模型,可以在(链接 提取码:8aum)下载,里面有一个model文件夹和一个viton_resize.tar.gz。
VITON复现(未完成)
VITON: An Image-based Virtual Try-on Network(CVPR 2018)
(论文地址 Github项目地址(Star 209))
在Github的诸多虚拟试穿的项目中,VITON的这一复现项目是最热门的项目之一,因此我原先的计划是跑一下这个模型。但是项目使用的数据集应该是涉及到zalando公司的利益而版权受到限制,有评论提到可以用CP-VTON项目中使用的数据集代替,而两边用到的数据的格式和深度学习库不一样,我没将数据处理修改好,所以暂时没跑。
使用PyCharm进行调试,命令行参数的设置可经下图所示步骤。
Toward Characteristic-Preserving Image-based Virtual Try-On Network (ECCV 2018)
这篇文献是对 VITON 的一个改进,相较于 VITON,CP-VTON 在生成试衣图像时并没有采用 shape context matching,而是采用了一种 tailored convolutional neural network。
人物表示
姿势热图:一个18通道的特征图,每个通道对应一个人体姿势关键点,绘制为11 × 11白色矩形。
身体形状:模糊的二进制蒙版的1通道特征图,大致覆盖了人体的不同部位。
保留区域:包含保留区域以保持人的身份(包括脸部和头发)的RGB图像。
Geometric Matching Module(GMM)
它的输入是人物表示p和目标产品图片c,p和c的高级特征会由两个网络提取,然后被一个相关层组合到一起。与
VITON的编码器-解码器生成器不同,GMM的输出并不是目标变形衣服形状的mask,而是变形后的衣服。
GMM通过训练一个 regression network 预测空间变换参数并使用TPS转换来生成变形后的衣服,其代价函数为变形后的衣服与Ground True 的L1损失。直接使用像素对像素的误差能提升网络的效率,不过不一定能获得更好的生成效果。GMM不像VITON使用预先训练的VGG19,而是从头开始训练。
在 GMM部分,主要分为 Feature Extraction Network (用于人物表示和衣服的特征提取)和 Regression Network 两部分。在 Feature Extraction Network 部分中,包含四个2-stride的下采样卷积层,后接两层卷积层使用了 1-stride以维持输出的维数。Regression Network 包含两个 2-stride 的卷积层、两个 1-stride 的卷积层、一个全连接的输出层。文章也给出了 SCMM 与 GMM 的效果对比,结果显示 GMM 在处理较大幅度的变形的时候能获得比 SCMM 更好的效果。
Try-on Module(TOM)
给定人物表示和变形衣服,UNet同时生成渲染人物与Composition Mask,渲染人物与变形衣服将通过Composition Mask合成最终结果。
和 VITON 的 Refinement Network 差不多,比较具体的不同是在于代价函数的选择。在 VITON 中,代价函数只用了 VGG19感知损失,而在 CP-VTON 中,作者加上了 pixel-wise 的 L1 损失。此外,由于 CP-VION 在 GMM 中并没有得到 segmentation mask,在计算 Composition Mask 的误差的时候无法照搬 VITON 的损失函数。基于特征保留的目的,作者使用了 1 - M 的 L1
范数来增强服装部分像素点对 loss 函数的影响。具体损失函数如下:
Toward Characteristic-Preserving Image-based Virtual Try-On Network (ECCV 2018)
(论文地址 Github项目(Star 156)地址 地址2 )
同样出自GitHub中的热门项目。Clone 地址中的项目到本地,将GoogleDrive 中/viton_resize文件夹里的数据保存到/data目录下,按照2中的说明修改cp_dataset.py以及命令行参数(使用命令行或 .sh文件运行时将python改为python3)。
项目的主要文件包括:
-
networks.py:定义GMM,TOM在内的各种网络结构
-
test.py:测试模块
-
train.py:训练模块
-
cp_dataset.py:数据预处理,包括绘制姿势热点图等
-
visualization.py:可视化测试结果
按照给定的参数进行了训练与测试。CP-VTON的第一部分为几何匹配模块,将干净的衣服图片变形,第二部分为试戴模块,将变形后的衣服穿戴到模特身上。
Geometric Matching Module训练结果:以产品图片和人物表示为输入,第二行中间为几何变形结果,第三行中间则为直接覆盖在原图的效果预览,其右为原图。
Geometric Matching Module测试结果:以产品图片和人物表示为输入,第二行中间为几何变形结果,第三行中间则为直接覆盖在原图的效果预览,其右为原图。
Try-on Module训练结果:以GMM得到的结果与人物表示作为输入。最后一行中央的图片为合成图片,其右为真实图片。
Try-on Module测试结果:以GMM得到的结果与人物表示作为输入。最后一行中央的图片为合成图片,其右为真实图片。
为了更直观查看模型效果,借用2的smart_show_test_result.py,由于dict类型是无序的,需要对原先代码进行修改,引入OrderedDict类型才能输出正确的结果。(关于OrderedDict)
使用matpoltlib显示图片:方法
从测试结果大致看来,CP-VTON在面对身体遮挡问题的表现有显著的不足,衣服细节保留方面也有许多欠缺。
总结:
之前在Github看到相关项目提供的数据集大多数都放在Google Drive里,由于难以访问Google Drive,浪费了太多时间才找到合适的方法来下载文件。
无法访问Google Drive的问题虽然解决起来简单,但是如果平时习惯用谷歌搜索,无法访问谷歌这一点,它出来的都是不相关的解决方案。一开始因为网络工具不太稳定而文件太大一直下不完,进度就卡住了。其实只要用百度搜索一下就能找到解决方案了,但是前期一直没有意识到这个问题。
千万不要只在一个搜索引擎找解决方案哈哈哈哈哈哈哈哈(哭了出来)。
除了看CP-VTON的项目相关外,留意了一些更新的研究如Multi-pose Guided Virtual Try-on Network(MG-VTON)或者End-to-End Learning of Geometric Deformations of Feature Maps for Virtual Try-On (WUTON),目前网上还没有看到相应的复现。
一些找到的其他虚拟试穿项目:
Paper | Project Link | Star |
---|
Deep Virtual Try-on with Clothes Transform(ICS 2018) | https://github.com/b01902041/Deep-Virtual-Try-on-with-Clothes-Transform | 53 |
VITON: An Image-based Virtual Try-on Network(CVPR 2018) | https://github.com/amjltc295/VITON_realtime | 41 |
SwapNet: Image Based Garment Transfer(ECCV 2018) | https://github.com/andrewjong/SwapNet | 26 |