热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

深度学习环境配置和CPVTON复现

目录开发环境数据下载VITON复现(未完成)[TowardCharacteristic-PreservingImage-basedVirtualTry-

目录

      • 开发环境
      • 数据下载
      • 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 函数的影响。具体损失函数如下:

在这里插入图片描述

CP-VTON复现

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),目前网上还没有看到相应的复现。

一些找到的其他虚拟试穿项目:

PaperProject LinkStar
Deep Virtual Try-on with Clothes Transform(ICS 2018)https://github.com/b01902041/Deep-Virtual-Try-on-with-Clothes-Transform53
VITON: An Image-based Virtual Try-on Network(CVPR 2018)https://github.com/amjltc295/VITON_realtime41
SwapNet: Image Based Garment Transfer(ECCV 2018)https://github.com/andrewjong/SwapNet26

推荐阅读
  • 在Docker中,将主机目录挂载到容器中作为volume使用时,常常会遇到文件权限问题。这是因为容器内外的UID不同所导致的。本文介绍了解决这个问题的方法,包括使用gosu和suexec工具以及在Dockerfile中配置volume的权限。通过这些方法,可以避免在使用Docker时出现无写权限的情况。 ... [详细]
  • imx6ull开发板驱动MT7601U无线网卡的方法和步骤详解
    本文详细介绍了在imx6ull开发板上驱动MT7601U无线网卡的方法和步骤。首先介绍了开发环境和硬件平台,然后说明了MT7601U驱动已经集成在linux内核的linux-4.x.x/drivers/net/wireless/mediatek/mt7601u文件中。接着介绍了移植mt7601u驱动的过程,包括编译内核和配置设备驱动。最后,列举了关键词和相关信息供读者参考。 ... [详细]
  • 本文介绍了在Windows系统上使用C语言命令行参数启动程序并传递参数的方法,包括接收参数程序的代码和bat文件的编写方法,同时给出了程序运行的结果。 ... [详细]
  • python3 nmap函数简介及使用方法
    本文介绍了python3 nmap函数的简介及使用方法,python-nmap是一个使用nmap进行端口扫描的python库,它可以生成nmap扫描报告,并帮助系统管理员进行自动化扫描任务和生成报告。同时,它也支持nmap脚本输出。文章详细介绍了python-nmap的几个py文件的功能和用途,包括__init__.py、nmap.py和test.py。__init__.py主要导入基本信息,nmap.py用于调用nmap的功能进行扫描,test.py用于测试是否可以利用nmap的扫描功能。 ... [详细]
  • 本文讨论了在使用Git进行版本控制时,如何提供类似CVS中自动增加版本号的功能。作者介绍了Git中的其他版本表示方式,如git describe命令,并提供了使用这些表示方式来确定文件更新情况的示例。此外,文章还介绍了启用$Id:$功能的方法,并讨论了一些开发者在使用Git时的需求和使用场景。 ... [详细]
  • 安装mysqlclient失败解决办法
    本文介绍了在MAC系统中,使用django使用mysql数据库报错的解决办法。通过源码安装mysqlclient或将mysql_config添加到系统环境变量中,可以解决安装mysqlclient失败的问题。同时,还介绍了查看mysql安装路径和使配置文件生效的方法。 ... [详细]
  • Linux重启网络命令实例及关机和重启示例教程
    本文介绍了Linux系统中重启网络命令的实例,以及使用不同方式关机和重启系统的示例教程。包括使用图形界面和控制台访问系统的方法,以及使用shutdown命令进行系统关机和重启的句法和用法。 ... [详细]
  • 本文讨论了clone的fork与pthread_create创建线程的不同之处。进程是一个指令执行流及其执行环境,其执行环境是一个系统资源的集合。在调用系统调用fork创建一个进程时,子进程只是完全复制父进程的资源,这样得到的子进程独立于父进程,具有良好的并发性。但是二者之间的通讯需要通过专门的通讯机制,另外通过fork创建子进程系统开销很大。因此,在某些情况下,使用clone或pthread_create创建线程可能更加高效。 ... [详细]
  • 31.项目部署
    目录1一些概念1.1项目部署1.2WSGI1.3uWSGI1.4Nginx2安装环境与迁移项目2.1项目内容2.2项目配置2.2.1DEBUG2.2.2STAT ... [详细]
  • 树莓派语音控制的配置方法和步骤
    本文介绍了在树莓派上实现语音控制的配置方法和步骤。首先感谢博主Eoman的帮助,文章参考了他的内容。树莓派的配置需要通过sudo raspi-config进行,然后使用Eoman的控制方法,即安装wiringPi库并编写控制引脚的脚本。具体的安装步骤和脚本编写方法在文章中详细介绍。 ... [详细]
  • 解决github访问慢的问题的方法集锦
    本文总结了国内用户在访问github网站时可能遇到的加载慢的问题,并提供了解决方法,其中包括修改hosts文件来加速访问。 ... [详细]
  • 本文介绍了Composer依赖管理的重要性及使用方法。对于现代语言而言,包管理器是标配,而Composer作为PHP的包管理器,解决了PEAR的问题,并且使用简单,方便提交自己的包。文章还提到了使用Composer能够避免各种include的问题,避免命名空间冲突,并且能够方便地安装升级扩展包。 ... [详细]
  • 本文介绍了在Ubuntu下制作deb安装包及离线安装包的方法,通过备份/var/cache/apt/archives文件夹中的安装包,并建立包列表及依赖信息文件,添加本地源,更新源列表,可以在没有网络的情况下更新系统。同时提供了命令示例和资源下载链接。 ... [详细]
  • Python已成为全球最受欢迎的编程语言之一,然而Python程序的安全运行存在一定的风险。本文介绍了Python程序安全运行需要满足的三个条件,即系统路径上的每个条目都处于安全的位置、"主脚本"所在的目录始终位于系统路径中、若python命令使用-c和-m选项,调用程序的目录也必须是安全的。同时,文章还提出了一些预防措施,如避免将下载文件夹作为当前工作目录、使用pip所在路径而不是直接使用python命令等。对于初学Python的读者来说,这些内容将有所帮助。 ... [详细]
  • 在本教程中,我们将看到如何使用FLASK制作第一个用于机器学习模型的RESTAPI。我们将从创建机器学习模型开始。然后,我们将看到使用Flask创建AP ... [详细]
author-avatar
霸气的饭桶丶_130
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有