VITON: An Image-based Virtual Try-on Network虚拟试衣网络论文翻译

    xiaoxiao2023-11-02  157

    引用论文: Han, X., Wu, Z., Wu, Z., Yu, R., Davis, L.S.: Viton: An image-based virtual try-on network. arXiv preprint arXiv:1711.08447 (2017) CVPR 2018 Github:https://github.com/zaoqiweixaio/VITON

    话说想要跑通VITON可真不是件容易的事。。。

    VITON: An Image-based Virtual Try-on Network 一个基于(二维)图像的虚拟试衣网络

    摘要

    我们提出了一个无需任何三维信息的基于二维图像的虚拟试衣网络VITON,该网络用从粗到细的策略将特定衣物无缝地换到人体对应区域上。基于与衣物无关的人体表示,我们的网络首先生成一个目标衣物覆盖到特定姿势的人的特定部位的粗合成图像(此时“穿”到人身上的服装区域是模糊的,丢失了大量细节)。然后,我们用一个refinement network精细的网络对最初模糊的衣服区域进行细节增强。这个refinement network被训练来从目标衣服中学习到尽可能多的细节,并把它运用到试衣人的身上来合成逼真的图像,使试衣图像中的目标衣服自然变形,具有清晰的视觉模式。为此,我们建立了Zalando数据集,我们的模型在该数据集上的表现达到了在基于图像的虚拟试穿任务中最先进state-of-the-art的图像生成模型所具有的效果。

    Introduction介绍 Related Work相关工作

    略 主要说了一下虚拟试衣任务的特点,和其他图像生成任务相比,虚拟试衣对最终合成图像中的衣服细节、变形等要求较高;同时和现有的虚拟试衣技术也进行了对比。该论文最大的亮点之一就是这是基于对二维图像处理得到,而不需要3D图像信息,数据易采集,速度也相应提高,降低了虚拟试衣大规模运用的门槛。

    网络整体结构框图

    整体上采用Coarse-to-fine由粗到精的策略。我对这里Coarse-to-fine的理解大概就是由整体到局部的意思吧:网络先生成粗合成的图像I’,I’中衣服形状和人体姿势是大致对的上的,主要关注整体布局,这是粗的部分;然后再由Refinement Network进行细节处理,恢复上一步中丢失的细节信息,使最后的合成图像逼真自然。

    首先网络的输入由两个部分组成: 1、与衣服无关的人体特征表示Person Representation P:用来保留除衣服外的如面貌、肤色、姿势之类人体特征,以免换完衣服连整个人都变了。 2、目标衣服Target Clothing C

    思考:输入的I中模特穿的衣服和C是什么关系呢?要满足什么关系才符合实际运用呢?

    这两个输入被送到Gc网络中。Gc网络是一个a multi-task encoder-decoder network多任务的编码-解码结构的网络(不知道encoder-decoder network框架的上网搜一下很多资料,或者搜Attention模型)。输出是粗合成图像I’和试衣后衣服对应区域的掩模Clothing Mask M。然后这个掩模M作为目标衣服C变形的依据,通过Shape Context Matching生成Warped Clothing c’变形衣服。

    接着变形衣服c’和粗合成I’作为网络GR的输入。GR就是之前总提到的Refinement Network,它的目的在于,给定变形的衣服和粗合成图像,学习如何使网络最终输出变形自然、图案细节可视的逼真合成图像。

    VITON

    VITON 的目标在于,对给定的参考图像(模特)I和目标衣服c,生成合成图像I霸;I霸中c被自然地“穿”到参考图像I中模特对应的区域上,而模特的姿势和其他身体部位特征被保留。最直接的方法是用这样的训练集:同一个模特(姿势和人体特征相同)穿着不同衣服的多张图片和对应的这些衣服的产品图。但是这种数据集是很难大规模得到的。 在实际虚拟试衣场景中,在测试时只有参考图像和目标产品的图像是可以得到的。因此,我们把这种设定同样运用到训练集中来,所以输入的参考图像I中模特穿的衣服就是目标衣服c,这样的数据集是易得的(就像某宝上卖衣服,不仅给产品图还要给卖家秀)。那么现在的重点就是,给定c和模特人体信息,怎么训练一个网络->不仅可以生成合成图像,更重要的是要在测试中能够泛化,用任意所需的服装项目合成感知上令人信服的图像。

    Person Representation 人体特征表示

    Pose heatmap 姿势热图

    人体姿势的多样性导致了衣服不同程度的变形,因此我们使用最先进的姿势估计器明确地建模姿势信息。(用的是CVPR2017的人体姿势估计Realtime Multi-Person Pose Estimation)人体姿势估计包含了18个关键点,为了使Represent表示的各个部分可以空间堆叠,每个关键点被转换成热图heatmap,在关键点附近有一个11×11的邻居,在其他地方填充了1和0,然后把这些热图堆叠成一个18通道的姿势热图。

    Human body representation 人体身体部位表示

    衣服的外形很大程度上取决于人的形状(高矮胖瘦),因此如何将目标衣服进行变形取决于不同的身体部位(如手臂,躯干)和身体形态。一个先进的人体解析的方法(LIP-SSL,个人感觉LIP-SSP比较难跑,caffe环境配置复杂,建议跑它的另一个版本JPPNet,不过要是想得到.mat要自己改一下输出)输出人体分割图(.mat格式,不同分割区域标记了不同编号)。然后我们把这个分割图转换成一个单通道的二进制掩模,其中1代表身体部分,0表示其他部位。这个二进制掩模呗下采样成一个低分辨率的图(16*12),当身体形状和目标衣服混淆时,避免伪影。

    Face and hair segment 脸部、头发的分割

    为了维持人本身的特点,我们在人体表示中融入了身体特征,如脸、肤色、头发之类。我们用Human body representation里一样的人体解析器分离出人脸和头发部分的RGB图,作为新合成图像的身份信息。

    最后,把以上得到的三个部分转换到统一分辨率,然后堆叠形成与衣物无关的人体表示P(256,192,22),示意图如下。P包含了丰富的人体信息,convNet就是基于这些信息学习它们之间的关系,比以往的person Presentation都精细。

    Multi-task Encoder-Decoder Generator -> Gc

    输入:Person Representation P和目标衣服Target Clothing C 输出:粗合成I’和对应区域掩模M Gc:这里用到的编码解码框架是一种包含连接跳跃skip connections的U-net网络结构。 设Gc为编码解码器估计的方程,它将P和C组合作为输入并输出四通道(I‘和M)结果。我们希望得到一个生成器,使得粗合成图I’尽可能接近参考图I,掩模M尽可能接近从参考图I模特上预测得到的伪ground truth掩模M0。一个简单的方法就是用L1损失,使当输出目标是M0这样的二进制掩模时,它会产生不错的结果。但是如果输出要是RGB图像的话,L1 Loss就会使输出图像变模糊。我们还引入了a perceptual loss感知损失。下式是感知损失的和以及LI Loss加和的结果。 网络用ImageNet数据集训练的VGG19权重初始化。超参数lamda_i控制第i层的贡献。第一个Stage的Gc没有学习细节(L1 Loss导致),所以得到的是粗合成图。

    Refinement Network -> GR

    是为了从目标衣服产品图中学习对应模糊图像区域的细节并恢复。

    Warped clothing item 衣服变形

    为了运用目标衣服产品图中的纹理细节,要先对衣服进行变形。

    a thin plate spline (TPS) transformation

    最新回复(0)