论文阅读:CP-VITON—基于图像的特征保留虚拟试衣网络

2023-11-10 21:22

本文主要是介绍论文阅读:CP-VITON—基于图像的特征保留虚拟试衣网络,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

CP-VITON:基于图像的特征保留虚拟试衣网络

    • 1、引言
    • 2、图像合成相关工作
    • 3、特性保留虚拟试衣网络(Characteristic-Preserving Virtual Try-On Network)
      • 3.1人物表示(Person Representation)
      • 3.2几何匹配模块(Geometric Matching Module)
      • 3.3试衣模块(Try-on Module)

原文链接:https://arxiv.org/pdf/1807.07688.pdf

1、引言

虚拟试衣使得用户能够在不用进行物理穿戴的情况下体验穿衣效果,因此,用户能够迅速的确定是否喜欢一件衣服然后决定是否进行购买。传统的方法是使用计算机图形学的方法进行3D建模,这种方法能够进行精确地几何变换和物理约束,但是需要大量人工和昂贵的设备去收集进行3D建模的信息,也会消耗大量的计算。
基于图像的虚拟试穿系统,将虚拟试穿转化为条件图像生成问题,提供了一种更经济的方法,也实现了比较好的结果。
给定两张图片:一张是人,另一张是商店里的衣服,上述方法的目的是合成一张满足以下要求的图像:

  1. 人穿着新的衣服
  2. 原始的身体和姿态都得到了保留
  3. 衣服被填充到了人体上,并且能够实现保真、平滑、无缝
  4. 衣服的特征,比如质地,logo,文字都被良好的保留,并且没有醒目的变形和缺陷。

条件图像生成技术在当前取得了很多研究进展,使得其自然而然地成为解决上述问题的一种方法。除了pixel-to-pixel losses和perceptual loss,adversarial losses也被用来减轻图片模糊的问题,但是仍然会丢失重要的细节。此外,这些方法只能应对输入-输出对大概对齐的案例,图像有较大变换时会产生失败。这些限制阻碍了其在虚拟试穿的应用。其中一个原因是在面对大型变换时较差的细节保留能力,比如非对齐的图片。在虚拟试穿里条件图像生成最好的实践是一个二阶的pipeline VITON,但是它的表现仍与预期效果差距较大。需要强调的是,我们认为主要原因在于,为了对齐衣物和身体形状使用了的不完美的形状-背景匹配,还有较差的的外观融合策略。
为了解决上述挑战,提出了一种新的方法。不同于手工进行形状背景匹配,通过使用一个裁剪的卷积神经网络,提出了一种可学习的thin-plate spline变换,为了实现衣物与目标人体良好的对其。网络的参数通过成对的图像(商店衣服和一个试穿者)训练,不需要任何显式的兴趣点对应。第二,模型将对齐的衣服和与衣服无关的描述性人物表示作为输入,并生成一个和原始人物姿态一致的图像,以及一个合成掩膜(mask),该掩膜表示合成图像中保留的对齐的衣服的细节。掩膜尝试利用对齐衣物中的信息,平衡合成图像的平滑度。广泛的实验表明提出的模型能够解决大形状和姿态变换,在VITON数据集上实现最先进的结果。

2、图像合成相关工作

cGANs(conditional GANs)在image-to-image转换方面取得了很好地结果, image-to-image的目标是将衣服图片从一个域转化到另一个域。与经常导致图像模糊的L1/L2损失相比,对抗性损失对image-to-image任务来说是一个流行的选择。最近的研究表明,对抗性损失对于高分辨率图像生成来说可能是不稳定的。我们发现对抗性损失对于我们的模型来说几乎没有改进。在image-to-image任务中一个隐含的假设是输入与输出图像基本上是对齐的,他们有相同的隐含的结构。然而,大多数方法在条件图像和输出图像之间有较强的空间畸变时都会产生问题。大多数条件输入非对齐图像的image-to-image转换任务采用coarse-to-fine的方法来增强结果的质量。VITON计算商店衣物和预测前景掩膜之间的shape context thin-plate spline(TPS) transofrmation ,非常耗时,容易出错。我们使用CNN预测TPS实现这个功能。

3、特性保留虚拟试衣网络(Characteristic-Preserving Virtual Try-On Network)

3.1人物表示(Person Representation)

