在CVPR 2020上,商汤科技提出的自适应内容生成保留网络ACGPN值得关注,该工作为基于图像的虚拟换装提供了新的思路。并且该工作提出了一种新颖的衡量虚拟换装难度的指标,并将所用数据集划分成了三个难度。相比于主流方法,ACGPN不管是视觉质量上还是量化实验上都有明显优势。
回顾介绍算法之前,我们先来回顾一下基于图像的虚拟换装的历史。传统的虚拟换装基于3D匹配,比如一些换装墨镜,都是生成一个跟踪人物的虚拟贴图。而基于图像的虚拟换装,可以直接生成换好装的人物图片。VITON提供了一个被广泛使用的pipeline,现在大多数方法都遵循类似的框架。利用网络泛化能力的重构学习。
由于同一个模特在同一姿势下穿着不同衣服的数据集较难获得,常见做法是,将人物图片的监督信息减弱,再将与人物身上同样的inshop-clothes(平铺的衣服正面大图)穿在这个处理过后的表达上。将图片的监督信息减弱防止过强的参考使得网络无法泛化到不同的衣服上。也就是提取关键点,模糊形状等来作为一个人物的表达,再重构原来的图像。
经典的衣服无关人物表达(clothing-agnostic person representation)如下图所示。CP-VTON和VITON都采用了这一表达。但是由于提供的先验信息较少,原图的监督指导已经被压缩到了极小值,虽然可以很好的解决原图原有服装对生成的干扰,但也难以让网络学会对复杂细节的建模。基于Thin-Plate Spline (TPS)变换的服装变形模块。
VITON:如图所示,VITON通过先生成衣服mask和原始inshop-clothes的mask来计算TPS变换的参数,将这套参数使用到inshop-clothes上,生成一个变形衣服图。之后会和之前生成的一个coarse人物结果,一起refine出最终结果。整个流程是2-stage模式。
VITON在进行图像对齐的时候,利用Shape Context描述子提取图像特征完成对齐,后来的CP-VTON则把这个部分用卷积神经网络代替。
CP-VTON:CP-VTON基于VITON这个工作,增加了一个“GMM模块”,使用一个网络来回归TPS变换的参数,抛弃了之前利用shape context图像descriptor进行匹配的方法,变成learning-based,奠定了这一模块的一般设计方法。现有方法存在的问题。
我们拿CP-VTON和VITON举例,以上为CP-VTON的文章中报告的图像结果,我们可以看到以下几点问题:1.人物的肢体仍然较为模糊。2.对于下装很难做到清楚的保留。3.衣服的纹理容易产生过度形变。当我们运行两者的官方源代码,得到下图的结果,我们还能发现一个更为本质的问题。这两个方法都无法处理人物肢体与衣服有交叉的情况。一旦手挡在了衣服前,或者姿势较为复杂,往往图片会丢失肢体细节,手指糊成一团。
这给面向真实场景应用的虚拟换装系统的实现,带来极大的隐患与阻力,毕竟用户在使用的时候,姿势是各种各样的。为了解决这一问题,我们使用语义分割来代替原有的衣服无关人物表达。网络设计。该文章提出了一种自适应内容生成保留网络即ACGPN。
此方法利用一种layout aware的方法,自适应的判断哪部分图像是应该保留的,解决了现有方法中,无法对人物肢体与衣服有遮挡的情况的建模,极大程度地降低了生成结果中的伪影以及模糊细节;并通过引入仿射变换的共线性等性质,对变形inshop-clothes中的TPS变换起到约束,使得Logo和花纹不易扭曲变形。ACGPN首先预测参考图像的语义布局,然后根据预测的语义布局自适应地确定内容的生成或保存。
特别地,ACGPN由三个主要模块组成,如图所示。第一个是语义生成模块(Semantic Generation Module (SGM)),它使用身体部位和衣服的语义分割来逐步生成暴露的身体部位的蒙版(即,合成的身体部位蒙版)和变形衣服区域的蒙版。与现有技术相反,提出的SGM以两阶段的方式生成语义蒙版,以首先生成身体部位并逐步合成服装蒙版,这使得参考图像中的原始服装形状对于网络完全不可知。
第二部分是衣服变形模块(Clothes Warping Module (CWM)),该模块用于根据生成的语义布局对衣服进行变形操作。除了基于薄板样条的方法以外,还对变形优化目标引入了二阶差分约束,以使变形过程更加稳定,尤其是对于质地复杂的衣服。
最后,内容融合模块(Content Fusion Module (CFM))整合了来自合成的人体部位蒙版,变形的服装图像和原始人体部位图像的信息,以自适应地确定合成图像中不同人体部位的生成或保存。二阶差分约束。
在Clothes Warping Module里面,该文章使用Spatial Transformation Network (STN)利用薄板样条插值算法(TPS)对目标衣服进行变形,以保留衣服的纹理细节。但是,仅仅使用现有结构不足以保留精确的纹理细节,尤其是面对复杂姿势、复杂衣服花纹的时候,更容易出现不匹配的情况。为了解决这一问题,该文章引入一种二阶差分约束,对TPS变换中的网格点进行控制。
从图中我们可以看出没有该文章的约束,衣服虽然在整体形状上没有差异,但是内部花样会产生较大扭曲。约束的公式为:表示两个点之间的斜率。通过这个约束可以引入仿射变换的两个性质,共线性和对应线段比例相同。从而减少过度的扭曲变形的发生。并且为了防止在求取斜率中会出现的除零错误,使用乘积形式:
数据集:VITON Dataset。VITON在Zalando服装网站(www.zalando.de)搜集的数据集。它包含大约19,000个图像对,每个图像对都包括一个正面的女性图像和一个上衣图像。删除无效的图像对后,它会产生16,253个配对,并进一步分为训练组14,221对和测试组2,032对。实验结果。
实验都是在VITON数据集上进行,并且根据姿势的复杂程度可以分为Easy,Medium,Hard三个等级。Easy:手放两侧,身体向前;Medium:身体会发生扭曲,肢体与身体轻微遮挡;Hard:肢体与身体有严重遮挡。
该文章一共从两个方面证明所提方法,质量性实验:比较虚拟换装结果,该文章提出的方法可以更有效地降低伪影提高真实度,并且能更好的保留衣服的纹理细节,达到照片级别的换装效果;量化指标:通过SSIM和IS以及用户调查等指标,从另外一个方面证明ACGPN算法的优越性。
传送门。ACGPN代码目前已经开源,欢迎各位同学使用和交流。论文地址:https://arxiv.org/abs/2003.05863源码地址:https://github.com/switchablenorms/DeepFashion_Try_On