原始的衣服不可知(cloth-agnostic)人物表示 p p p目的是丢弃原始衣服 c i c_i ci的效果,比如颜色、质地、形状等,与此同时尽可能保留输入任务 I i I_i Ii的信息,包括人物的脸,头发,身体形状和姿态。 p p p包含三个部分:
——姿态热度图(Pose heatmap):一个18通道的特征图,每个通道对应了一个人体姿态的关键点,用 11 × 11 11\times11 11×11的白色矩形表示
——身体形状(Body shape):一个1通道的模糊二值掩码特征图,粗略的覆盖了人体的不同部位
——保留区域(Reserved regions):一个包含了人体保留区域的RGB图像,为了维持人的特征,包括脸和头发
在这里插入图片描述在这里插入图片描述
图片名称

3.2几何匹配模块(Geometric Matching Module)

在这里插入图片描述
设计了一个几何匹配模块Geometric Matching Module (GMM)将目标衣服 c c c变换成变形后的衣服 c ^ \hat c c^ c ^ \hat c c^能粗略的与输入任务特征 p p p对齐。GMM模块由四个部分组成:
(1)两个分别用于提取 p p p c c c高层次特征的卷积网络
(2)一个相关层,用于将两个特征结合成一个张量作为回归网络的输入
(3)回归网络,用于预测空间变换参数 θ \theta θ
(4)Thin-Plate Spline (TPS)变换模块,用于将输入衣服 c c c通过参数 θ \theta θ变换为变形后的衣服 c ^ \hat c c^,即 c ^ = T θ ( c ) \hat c=T_\theta(c) c^=Tθ(c)
整个流程是端到端可学习的,使用 ( p , c , c t ) (p,c,c_t) (p,c,ct)进行训练,使用的损失是 c ^ \hat c c^ c t c_t ct之间的逐像素的 L 1 L_1 L1损失,其中 c t c_t ct是目标人物 I t I_t It身穿的衣服。
Loss: L G M M ( θ ) = ∣ ∣ c ^ − c t ∣ ∣ 1 = ∣ ∣ T θ ( c ) − c t ∣ ∣ 1 \mathcal L_{GMM}(\theta) = ||\hat{c} - c_t||_1 = ||T_{\theta}(c) - c_t||_1 LGMM(θ)=c^ct1=Tθ(c)ct1
图片名称

3.3试衣模块(Try-on Module)

在这里插入图片描述
既然变形后的衣服 c ^ \hat c c^已经大概和人体形状对齐,接下来的目标就是将它融合到目标人物上,合成最终试衣的结果。
一种直接的想法是直接将 c ^ \hat c c^贴到人物上,好处是衣服的所有细节都被保留,但是会导致不自然的边界。另一种方法是将 c ^ \hat c c^送入一个编解码网络,比如UNets,想以此来生成平滑无缝的图像。但是,想要完美的将衣服与目标人体对齐是不可能的,由于缺少明确的空间变换能力,即使是微小的不对齐也会使UNet的输出模糊。
TOM结合了以上两种方法。将人体特征表示 p p p和变形后的衣服 c ^ \hat c c^使用UNet同时生成人物图像 I r I_r Ir和一个掩码 M M M。然后使用掩码 M M M c ^ \hat c c^ I r I_r Ir进行融合生成最终的试衣结果 I o I_o Io
I o = M ⊙ c ^ + ( 1 − M ) ⊙ I r I_o = M\odot \hat{c} + (1-M)\odot I_r Io=Mc^+(1M)Ir ⊙ \odot 代表的是点乘
在训练阶段,给定三元样本 ( p , c , I t ) (p,c,I_t) (p,c,It),TOM的目标是最小化网络输出 I o I_o Io与ground truth I t I_t It之间的差距。这里使用的是在图像生成问题中被广泛采用的方法:结合 L 1 L_1 L1损失与VGG perceptual损失,VGG perceptual损失通过如下方法定义:
L V G G ( I o , I t ) = Σ i = 1 5 λ i ∣ ∣ ϕ i ( I o ) − ϕ i ( I t ) ∣ ∣ 1 \mathcal L_{VGG}(I_o,I_t)=\Sigma_{i=1}^5\lambda_i||\phi_i(I_o)-\phi_i(I_t)||_1 LVGG(Io,It)=Σi=15λiϕi(Io)ϕi(It)1
其中 ϕ i ( I ) \phi_i(I) ϕi(I)指的是视觉感知网络 ϕ \phi ϕ(其实就是在ImageNet上预训练过的VGG19)关于输入图像 I I I的第 i i i层特征图。
为了实现衣物特征保留的目的,在掩码 M M M上应用 L 1 L_1 L1正则化 ∣ ∣ 1 − M ∣ ∣ 1 ||1-M||_1 1M1,使得变形后的衣服 c ^ \hat c c^能够保留尽可能多的特征。TOM的总体损失如下:
L T O M = λ L 1 ∣ ∣ I o − I t ∣ ∣ 1 + λ v g g L V G G ( I ^ , I ) + λ m a s k ∣ ∣ 1 − M ∣ ∣ 1 \mathcal L_{TOM} = \lambda_{L_1}||I_o-I_t||_1 + \lambda_{vgg}\mathcal L_{VGG} (\hat I,I)+\lambda_{mask}||1-M||_1 LTOM=λL1IoIt1+λvggLVGG(I^,I)+λmask1M1

TOM结果

这篇关于论文阅读:CP-VITON—基于图像的特征保留虚拟试衣网络的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/385339

相关文章

SpringBoot3中使用虚拟线程的完整步骤

《SpringBoot3中使用虚拟线程的完整步骤》在SpringBoot3中使用Java21+的虚拟线程(VirtualThreads)可以显著提升I/O密集型应用的并发能力,这篇文章为大家介绍了详细... 目录1. 环境准备2. 配置虚拟线程方式一:全局启用虚拟线程(Tomcat/Jetty)方式二:异步

Python中OpenCV与Matplotlib的图像操作入门指南

《Python中OpenCV与Matplotlib的图像操作入门指南》:本文主要介绍Python中OpenCV与Matplotlib的图像操作指南,本文通过实例代码给大家介绍的非常详细,对大家的学... 目录一、环境准备二、图像的基本操作1. 图像读取、显示与保存 使用OpenCV操作2. 像素级操作3.

C/C++的OpenCV 进行图像梯度提取的几种实现

《C/C++的OpenCV进行图像梯度提取的几种实现》本文主要介绍了C/C++的OpenCV进行图像梯度提取的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的... 目录预www.chinasem.cn备知识1. 图像加载与预处理2. Sobel 算子计算 X 和 Y

c/c++的opencv图像金字塔缩放实现

《c/c++的opencv图像金字塔缩放实现》本文主要介绍了c/c++的opencv图像金字塔缩放实现,通过对原始图像进行连续的下采样或上采样操作,生成一系列不同分辨率的图像,具有一定的参考价值,感兴... 目录图像金字塔简介图像下采样 (cv::pyrDown)图像上采样 (cv::pyrUp)C++ O

Linux网络配置之网桥和虚拟网络的配置指南

《Linux网络配置之网桥和虚拟网络的配置指南》这篇文章主要为大家详细介绍了Linux中配置网桥和虚拟网络的相关方法,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 一、网桥的配置在linux系统中配置一个新的网桥主要涉及以下几个步骤:1.为yum仓库做准备,安装组件epel-re

python如何下载网络文件到本地指定文件夹

《python如何下载网络文件到本地指定文件夹》这篇文章主要为大家详细介绍了python如何实现下载网络文件到本地指定文件夹,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下...  在python中下载文件到本地指定文件夹可以通过以下步骤实现,使用requests库处理HTTP请求,并结合o

Linux高并发场景下的网络参数调优实战指南

《Linux高并发场景下的网络参数调优实战指南》在高并发网络服务场景中,Linux内核的默认网络参数往往无法满足需求,导致性能瓶颈、连接超时甚至服务崩溃,本文基于真实案例分析,从参数解读、问题诊断到优... 目录一、问题背景:当并发连接遇上性能瓶颈1.1 案例环境1.2 初始参数分析二、深度诊断:连接状态与

Python+wxPython构建图像编辑器

《Python+wxPython构建图像编辑器》图像编辑应用是学习GUI编程和图像处理的绝佳项目,本教程中,我们将使用wxPython,一个跨平台的PythonGUI工具包,构建一个简单的... 目录引言环境设置创建主窗口加载和显示图像实现绘制工具矩形绘制箭头绘制文字绘制临时绘制处理缩放和旋转缩放旋转保存编

python+OpenCV反投影图像的实现示例详解

《python+OpenCV反投影图像的实现示例详解》:本文主要介绍python+OpenCV反投影图像的实现示例详解,本文通过实例代码图文并茂的形式给大家介绍的非常详细,感兴趣的朋友一起看看吧... 目录一、前言二、什么是反投影图像三、反投影图像的概念四、反向投影的工作原理一、利用反向投影backproj

Qt实现网络数据解析的方法总结

《Qt实现网络数据解析的方法总结》在Qt中解析网络数据通常涉及接收原始字节流,并将其转换为有意义的应用层数据,这篇文章为大家介绍了详细步骤和示例,感兴趣的小伙伴可以了解下... 目录1. 网络数据接收2. 缓冲区管理(处理粘包/拆包)3. 常见数据格式解析3.1 jsON解析3.2 XML解析3.3 自定义