基于图像的虚拟换装:Morphing architectures for pose-based image generation of people in clothing

article/2025/9/4 19:18:50

在这里插入图片描述
项目的重点是变形操作的特征化与实现,解决卷积神经网络中的信息失准问题。我们将所研究的方法应用到一个换衣服的任务中,将其建模为一个条件图像生成问题。尽管对抗性方法在生成性任务中很流行,但我们将此项目的范围限制为监督方法,因此有助于变形操作的学习。尽管在三维建模的深度学习领域取得了令人兴奋的进展,但我们将这个项目的范围限制在二维图像上。

图像到图像的转换

本项目特别感兴趣的是图像到图像的转换任务,其中包含特定情况下的条件图像修复和换衣任务。

图像到图像的转换时是一个广泛的术语,包含了许多视觉问题,其中输入源和期望输出都是图像的形式。文献中有一些值得注意的例子:风格迁移、图像修复、条件图像生成。语义分割也可以分为图像到图像的转换任务,因为输出与输入图像共享相同的空间结构,就像自然图像和医学图像一样。

编解码体系结构

编码器-解码器体系结构通常用于这些任务。实际上,这些网络可以分为两个阶段。第一部分,即编码器,接收原始图像作为输入,并通过一系列卷积层和池化层,提取不同尺度的特征,并将信息压缩为低维表示。第二部分,解码器,对这种低维表示进行操作,并使用反卷积或上采样步骤生成最终图像。仅使用卷积,而不是包括完全连接的层,允许这种结构处理任何大小的图像,并产生总是与输入的空间分辨率相同匹配的输出。

在这里插入图片描述

这类体系结构的主要缺点(通常被称为信息瓶颈)与它的沙漏形状有关。在接近网络输入端时,特征体积更宽,且应更低(按通道),当通过编码器时,特征体积变得更窄和更深。然后在解码器内部进行逆过程,当特征体积接近输出层时,特征体积变得更宽和更浅。在文献中,已经证明了每个尺度上的特征都有助于视觉相关任务。虽然从理论上讲,在网络的瓶颈出压缩所有必要的信息时可能的,但它需要很深的卷积层。由于参数数量的增加和长时间的反向传播依赖,这些反过来会严重减慢训练过程。

U-Net

Ronneberger、Fischer和Bro小提出了一个巧妙的解决方案,即U-Net架构和skip连接的概念。此名称表示编码器的每一层和解码器的相应层之间的快捷连接。在每个尺度上,提取的特征能够直接影响同一尺度下的重建过程。此外,由于来自解码器的梯度可以通过更直接的路径传播会解码器,因此这种连接模式改善了非常深层网络的训练过程。在最初的论文中,使用U-Net实现了医学图像分割的最新精度,随后,同样的概念被成功的应用到其他一些相似的应用中。
在这里插入图片描述

密集连接模式

U-Nets展示了远程连接,如何改善网络内部的信息流,并在正确的位置提供正确的信息。在较短的范围内,还可以设计连接模式,以鼓励特征重用并提高参数效率。

Huang,Liu和weinberger在以相同尺度运行的卷积层支架引入了密集连接方案。在这些层组或密集块中,每一层的输出连接到其输入并反馈到下一层,以最大化特征重用并改进信息流。使用DenseNet,作者可以在广泛采用的基准上改善分类性能,同时还可以减少参数数量和推理时间。
在这里插入图片描述
Jegou等将密集块的概念引入到完全卷积的网络和U-Net架构中,他们的FCDenseNet架构改进了语义分割的最新技术,同时减少了具有相似层数的参数w.r.t网络的数量。
在这里插入图片描述

密集块的特征有两个参数:层数 l l l和生长速率 k k k,密集块序列的每一层都会应用归一化、ReLU、卷积和Dropout。所有卷积运算都使用大小为3x3的 k k k个卷积核,对称填充为1,以在块内保持相同的高度和宽度。

块的第一层输入 x ∈ R C × H × W x \in R^{C \times H \times W} xRC×H×W,生成 k k k个特征图。随后每一层的输入是前一层的输入和输出的连接,输出 k k k个特征图。块的输出为 l l l层个输出的连接,从而得到与输入具有相同空间分辨率,通道数为 k ⋅ l k \cdot l kl的特征图簇。

在编码路径和网络瓶颈中,每个块的输入也连接到输出,得到 ( k ⋅ l + c ) × H × W (k \cdot l + c) \times H \times W (kl+c)×H×W。而对于编码路径的块,仅将其内部层的输出连接起来以形成输入,从而产生 k ⋅ l k \cdot l kl个通道。

transition down(TD)和transition up(TU)层分别用于编码和解码路径中特征图尺度的缩小和放大。铁门通过池化和转置卷积运算来实现。
在这里插入图片描述

Pix2pix

由于其灵活性,U-Nets的应用领域不仅限于语义分割,而且可以轻松的适应图像到图像的转换任务。

Isola等人使用带有跳过连接的CNN作为生成对抗网络的生成器,并将其pix2pix架构应用于广泛的图像到图像的生成任务。

通过他们的工作,作者建立了用于生成条件图像的框架,其中将图像用作输出图像的调节源。尤其是,他们将地图制图转换为卫星图像,将草图转换为图像,将语义图转换为街道和城市场景等,反之亦然。
在这里插入图片描述

信息对齐问题

U-Nets,以及通常具有跳过连接的任何体系结构,都可以与多个源一起使用,以构建更复杂的系统。只要所有输入共享一个共同的空间表示,可以通过简单的通道连接串联多个通道源,并利用网络中的卷积元素来提取他们之间的关系。

例如,可以将常规相机获取的RGB图像信息与光谱的其他波段融合在一起,从俯瞰图中识别物体。或者堆叠以不同扫描方式获得的MRI图像以改善3D脑分割。

这些示例依赖于要连接的特征的空间对齐。如果不同源之间没有正确对齐,则跳过连接对网络无益。未对齐的源问题有两个方面,不仅在编码器中而且在跳过连接中都出现。

  • 编码器的未对准问题
    CNN的第一层有相当小的感受野,即相对于整个图像,用于计算神经元输出的图像块相对较小。显然,对于具有单一信息源的 应用而言这不是问题:前几层将在一个小范围内提取特征,然后再由更下一层进行聚合,以产生更多的全局特征。

    但是,当未对齐的源叠加在一起时,第一层无法聚合所有输入通道的特征,从而降低了网络的表示能力。在这种情况下,只有较深的层具有足够全局性的感受野,可以利用不同空间位置的特征。
    在这里插入图片描述

  • 跳过连接的未对齐问题
    前述问题会影响其输入未对齐的所有CNN。在U-Nets和类似体系结构的特定情况下,在解码器中会再次出现相同的问题。为了更好的理解未对准如何影响U-Net的第二阶段,让我们考虑编码器和解码器中相应位置的两层。在这两者之间,信息只能通过两条路径流动:第一条路径是穿过网络的较低层,第二条路径是跳过连接。

    在这里插入图片描述
    穿过较深层的路径是编码器功能的复杂非线性函数。由于池化、卷积和上采样层,该功能可以全局作用于输入的所有(或部分)空间位置。 相反,跳过连接实现了一个身份映射,它预先服务于特征激活和它们的空间位置。
    在解码器端,这两个输入将通过卷积结合在一起,卷积同样在本地近邻上运行。为了使复制的信息有意义,必须将其放置在需要的位置,即必须在跳过连接之前将其与目标图像对齐。如果不是这样,解码器将无法利用跳过连接的特性,并且将被迫通过瓶颈传递所有所需的信息,从而有效的退化为编码器-解码器体系结构。

虚拟试衣方法

独立研究小组最近已经以不同的观点和方法来考虑换衣服或虚拟试穿。CAGAN提出了一种有条件的图像到图像转换的无监督方法,将pix2pix和CycleGAN的思想融合在一起。VITON将问题定义为一个图像修复任务,并以有监督的方式训练了一个两阶段网络。

CAGAN

在CAGAN中,衣服交换问题被构造为图像分析任务,并使用具有周期一致性的生成对抗网络解决。
在这里插入图片描述
在其设置中,为生成器G提供了人类图像 h i h_i hi和两件衣服商品图像, a i a_i ai是该模特最初穿的衣服, a j a_j aj是要交换的新衣服。这些图像是根据人体模型相应的真实分布 p h p_h ph和衣服相应的真实分布 p a p_a pa绘制的,有两个匹配的下标,表示同一物品的存在。

生成器的输出是图像 h ~ j ∼ p G \tilde h_j \sim p_G h~jpG,描述初始化人体模型穿着 a j a_j aj衣服:
h ^ j = G ( h i , a i , a j , z ) w i t h z ∼ N ( 0 , 1 ) \hat h_j = G(h_i, a_i, a_j, z) with z \sim N(0, 1) h^j=G(hi,ai,aj,z)withzN(0,1)
请注意,推理时需要 a i a_i ai,渲染网络不适合在家尝试的场景,因为客户所穿的衣服通常是未知的。尽管如此,这项工作仍与受控业务环境中的内容创建应用有关。

因为真实图像 h ~ j \tilde h_j h~j不存在于训练集中,因此不可能用监督信号训练G。因此,训练条件判别器 D ( h , a ) D(h,a) D(h,a)来评估成对的人体模型穿着衣服的图片。
在这里插入图片描述
在联合训练的过程中,两个网络相互受益:来自判别器的梯度引导生成器生成质量更好的图像,而新生成的图像构成判别器的负样本。当找到一个平衡点时,该过程终止,G生成的图像具有足够的照片级真实感,从而使判别器无法从假对中分辨出真实对。

除了对抗性网络之外,CAGAN还引入了一个概念,直观的说,一个衣服交换网络应该产生循环一致的输出,也就是说, h ~ j \tilde h_j h~j换上 a i a_i ai应该产生与起始图像相类似的结果。
在这里插入图片描述
作者设法克服与对抗训练相关的困难,并以 128 × 96 128\times96 128×96的像素分辨率生成图像。该网络在简单的衣服上表现良好,将条件图像中的所有形状和颜色转换到目标人的衣服上。但是,高频细节(例如纹理、字母和徽标)不能在目标人身体上正确重建。
在这里插入图片描述
像pix2pix中一样,CAGAN中的生成器是通过U-Net实现的,并且由于存在的跳过连接,它甚至还可以保留以最小比例显示的细节。但是,衣服和人体模型之间的初始未对准会抑制跳转的连接功能,从而阻止编码器特征到达解码器中的正确位置。由于只剩下通过瓶颈的映射作为可行的信息路径,网络被迫忽略衣服的高级特征,导致细节的丢失。

VITON

在VITON中,虚拟试穿问题定义为图像修复任务。具体来说,他们研究如何从衣服无关的人体模型表示和条件衣服的扭曲图像重建人体模型图像的方法。通过这样做,他们能够利用衣服和人体模型的成对图像进行监督训练,然后将学习到的系统转移到未配对的源上工作。
在这里插入图片描述
VITON框架分为两个阶段:粗略的编码器-解码器阶段和细化阶段,两个阶段通过不可微分的扭曲分量分隔。第一阶段接收每个人的衣服不可知的表示和条件衣服的目录图像,并产生目标图像的粗略估计。服装不可知表示包含了人体的姿势信息(骨架关键点)、体形信息(分割蒙版)以及人脸和头发的视觉特征。可以预见的是,第一个网络无法重建服装的细粒度细节,但它的粗输出可以有效的用作细化阶段的输入。作为辅助输出,网络会生成穿在人体模型上的衣服分割蒙版,该蒙版用于在细化阶段之前将目录图像与人的身体对齐。

在两个阶段之间,扭曲模块负责将衣服图像变形到人体模型的身体上,以便在进入细化阶段时两个源在空间上对齐。使用目录图像和粗糙图像的分割蒙版上的薄板样本(TPS)转换来计算变形,并使用形状上下文描述符进行匹配。在接收到粗糙的结果和变形的衣服后,细化网络能够通过将高频细节直接从变形的衣服复杂到中间结果上来生成最终图像。

这些图像以 256 × 192 256\times192 256×192的分辨率生成,形状正确,条件服装的细节看起来清晰,位置正确。一些微小的瑕疵是显而易见的,例如,下半身衣服变色,领口上有T恤标签。这些作者最近在扩展版的论文中使用更精确的分割技术解决了这些问题。
在这里插入图片描述
用于计算变形的方法不需要有关它要匹配的两个形状的特定信息,例如匹配特征或关键点,但仅匹配其细分蒙版。一方面,应理解形状上下文匹配的一般性。另一方面,我们应该注意2D轮廓表示通常不足以表示物品在穿着时要经受的复杂3D变换。从论文中报告的失败案例来看,需要更详细的表示方法来对衣服的复杂性来多衣服的复杂变形进行建模。事实上,由于自遮挡和暴露,一个物体的某些部分可以被覆盖,而其他部分可以出现,同时保持相同的2D轮廓。

在这里插入图片描述

比较

在VITON中获得的结果比从CAGAN获得的结果要详细的多,更不用说图像分辨率加倍了。质量的提高是架构和领域选择的结果,这些选择在方法的通用性与结果质量之间进行权衡。为了公平的进行比较并进一步改进他们的工作,应注意以下差异。

  • 解决方案的一般性
    CAGAN采用了一种常用的图像到图像的转换框架,试图对特定的应用上下文做出尽可能少的假设,特别是仅强制执行循环一致性约束。另一方面,VITON通过特定领域的知识(即姿势关键点和身体形状信息)丰富了输入源,从而不可避免的减少了其方法的适用范围。在此项目中,重点是虚拟试穿应用,我们将遵循VITON策略,充分利用我们对数据及其底层功能的了解。
  • 数据集可变性
    在数据集方面,CAGAN使用了15000个图像对,分别描绘了男性和女性模特穿着的各种套头衫和连帽衫。VITON数据集的大小相似,精确到16253对,但由于只关注女性上妆,因此可变性有限。在此项目中,我们将使用更大的数据集,其中包括男女模特和各种上半身服装的模型,包括T恤衫、帽衫、套头衫、拉链、开衫等。
  • 对齐和训练
    CAGAN采用对抗性方法进行训练,没有标记的真实情况数据。当然,使用它们的解决方案更通用,但由于信息梯度较小和生成器-判别器不稳定而影响了训练过程。同样,如前所述,U-Net生成器遭受输入源未对准的困扰。在VITON中,在体系结构内部引入薄板样条曲线变形极大的改善了小细节上的性能,但是,由于细化阶段的梯度无法传播到粗略阶段,因此网络端到端不可区分。这两个阶段作为独立的网络进行训练,首先是粗网络,然后是细化网络。在此项目中,我们探索了可进行端到端训练的差异化变形解决方案。此外,我们利用服装的关键点来提供比单独的轮廓更强大的学习信号。

CNN中的几何运算

信息对齐问题最近受到了科学界的关注。一方面,在定义在缩放和旋转下不变或等变的卷积运算方面存在不断的努力。另一方面,研究人员正在网络本身中引入新的机制,所以它可以主动对其输入或中间特征图执行转换。在虚拟试穿的情况下,我们考虑具有很高兴趣的主动变形操作。正如VITON所述,实际上,使服装的姿势与人体模型的姿势保持一致非常有效,并且我们相信允许网络主动执行转换会带来更好的结果。

空间变换网络

在CNN中,几种机制可以共同为输入的变化建立鲁棒性:卷积层在平移下提供等方差,池化层有助于建立局部平移不变性,非线性激活可以解释旋转、比例、颜色、亮度、变形等的变化。考虑到它们都不是单独设计用来明确说明这些变化的,所有这些机制都可以很好的协同工作。

卷积神经网络中使用的池化操作是一个很大的错误,它运行良好的事实是一场灾难。——Geoffrey Hinton

Jaderberg,Simonyan, Zisserman等人利用一个可学习的模型,即空间变换,在网络内部引入了显示的空间变换。接收到特征量作为输入后,这些模块可以根据其特征动态计算转换并输出转换结果,从而实现类似于自我注意的机制。直观的讲,这样的模块通过将特征量与标准姿势对齐来工作,该标准姿势更适合于后续网络层的进一步特征提取。这些变换块重量轻,可以完全插入网络中的任何位置,因为它们执行的操作是完全不同的。通过在常规CNN中包含一个或多个这些模块,作者在几种图像分类基准上获得了最新的结果,例如扭曲的MNIST数字和街景门牌号码。

空间变换由三个元素组成:定位网络、网格生成器和差分图像采样器。

在这里插入图片描述

  • 定位网络
    一个可训练的模块,可在输入特征量U上运行,例如CNN,并输出转换的参数A,例如仿射的6个参数。
  • 网格生成器
    没有权重的模块,其唯一的任务是根据从定位网络接收的参数生成采样网格G。采样网格应具有与输出特征V相同的空间分辨率,并在每个位置都包含应采样U的坐标,以产生相应的V值。
  • 差分图像采样器
    在最后一个模块中,实际的转换发生了:一个采样核用于在G指定的位置对U进行采样以生成V。通过使用可微核,例如双线性插值,可以定义V相对于采样网格、定位网络和输入特征映射以及网络的前几层的梯度。在时尚环境中,空间变换机制已被用于盖上图像上的时尚界标的定位,从而勾勒出各种姿势和比例,包括背景杂乱。
    在这里插入图片描述

可变形的跳过连接

Siarohin等人基于姿势的人类图像生成的研究,与我们的项目有很多相似之处。在他们的工作中,给定人物和目标姿势的图像,他们合成了包含新颖姿势中的人物的图像。观察到人像和目标姿势在管线开始时未在空间上对齐,因此他们将编码器分成两个流,以分别处理两个源。然后,将显式变形操作应用于通过跳过连接传播的人的特征量,以将它们与姿势特征量对齐,然后再将其合并到解码器中。在U-Net的每个比例尺上,跳过连接中使用的转换时相同的,因为比例尺的变化不应影响编码器和解码器之间的姿势未对准。这些可变形的跳过连接起着将信息从编码器“隔离”到解码器所需信息的重要作用。
在这里插入图片描述
为了简化训练过程,变换不需要学习,但是使用特定领域的知识来人工计算组成人体骨架的关节。首先,使用骨骼关键点识别刚性变换在一起的人体骨骼的十个子部分,大致匹配人体解剖结构,例如:躯干、头部、上下臂等。然后,将每个零件封闭在一个矩形区域中,该矩形区域的形状被静态固定以封闭相应的接头。然后,计算源姿势和目标姿势上的匹配矩形之间的仿射变换就很简单了。

在可变形跳过连接的编码器侧,特征量按以下方式处理。每个矩形区域都用于创建变量的蒙版,然后使用与该区域相对应的仿射变换对它进行变形。生成的变量,加上初始未转换的变量,通过池化的方式进行聚合,最后移到解码器端。
在这里插入图片描述

数据集

原始数据包含在目录中找到的的服装图片,以及穿着该服装的专业模特图像对。在这些图像的基础上,我们用感兴趣的服装的分割蒙版和服装、模特图像有意义位置的关键点来丰富图像数据集。

可用数据

在时装界多年的成功活动中,Zalando收集了大量的图像数据。无论是面向科学界开放还是通过网络抓取收集,其丰富的收集被证明对科学研究有用。更一般而言,诸如DeepFashion或Fashionista之类的时装数据集可实现诸如语义分割、时装商品识别、人体姿态估计、服装和纹理生成之类的任务。

Zalando提供的用于此项目的数据集,包括大约42000个高分辨率的人体模型以及相应的穿在模特上身的服装图像对。换衣服的第一步是收集模型和服装的分割和关键点数据。
在这里插入图片描述

骨架特征

  • 关键点提取
    通过关节点位置来增强人的RGB表示对于视觉表示和理解非常有效。在许多成功的研究项目中,骨骼关键定已被用作附加输入或次要任务。例如人类图像的生成和密集姿势估计。正如在VITON的讨论中所指出的那样,仅使用源和目标轮廓将服装的2D表示变形为不同的姿势是一个严重不足的问题。我们计划通过使用更强的对齐信号来减少转换的歧义,该对齐信号可利用人体模型和服装图像上的关键点匹配。通过标准且常用的人体分析器,我们能够为数据集中的大多数图像提取骨骼关键点。骨骼和面部提取的18个关键点中,9个感兴趣位置是手腕、肘部、肩部、臀部和颈部。
    在这里插入图片描述
    不幸的是,当涉及到时尚服装,没有任何现成的关键点提取器可以与人类骨骼相提并论。Liu等人收集了时尚图像和标注数据集,为其训练了解析器,然后对约束较少的数据集进行了类似的研究。但是,我们认为使用与人体模型的关键点具有相同语义含义的关键点注释服装商品非常重要。如果不是这种情况,我们将无法基于关键点的正确对齐为变形模板定义一个监督信号。为了构建我们的关键点检测器,需要手动注释一个小的数据集(约100个样本)。对于每条人体-服装对,服装的标注都用相应的人体关键点进行注释。然后我们训练一个具有完全连接的头部的简单的CNN,以回归关键点的坐标。然后将网络应用于完整的数据集,以最小的努力获得满意的结果。
    在这里插入图片描述

  • 空间表示法
    对于这两种类型的图像,关键点位置用归一化坐标w.r.t表示。图像大小:
    在这里插入图片描述
    这是最紧凑的表示,但很难与RGB图像的空间表示相结合。因此,我们还将每个关键点 k i k_i ki表示为与图像具有相同高度和宽度的二维热图 H i H_i Hi,其中包含一个以关键点位置为中心的非标准化高斯斑点。
    在这里插入图片描述

图像抠图

图像抠图的任务是分离前景和背景信息,以及描述如何将两者融合在一起。具体的说,给定图像 I I I,融合是指识别前景 F F F、背景 B B B和混合掩码 α \alpha α.
在这里插入图片描述
图像抠图描述了一个欠约束问题,左边有一个已知实体,右边有三个未知实体。然而,在换衣服的背景下,我们只想获取一个 α \alpha α蒙版,该蒙版在与目标衣服相对应的位置处是1,在其他位置处是0。换句话说,对于商品的目录图像和带有模型的拍摄图片,我们都需要一个上身服装的分割蒙版。
Zalando上存在的数据集不包含分割信息,因此设计了一种基于深度学习的方法以监督方式生成蒙版。下面是对目录图像和人体模型抠图过程的描述。

  • 数据采集
    第一步是收集最小可行数量的训练样本,包括约100对RGB图像和 α \alpha α蒙版。为此,我们采用了由Levin、lischinski和Weiss提出的基于加扰的二进制分割方法。
    在这里插入图片描述
    用涂鸦的方法得到的模板质量是令人满意的,但我们当然还是希望训练一个不需要人工干预就能快速处理整个数据集的分割网络。为了充分利用我们收集的小型数据集,我们采用了标准的数据增强技术,例如翻转、旋转和缩放、修改其清晰度、饱和度和亮度来处理图像。
    在这里插入图片描述

  • 损失函数和评估指标
    评价语义分割的常用标准是交集和并集的比值。该度量将图像 I I I中特定对象的预检测区域 α \alpha α和真实区域 α ^ \hat \alpha α^进行比较。计算他们的交集与并集的比率:
    在这里插入图片描述
    IoU分数为1表示蒙版之间完全匹配,而值接近0表示几乎没有重叠。
    在这里插入图片描述
    不幸的是,标准的反向传播不能用于直接优化IoU分数。Rahman和Wangle提出了一种类似的指标,可以放宽二元掩码的条件,即蒙版可以假定为[0,1]之间的数值,并且具有可通过梯度下降最小化的相关损失函数。
    在这里插入图片描述
    另一方面,已经观察到,交叉熵通常是IoU的良好代理。给定预测的分割 α \alpha α和真实值 α ^ \hat \alpha α^,该损失可以表示为:
    在这里插入图片描述
    对于服装分割任务,由于其简单性,我们将更喜欢优化交叉熵损失。尽管如此,我们还将确定不同算法的IoU分数作为比较方法。

  • 目录图像中的服装分割
    Jegou等人结合U-Net的跳过连接的优点和DenseNet的特征有效率,以参数数量的一小部分构建了具有许多卷积层的网络。此外,他们的方法实现了最先进的性能,而无需使用预先训练的权重或后处理步骤,如条件随机场。因此,我们选择它而不是其他常用的体系结构,如U-Net或ResNet。
    具体来说,我们采用FCDenseNet,在下游路径中具有4个密集连接的层快,在上游路径中具有相同数量的块。使用此设置,输入大小为 256 × 192 256 \times 192 256×192的图像将被池化4次,从而得到网络瓶颈处特征向量为 16 × 12 16 \times 12 16×12。我们对网络的密集块内的层数使用不同的值进行实验。图3.7中的行代表三种不同模型的分割结果,最简单的模型在顶部,最复杂的模型在底部。
    为了在分割任务上训练网络,我们定义了将 L α L_\alpha Lα L s L_s Ls相结合的损失函数。因子 λ s \lambda_s λs平衡了两项的相对权重。
    在这里插入图片描述
    与总变化范数相似, L s L_s Ls通过惩罚平均梯度幅度来强制生成的蒙版平滑。请注意,在这种情况下,梯度是指在图像尺寸上具有空间渐变的函数,而不是与反向传播有关。
    在这里插入图片描述
    图3.7提供了超参数对生成模板质量的影响的直观概述。顶行中的模型比底行中的模型具有更少的层和参数,从而导致性能较差,尤其是在现实复杂图案和多种颜色的服装上。从左到右增加的平滑因子 λ s \lambda _s λs可用于控制分割蒙版中是否存在孔,但是值太高则会产生模糊的边缘。较大的模型对复杂的图案更健壮,但是在较小的模型中,正则化可以通过强制没有孔的蒙版来弥补平滑度的不足。
    在这里插入图片描述

  • 人体模型穿着的服装分割
    一旦确定了服装分割任务的最佳模型,我们就尝试为人体分割任务重用相同的超参数。毫不奇怪,新训练的网络的性能并不能令人满意。实际上,人体模型的图像在纹理、视觉元素和姿势方面显示出更高的可变性。在这个新的数据集上,网络缺少有关分割内容和分割位置的信息。例如,网络很难正确的细分出现在非中心位置且规模较小的服装。另外,请注意,任务本身如何是定义不清的,因为人可以穿多件有效的用于分割的上衣,即使将要细分的服装指示提供给了网络。
    在这里插入图片描述
    显然,网络将受益于更多可用的训练数据,尤其是图3.8中给出的带有更多标签的困难样本图像。我们不是手动分割更多的图像和重新训练相同的架构,而是测试附加条件特征的效果,希望通过告诉网络要分割什么和在哪里分割来获取更好的分割结果。

    • 在哪里分割
      上一节中描述的关键点功能指定了人的关节的空间位置。该信息对于像网络提升有关人体模型及其身体部位的位置很有用,例如,网络可以了解手臂或躯干附近的分割蒙版的平均形状。对于每张图像,关键点坐标被转换成热图并连接到原始图像的RGB通道,从而为网络提供颜色特征和关键点信息的统一表示。这些附加特性的引入有利于分割任务。图3.9提供了一个实现的可视化实例,而最终的IoU分数绘制在图3.12中。
      在这里插入图片描述

    • 分割什么
      对于某些图像,实际上很难确定应该分割哪个上身服装。考虑图。3.10的情况:不清楚是否将衬衫的颈部与套头衫分开,或者敞开式连帽衫下的T恤是否应该是蒙版的一部分。然后,有必要以我们感兴趣的目标服装为条件对细分进行分类,并将其作为对网络的附加输入。
      在这里插入图片描述
      在网络中引入条件输入的两种方法:通过堆叠条件服装、模型图像及其热图,或通过单独的编码器处理商品图像,然后合并网络中较深的卷积特征。两种方法在网络的复杂性和表示的效率方面都有优点和缺点。
      在这里插入图片描述
      将服装图像堆叠到人体图像及其骨架的热图比较容易实现,因为除了输入通道的数量从12增加到15外,无需对体系结构进行任何更改。理想情况下,将这两个源连接在一起,将允许网络有选择的从人身体图像上只提取与条件服装相关的特征。但是,在编码路径开始时,服装和人体模型在空间上并没有对齐,这阻止了在较小感受野上操作的初始卷积滤波器交叉引用这两个源(图3.11a)。或者,我们可以在两个独立的流中对服装和人体模型进行编码,并且只在网络的更深层合并计算出特征体积。图3.11b的框架就不受初始化不对齐的影响,因为瓶颈处的感受野足够大,可以容纳整个输入图像,并且网络可以有效的比较图像和服装特征量。另一方面,两个编码器流必须在每个位置提取尽可能多的特征,而不知道最终的分割将需要那些特征。此外,作为唯一一个可以全面查看两个源的块,瓶颈成为网络的一个关键部分,这一定程度上违背了跳过连接的目的,在这种情况下,跳过连接不受任何条件限制。
      我们在我们的数据集中的128个样本上训练了以上介绍的四个备选方案,分为108个图像进行训练和20个图像进行测试。令人失望的是,经过50个周期的迭代训练后,与没有条件作用的模型相比,服装条件作用并没有产生更好的IoU分数。图3.12显示了纯RGB模型和RGB+Heatmap模型之间的IoU得分存在明显差距,而条件的影响可以忽略不计。在第二次分析中,我们注意到我们的小型数据集不包含大量的样本,如图3.10所示。不足为奇的是,网络没有学会考虑服装条件,并且测试数据集上的IoU分数没有改善。最有可能的是,在更大、更多样化的数据集上进行训练会更好的揭示条件的效果。此外,当设计一种系统以交换不同服装而不仅更换上身服装时,条件将变得至关重要。
      在这里插入图片描述

方法

在文章中,我们首先定义了换衣服的任务及其范围,然后考虑了两种体系结构,旨在解决服装图像和目标人体模型之间的不对齐问题,并评估其优缺点。然后,我们描述了一种自由形式的变形操作,并设计了三种神经体系结构来实现。最后,该变形模块和衣服交换模块组装在网络中,可以使用我们定义的损失函数进行端到端训练。

概述

需求

我们将换衣服任务定义为:给定一个人体模型 I h I_h Ih的图像和一个服装图像 I a I_a Ia(它出现在目录中),生成一个穿着该服装的同一个人的真实图像。

  • 变形
    网络中应该包含一个变形模块,以明确的将服装姿势与目标人体的形状对齐。实际上,空间对齐对于任何基于卷积运算的生成体系结构都是必不可少的。变形模块所应用的变换可以用不同的方式来描述,并应用于网络的不同阶段。
  • U-Net 架构
    我们希望生成的图像包含从按钮和刺绣到形状和徽标的不同比例的细节。这些特征从人体模型图像和服装的原始图像中解析出来,并忠实的重构到最终图像上。对于我们的交换模块,自然而然的选择类似于U-Net的网络体系结构。特别的,我们考虑高度相关的概念:编码和解码阶段之间的明确区分,在不同尺度下操作的块的分离,以及相应块之间存在快捷连接。
  • 端到端的训练
    通过网络中所有操作进行区分的可能性使我们可以对它进行整体训练。因此,可以在最终目标上而不是在单独定义的子目标上联合优化概念上分开的模块。因此,我们将专注于Jaderberg、Simonyan,Xisserman等人介绍的可区分的变形机制。

注意事项

空间变换网络以其最简单的形式在流水线的开头应用单个转换,目标是在标准化的视角下查看输入图像,这对于手头的任务而言更为重要。另一方面,可变性的GANWie每个输入保持单独的编码流,以便在原始源的参考帧中提取卷积特征。然后,跳过连接中的变形操作会在将提取的特征合并到解码器阶段之前对其进行变换,从而有效的将它们与输出所需的姿势对齐。这些方法与我们的衣服交换任务的要求相结合,启发了两种体系结构,如图4.1和4.2所示。应当根据网络的最终目标以及在体系结构的特定阶段应用转换的隐含含义来评估两者之间的选择。接下来,我们强调他们的优势和劣势,并激发我们的最终偏好。

  • 在开始时变换服装图像
    在这种体系结构中,将变形块计算出的变换应用于服装(RGB图像 I a I_a Ia, 掩码 α a \alpha_a αa和热图 H a H_a Ha),然后再将其提供给交换网络。由于现在服装与人体模型保持一致,因此可以从一开始就将两者按通道进行级联,从而形成具有单个编码流的更简单的体现结构。
    在这里插入图片描述
    从概念上讲,我们正在考虑将人体模型变形的参考模型作为网络内部执行的所有卷积运算的标准参考框架。利用两个对齐的信号源,编码器可以从最开始的层开始提取有用的特征,然后无需进一步操作即可将其传递到解码器的相应阶段。这种体系结构的另一个好处是,可以在易于理解的RGB图像上而不是在网络内部的特征量上进行操作,从而可以快速确定转换的质量。但是,必须注意,由于双线性插值,初始变形操作会部分破坏RGB图像的高频内容。如果转换涉及将服装缩放到较小的分辨率(通常是这种情况),则尤其如此。丢失的细节无法在以后的阶段恢复,并可能导致图像模糊,缺失诸如按钮或绣花花样之类的小规模时尚结构。
  • 在跳过连接中变形服装特征量
    在这种体系结构中,无需额外转换即可将服装和人体模型特征输入到单独的编码分支中。稍后服装特征交付给编码器并合并到人体模型特征之后进行变形操作。
    在这里插入图片描述
    一方面,这意味着服装编码器将始终咋全分辨率目录图像上操作(垂直居中于框架,大致相同的比例等),并且可以更有效的提取相关特征。然而,这也意味着来自两个源的特征仅在网络中稍后交互,而不会在编码步骤中相互影响。Siarohin等人支持跳过连接内部的几何变换的一个关键论点是,编码器的相关特征在解码器中需要的地方“穿梭”了。在第二次分析中,我们意识到使用特定于样本的变换来变形提取的特征量实际上是有害的,因为这可能会使他们的语义混乱,从而使他们对解码器无用。这是由于集合变换(例如旋转或缩放)下卷积的非等方性所致。
  • 平移对等变换
    在卷积的上下文中,如果可以对变换和卷积运算进行交换并获得相同的结果,则满足变换 f f f下的等效方差:
    在这里插入图片描述
    通过一个例子可以更好的理解这一点。让我们考虑一类卷积是等变的变换,即刚性变换。在图4.3中,我们可以看到将平移 τ \tau τ应用于时尚服装并将其与对水平条纹有反应的内核进行卷积的结果,以及以倒序应用相同操作的结果。
    在这里插入图片描述
    在这两种情况下,具有最高激活率的输出区域都放置在相同的位置。如前所述,实际上,卷积在转换下是等变的。如果我们将解码器放置在该管道的最后一个阶段之后,它将能够在新位置重建初始条纹模式,该位置对应于转换服装的躯干。
  • 非对等变换
    现在考虑两个不满足等方差的变换。在图4.4a和图4.4b中,我们分别显示了在旋转和缩放下的非等方差示例。对于前者,我们将使用一个滤波器组,该组滤波器组可以激活不同方向的条纹图案。类似的,对于后者,我们将使用对不同频率(尺度)的条纹作出反应的滤波器。
    在这些例子中,很明显,如果在卷积之前或之后应用,缩放和旋转的行为是不同的。与平移不同,生成的特征映射不仅仅是彼此的旋转/缩放版本。一种简单的解释方法是,卷积滤波器在图像的参考帧中工作,而不考虑它们应用于的对象的局部方向/比例,因此当缩放或旋转条纹时,它们将激活不同的滤波器。在4.4a的情况下,提取特征表示具有特定方向w.r.t的线。原始图像/服装,而在4.4b中,方向称为变形图像/服装。
    如果网络的后续阶段依赖于提取的特征来产生最终结果,则网络内部语义的这种更改可能是有害的。让我们再网络上附加一个经过解码的解码器,该解码器经过训练可以从图4.4a的最后一列中的特征量重建变形图像。这个问题实际上与我们的最终目标相似,解码器试图根据从编码器接收到的功能将衣服穿在人的身上。如果在卷积之前旋转袖子,滤波器将提取对角线条纹w.r.t。图像帧和解码器将正确重建他们(图4.5a)。另一方面,特征提取后的转换将导致错误的重建袖子(图4.5b)。
    在这里插入图片描述
    在这里插入图片描述
    服装如果在进入编码器前变形,通过编码器和解码器,特征量中每个通道的语义将保持一致,最终得到正确的重构。相反,如果以某种姿势从商品中提取特征,然后将其变形为目标姿势,则解码器将无法为图像的每个区域分配正确的图案。随着每个样本的目标姿势发生变化,解码器无法了解其接收到的商品特征的正确解码操作。

换衣服体系结构

考虑到我们的图像生成任务中可变形的跳过连接的有害行为,我们为衣服交换网络提出了一下架构。
在这里插入图片描述
首先,变形模块计算几何变换,以使服装的姿势与人体模型的姿势保持一致。该模块以其RGB图像 ( I a , I h ) (I_a, I_h) (Ia,Ih)和关键点位置的形式从服装和人体模型接收特征,可以是矢量 ( K a , K h ) (K_a, K_h) (Ka,Kh)或热图 ( H a , H h ) (H_a, H_h) (Ha,Hh)。然后,将计算出的变换用于使服装 I a I_a Ia,其关键点 K a K_a Ka,热图 H a H_a Ha及其分割蒙版 α a \alpha _a αa变形,这样做,使服装与目标人体模型的姿势保持一致。
然后,交换模块接收变形的服装和人体模型的连接,该模型由人体模型的图像、热图和分割蒙版表示。最终模块负责生成穿着源服装的人体模型图像。

变形模块

对于交换衣服任务,至关重要的是正确匹配人体模型的服装和目标服装。一般而言,我们试图表示应用于图像 I a I_a Ia图像的变形操作 θ \theta θ,以将其姿态与目标图像 I h I_h Ih中的人体姿势对齐。注意咋时尚领域中的2D对齐问题是一个不适定的问题。实际上,时装是不能在二维图像空间中完全表示的三维可变形对象。首先,简单的2D图像无法表示可以在三个维度上变形的零件之间的关系。例如,在啊产品目录图像中,袖子通常直接放在身体旁边,袖口紧贴腰围。尽管各部分之间存在这种明显的关系,但在3D转换中,袖口可以远离腰围移动,而实际上肩膀比袖子更紧密的耦合到腰围。其次,单个2D图像无法代表服装的整个表面。因此,空间中的拓扑有效变换会导致部分遮挡并显示出来,而这又会好像在2D投影中创建或消失了像素一样。例如,手臂的局部旋转可能会隐藏袖子的一部分,并从袖子的背面露出细节。

变形的特征

在科学文献中,平面形状的对齐是一个长期研究的问题,许多研究项目提出了表征和执行变形操作的不同方法。从转换的几何特性到操作是否可学习和/或可区分,这些方法在许多方面都有所不同。下面是我们认为与使服装姿势和人体模型姿势保持一致相关的方法描述。

  • 非参数方法
    • 形状上下文匹配(TPS)
      给定两个没有匹配关键点信息的形状,仍然有可能计算最佳猜测变形操作。简而言之,在两个形状上随机选择一个可变数量或多个关键点,然后使用每个关键点的形状上下文特征将它们与能量最小化策略进行匹配,并最终计算出将一组关键点最佳的转换为另一组关键点的变形。形状上下文描述符最初由[2]引入,作为它所属的一组点(即形状)上下文中的一个点表示。对于每个点,使用从该点到所有其他点的极距的量化直方图来构建描述符。图4.7显示了属于字母"A"的点形状上下文描述符的示例。
      在这里插入图片描述
      一旦为源形状和目标形状的每个关键点计算了形状上下文,就可以匹配他们以解决二进制分配问题。通常使用匈牙利算法或Kuhn-Munkres算法完成,该算法在多项式时间内运行,并根据匹配关键点的直方图相似性最小化成本函数。最后,给定关键点对应关系,可以估计将一个形状映射到另一个形状的变换。变换的选择视情况而定,仿射和薄板样条变换是最常见的选择之一。如果前者非常适合刚性转换,则后者更适合服装可以在不同位置拉伸和压缩的时尚服装案例。在VITON中,在单独服装的蒙版和由粗框架产生的穿在人体模型身上的衣服蒙版之间计算出规则的TPS。然后将给变换应用于独立服装的RGB图像,以使其姿势与人体模型的姿势保持一致。我们发现此解决方案有两个主要缺点:选择轮廓作为扭曲变形指南,以及选择特定的几何变换。事实上,服装的姿势可以急剧变化,而乱开没有明显变化,尤其是考虑到自我遮挡(例如,图4.8中的手臂在身体前面)或弹性变形(例如,宽松的毛衣)时。因此,不能仅从其外部形状唯一的识别两个姿势之间的变换。不受约束的扭曲变形也是文中提到的一个失败案例的原因,图中模型的双臂在身体前面(图2.15)。其次,如前所述,体系结构中的不可微形状匹配TPS操作排除了端到端训练网络的可能性。
      在这里插入图片描述
      在这项工作中,我们旨在解决这两个问题:匹配的关键点将提供更强大的对齐信号,而差异化的变形操作将允许端到端的训练。
  • 参数方法
    • 线性方法

      • 仿射变换
        仿射变换是保留点,平面的直线和平行线的映射。可以yoga低至6个值度这种变换进行参数化设置,但仍可以建模各种几何变换,例如平移、缩放、相似度、相似度变换、反射、旋转和切变。仿射变换可以表示为矩阵乘法和平移的组合,也可表示为使用其次坐标的单个矩阵乘法,这是本文档中的首选表示形式:
        在这里插入图片描述
        在这里插入图片描述
        在这里插入图片描述
        最小二乘回归问题也可以通过标准反向传播的机器学习方式来解决。在此设置下,我们允许训练算法修改A的权重以减少与转换相关的损失。可以证明,如果这样的函数是目标关键点和变换后的关键点之间的均方误差,则解将收敛到方程式4.2中的一个。
        在这里插入图片描述
        与伪逆方法相比,此公式具有更强的表达能力,并且对我们的时尚服装对齐任务很有帮助。实际上,利用[22]中的可微分图像采样操作,我们可以用其他向扩展损失函数,这些项可以更好的指导过程。例如,我们可以包含一个术语,该术语惩罚在穿着的服装分割蒙版和通过 θ \theta θ转换的原始服装的蒙版之间的不正确对齐。这可以通过等式中定义的交叉熵损失来表示。
        在这里插入图片描述
        考虑到我们所依赖的关键点还远非完美(参见4.10),因此在损失函数中包含其他项(关键点对齐除外)的能力使最终体系结构训练过程的关键。
        在这里插入图片描述
    • 非线性方法(基于函数)
      尽管它们在图像分类任务中是有效的,仿射变换的结果太过简单了,无法对人体模型身上的服装进行服装的3D变形建模。实际上服装的某些部分在压缩的同时会拉伸,某些部分比其他部分更紧密的贴合在一起,并且某些部分可以向拉链一样闭合,也可以向袖子一样卷起。这些复杂的变化可以通过自由形式的函数来更好的描述,对于自由形式的函数,线性约束是宽松的。我们将这些函数建模为逆映射,从目标的每个像素到输入中的采样位置:
      在这里插入图片描述
      这个公式类似于空间变换,此函数可用于直接生成采样器的采样网格,而不是从仿射的六个参数计算采样网格。在我们的实验中,他们的双线性核用于可微分采样,以适应实际值采样坐标可能与像素位置不完全对应的事实。在这里,我们提出了两种表征转换函数的架构方法:前者基于CNN,后者基于超网络。

      • 基于CNN
        这种基于CNN的方法利用输入的空间性质直接预测表示双线性采样的坐标网格的特质量 G ∈ R 2 × H × W G \in R^{2 \times H \times W} GR2×H×W,即在每个空间位置包含 x x x y y y坐标,应当从变形图像的相应像素中采样。可以将网络建模为全卷积编码器解码器,该解码器接收服装图像 I a I_a Ia和热图 H a H_a Ha, H h H_h Hh作为输入(图4.11)。避免跳过连接,因为源最初并未对齐。输出被认为是恒等变换的残差,因此可以将采样网格计算为 G = Δ G + G I G=\Delta G + G_I G=ΔG+GI
        在这里插入图片描述
        我们承认,直接预测变形操作的采样网格是一项严格的约束不足的任务。网络可以轻松的学习如何对齐匹配的关键点,但是仅凭这一点还不足以保证关键点之间的空间平滑插值,并且可能导致错误的变形(图4.12)。
        在这里插入图片描述
        如果我们将服装视为半刚性子部分的集合,则可以观察到服装变形为人体模特所需的变换是局部仿射的,即目标图像中某个位置周围所有像素应该从源图像中的统一邻域中采样。可以通过正则项来强制执行此约束。通过最小化光流的拉普拉斯函数,即图像轴的二阶导数w.r.t的大小,我们强制变换局部平滑,这种平滑的尺度由我们计算拉普拉斯函数的尺度给出。
        在这里插入图片描述
        在这里插入图片描述

      • 基于超网络
        多层感知器是描述将目标坐标映射到源上适当采样位置的函数的另一种选择。MLP隐藏层中包含的非线性允许非仿射变换,通过改变隐藏神经元的数量可以控制实现函数的“变形能力”。根据文献[13],这个MLP, f f f的权重可以使用另一个网络 g g g来预测,例如,在关键点向量上操作的MLP,或者在热图上操作的CNN。与以前的体系结构类似,函数的输出可以被视为标识映射上的残差。
        在这里插入图片描述

    • 部分转换
      最为最后的选择,我们描述了一种基于姿势的人体合成方法引入的部分方法,该方法的特征在于可学习的零件模型和作用在RGB图像上的一组预先计算的仿射变换。
      在这里插入图片描述
      网络的第一阶段拍摄人像并产生与预先计算的仿射变换相对应的固定数量的分割蒙版。蒙版一一应用于原始图像,然后进行相应的转换,然后将生成的图像堆叠在一起,并用于生成最终的前景对象。值得注意的是,本文从对可变形GAN的相同观察开始:人类骨骼可以分为可一起变换的子部分这一事实。但是,这些方法是完全不同的,特别是关于哪些部分应该属于一起以及那些特征应该进行转换。分割过程不仅限于矩形区域,而且如果没有预先计算的变换,则无需外部监督即可学习。这使网络能够识别原始图像中应一起自主转换的部分,例如,他们提到的网球拍和高尔夫球杆通常与上臂分开。另一个区别是,将变换应用于原始图像,然后通过单独的网络处理结果,将变换应用于编码器的中间特征图。如之前所述,后者可能对编码器的生成产生有害影响。这种基于部分的方法可以很容易的适应我们的情况,使用关于服装哪些部分一起变形的先验知识,也可以通过让网络学习每个部分的自由形式变换而不是使用预先计算的仿射来改进。然而,这项研究的发表日期不允许我们在实验中包含这种架构。

架构

在我们的实验中,我们评估了上述三种基于非线性函数的方法的性能:完全编码的编码器-解码器体系较高直接预测采样网格,基于MLP的超网络和基于CNN的超网络。

  • Enc Dec
    这是一种完全卷积的编码器-解码器体系结构,以[23]的方式使用密集快和过渡块构建,单没有跳过连接。它的输入是 I a I_a Ia H a H_a Ha H h H_h Hh的串联,共有21个通道。输出量 Δ G ∈ R 2 × H × W \Delta G \in R^{2 \times H \times W} ΔGR2×H×W被认为是同一性采样网格 G I G_I GI的残差。用于变形操作的采样网格,带有适当的余量,由下式给出:
    在这里插入图片描述
    初始化解码器最后一层的权重,以使标识产生很小的变化,以提供一个良好的起点,以便网络可以缓慢的调整转换。

  • Hyper MLP
    这是一种浅层MLP模型,它以关键点向量 K a K_a Ka K h K_h Kh作为输入,并输出实现实际映射功能的第二个MLP权重 ω \omega ω。第二个MLP, f f f具有两个用于目标位置 x ⃗ ∈ R 2 \vec x \in R ^2 x R2,以及两个用于该点的采样坐标的输出神经元。如果 f f f具有N个神经元的单个隐藏层,则第一个MLP g g g必须预测权重和偏差之间的总和为2N+N+N2+2。这两个网络都在除了输出之外的每个完全连接的层之后使用ReLU激活。再次,将采样网格计算为与标识的偏移量。
    在这里插入图片描述
    HyperMLP-250和HyperMLP-500是以 g g g中隐藏的神经元数量命名的两个变体。表4.1更详细的描述了这两种变体的超网络 f f f的配置。两者的映射函数 g g g的配置相同,并且是具有单个隐藏层和ReLU激活功能的简单MLP模型。
    在这里插入图片描述

  • Hyper CNN
    Hyper CNN与上面的架构相似,但是CNN用于预测权重 ω \omega ω。由于输入的空间性质,我们可以将服装图像 I a I_a Ia机器热图 H a H_a Ha和人类图像 H a H_a Ha一起输入。CNN从六个块的序列开始: 3 × 3 3 \times 3 3×3卷积、丢弃、批量归一化、ReLU和合并。通过这些块,通道数增加为32/64/128/256/256/256。除最后一个池化外,所有池化层均应用 2 × 2 2 \times 2 2×2最大池化,从而将特征向量的宽度和高度减半。最后的合并操作将计算每个特征图的孔径平均值,从而将高度和宽度减小为1。然后,通过两个完全连接的层处理最后的 256 × 1 × 1 256 \times 1 \times 1 256×1×1,其输出大小分别为512和2N +N +N2+2。然后将这最后一个向量重新整形为 M L P g MLP_g MLPg的权重,而无需进一步操作。
    在这里插入图片描述
    与HyperMLP相似,我们考虑此体系结构的两种变体:HyperCNN-250和HyperCNN-500。他们共享相同的卷积体系结构,只是最后一个完全连接的层的输出大小不同。

交换模块

架构

交换模块接收人体模型和装的特征串联,后者现在与目标姿势对齐。每个源都提供其RGB图像I,其分割蒙版 α \alpha α和其热图 H H H,总共26个通道。该模块通过具有4个密集快的FCDenseNet体系结构实现。在我们的实验中,我们比较了每个密集块的层数和增长率的不同选择,从而实现了不同深度的网络。表4.2中,我们给出了实验中使用的三个网络的详细信息,即SWAP-40,SWAP-60,SWAP-81,其中的数字表示卷积运算的总数。
在这里插入图片描述

训练

有监督的训练

为了确保向变形模块以及整个网络提供强大的学习信号,我们将训练设置限制为完全受监督的方法。因此,我们的训练网络仅针对可以获得真实图像的对来重构穿着服装 I a I_a Ia的人像 I h I_h Ih。当然,在这种情况下,我们无法将 ( I h , I a ) (I_h,I_a) (Ih,Ia)直接输入到网络中,因为 I h I_h Ih中描述的人已经穿着 I a I_a Ia描述的服装。类似于VITON,我们需要准备与衣服无关的的人表示,以表示模型的所有特征(上半身服装除外)。
在将软分割蒙版应用于图像之前,先对他们进行阈值处理。
在这里插入图片描述
在上面的公式中, I f i l l I_{fill} Ifill表示蒙版区域的填充信息不足。在我们的实验中,我们测试了0/1、灰度或均匀噪声的填充,如图4.15所示。
在这里插入图片描述

修复损失

换衣服任务的损失函数将生成的图像 I ^ \hat I I^和数据集中的参考图像 I h I_h Ih进行比较,将基于像素的L1损失和基于VGG16的感知损失相结合。
在这里插入图片描述
L1项以像素Wie单位比较图像,对网络造成不利影响,因为它不能忠实的再现原始图像。这种损失将主要影响最小的细节、边缘和轮廓、并且阻止网络对背景、面部区域进行任何更改。另一方面,VGG特征代表更高级别的信息,因为它们是在相邻像素的像素块上计算的,这些像素的大小逐渐向更深的层移动。第一层将检测较小的特征(例如按钮),而较深的层将检测更大和更多的抽象特征(例如徽标、口袋等)。具体来说,我们采用来自VGG16的激活层后的特征,以 ϕ l \phi _l ϕl表示, l = r e l u 1 2 , r e l u 2 2 , r e l u 3 2 , r e l u 4 2 l=relu1_2,relu2_2, relu3_2, relu4_2 l=relu12,relu22,relu32,relu42.L1和VGG的较深层之间的平衡会影响输出的视觉质量。

变形损失

通过端到端的训练过程,应该仅可以从 L i n p a i n t L_{inpaint} Linpaint学习变形操作 θ \theta θ。但是我们发现添加正则化很有价值。我们考虑公式4.4中描述的蒙版重叠损失,公式4.5描述的采样网格平滑度损失 L s m o o t h ( G ) Lsmooth(G) Lsmooth(G),更重要的关键点对齐损失通过下面的公式定义:
在这里插入图片描述
将这些损失加在一起加权求和,我们就得到了变形模块的鲁棒性正则化:
在这里插入图片描述
通过这些损失,可以在将变形模块包括在完整的换衣服结构之前对其进行单独的训练。这样可以评估每种方法的性能,并对有意义的超参数设置进行有根据的猜测。同时,我们可以验证所选择的目标函数是否适合该任务,并将在以后知道整个网络达到最低限度。

结果

除非特定部分另有说明,否则所有实验均以以下设置进行。完整的数据集包含总共42000个图像对(分辨率为 256 × 192 256\times192 256×192 )41800对图像用于训练200对图像用于测试。实验在具有16GB图形内存的单个NVIDIA Tesla V100 GPU上运行,批处理大小为8。对于变形模块和交换模块的参数,我们使用ADAM优化器的学习率为0.001。使用批量标准化,丢弃率固定为 p = 0.3 p=0.3 p=0.3,这是在训练和测试时的常规行为。L1和VGG损失的权重值保持在表5.1中的平衡设置中。变形模板是使用HyperMLP-250架构实现的,而交换模块则遵循SWAP-81规范。

修复损失

在这里插入图片描述
在这里插入图片描述

交换模块

在这里插入图片描述
在这里插入图片描述

变形模块

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

变形损失

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

蒙版填充

在这里插入图片描述

蒙版扩充

在这里插入图片描述

讨论

变形模块

在这里插入图片描述

HYPER *模块的隐藏神经元数量

在这里插入图片描述

ENCDEC体系结构的局限性

换衣服

定性结果

在这里插入图片描述

失败案例

  • 不精确的分割掩模
    该网络严重依赖于穿着服装的分割蒙版来标识要绘制的图像区域。如果分割蒙版不够精确,则网络很容易混淆,生成的图像将包含原始服装的特征(图6.4)。
    尤其是,如果分割蒙版没有完全覆盖穿着的衣服,它的特征将“泄露”到生成的图像中,因为这对网络训练的重建任务有有帮助。如果蒙版太大,则网络会设法部分勾勒出标准人体的轮廓,并用背景色填充多于的轮廓。
    在这里插入图片描述

  • 配件和真实感
    观察修复任务的结果,我们注意到该网络在复制附件或打开衣服方面存在问题。当然,我们不能指望这种类型的信息会被重建,因为它不会出现在提供给网络的输入中。即使重建质量可以接受,基于L1核VGG的修补损失也会严重影响这种结果。
    在这里插入图片描述
    快速解决此问题的方法是精心挑选没有此类歧义的训练图像。但是,重要的是要专注与这些示例提出的实际问题:“如何评估生成的图像的质量?”。
    事实上,对于人眼来说,很明显模型在生成的图像中正确的穿上了感兴趣的衣服,而不是用于评估网络的度量标准。
    这项研究的一个未来方向是在训练过程中加入对抗性的方法,用学习判别器代替手工制作的损失。在这样的训练过程中,只要生成的图像中描绘了夹克的基本特征,生成器就不会因为生成封闭的夹克而不是开发的夹克而受到惩罚。

  • 颜色
    对于训练和测试数据集,生成的颜色都缺少真实图片的亮度和饱和度。图6.6显示了这种现象的一些示例。
    在这里插入图片描述
    激活函数中的渐变饱和可能是造成这种情况的原因,从而阻止了网络学习接近输出方位边缘的值,在该范围内,图像的颜色直方图包含许多像素(图6.7)。
    在这里插入图片描述
    一种可能的解决方案是在将图像输入到网络之前,将图像标准化为标准亮度和颜色分布,以使目标颜色在训练过程中保持在非饱和区域。在评估时,可以简单的对生成的图像进行逆向处理,以恢复全色范围。

与其他方法的比较

  • Fréchet Inception Distance
    生成方法的评估通常比较棘手,因为没有可比较的真实数据。除了给出换装的直观示例之外,我们还使用Fréchet起始距离评估经过全面训练的网络的性能。
    FID通常用于计算两个图像数据集之间的相似度,方法是计算它们在Inception模型的特征空间中表示之间的距离:值越低,数据集在视觉上越相似。该度量标准已显示出与人类感知的良好相关性,因此为视觉质量提供了良好的指标。
    在我们的案例中,FID用作一组42000个真实照片与一组17408个生成的图像之间的相似性度量。由于内存的显著,我们对较大的数据集进行采样以匹配较小数据集的大小,并在逐渐增大的图像块上计算得分,结果记录在表6.1中。
    在这里插入图片描述

  • CAGAN
    与使用CAGAN生成的图像相比,使用我们的方法生成的图像在细节上更清晰,更丰富。原因有两个:首先,我们的变形操作允许衣服交换网络充分利用跳过连接。其次,与对抗训练相比,我们的监督训练为网络提供了更强大的学习信号。
    在这里插入图片描述

  • VITON
    与VITON相比,生成的服装的清晰度和细节相似,但是我们的方法能够保留原始人的更多细节,因为它不会被剥离以创建一个衣服无关的人的表示。但是VITON可以是需要从头开始生成的身体部位获得更好的真实感,因为它们在原始图像中不可见。
    在这里插入图片描述

未解决的问题和未来的工作

  • 速度
    在速度方面,我们的系统在一台GPU机器上可以令人满意的快速运行,每秒产生约8张图像,这不包括关键点检测和服装分割对图像进行预处理所需的时间。然而,这些指标袁飞在消费类设备上进行实时换装的愿景。为了减少计算成本,CPU操作效率和模型的内存占用,肯定需要做更多的工作。
  • 真正的3D拟合
    虚拟试穿应用的一项重要要求是能够评估商品在人的身体上的真实适合度。例如,最终用户想知道他们购买的衣服是紧身还是宽松都可以理解。为了达到这种视觉准确性,需要更精确的服装模型和模型。该领域研究的未来方向是人体和衣服的3D形状估计工作,以及手机有关物品的更多信息,例如尺寸和材料弹性。
  • 高分辨率
    在时装界,通常的做法是以高分辨率发布视觉内容,以图像的每一个像素吸引顾客。我们的方法能够以 256 × 192 256 \times 192 256×192的分辨率生成图像,并且我们希望它可以轻松的放大到至少像素数量的两倍,但代价是更大的网络和更长的训练时间。但是,我们不希望这种蛮力方法能够很好的扩展到无限高的分辨率,为了解决规模问题,研究界以超分辨率生成方法制作了令人振奋的作品,这些研究中考虑的新颖架构和训练方法无疑代表了高分辨率内容创作方向上有趣的一步。

总结

该项目在条件图像生成的背景下研究了两个问题,即使用变形操作解决信息不对齐问题,以及设计用于换衣服的网络体系结构。

首先,引入非线性可微分变形模块以对科学习的自由形式转换进行建模。提出了几种用于实现此类模型的体系结构,并对时尚服装的变形进行了测试,不出所料,由于所考虑对象的非刚性性质,与简单的仿射变换相比,这些变换产生更好的性能。

其次,由于收集了有条件图像生成方面的这些知识,我们提出了一种用于衣服交换的端到端的解决方案,该解决方案可以产生高质量的结果和精确的细节重建。在我们的设计中,由于能够仔细选择相邻层(密集块)内以及整个网络(跳过层)的连通性模式,因此我们能够利用数百万个参数来训练和利用超深层卷积网络的生成能力。

最后,对研究项目中获得的结果的分析,特别是对其弱点的分析,为该领域的进一步研究开辟了道路。


http://chatgpt.dhexx.cn/article/77krjjKw.shtml

相关文章

Traffic morphing阅读笔记

文章目录 前言1 变形1.1 符号表示及算法讲解1.1.1 符号1.1.2 凸优化求解1.1.3 降低开销1.1.4大样本空间分治1.1.5实验中的注意事项短会话源分布变化多样数据包分片 2 实验评估2.1 加密IP语音识别白盒变形黑盒变形2.1.1 与原始分类器对抗二元分类器三元分类器 2.1.2 不可区分性评…

云波社区 l Mecha Morphing(变形机甲)游戏介绍

Mecha Morphing(变形机甲)由YGG领投的一个创新型GameFi项目即将开始打金! 简单介绍一下,该游戏由Call of duty核心团队研发,画风完美阐释暴力美学。在MechaMorphing元宇宙中,玩家可以通过参与PVE, PVP, 土地…

Real-Time Rendering——4.5 Morphing 变形

Imagine that one model is displayed at time t0 and we wish it to change into another model by time t1. For all times between t0 and t1, a continuous “mixed” model is obtained, using some kind of interpolation. An example of morphing is shown in Figure 4.…

《数字图像处理》dlib人脸检测获取关键点,delaunay三角划分,实现人脸的几何变换warpping,接着实现两幅人脸图像之间的渐变合成morphing

这学期在上《数字图像处理》这门课程,老师布置了几个大作业,自己和同学一起讨论完成后,感觉还挺有意思的,就想着把这个作业整理一下 : 目录 1.实验任务和要求 2.实验原理 3.实验代码 3.1利用人脸特征点检测工具dli…

OpenCV:图像变形(Image Morphing)

融合/形变技术 Image Morphing的原理是十分简单的。有两幅图像 I 和 J ,我们希望通过融合图像 I 和 J 来创建一幅新的图像 M. 图像 I 和 J 的融合过程是由参数 alpha 来控制,参数 alpha 介于0和1之间。当alpha 0,新的图像 M看起来更接近 I;当alpha 1&…

计算机动画作业:图像morphing

本学期选了计算机动画课程,第一次作业是图像morphing, 本来打算选择基于四边网格的morphing, 但因为要用到曲面插值,感觉比较麻烦,因此使用基于三角网格的face morphing。 一、总体方案 1、检测人脸特征点&#xff0…

Morphing

<script src"http://widgets.amung.us/classic.js" type"text/javascript"></script> <script type"text/javascript"> </script> Morphing 这篇文章给大家介绍一下morphing&#xff0c;它是一种变型动画&#xff0c;…

深度学习中的GPU与CUDA

对应视频教程&#xff1a;https://www.bilibili.com/video/BV1S5411X7FY/ 文章目录 1. 显卡&#xff08;GPU&#xff09;与驱动2. 显卡与CUDA3. 如何查看自己的显卡 1. 显卡&#xff08;GPU&#xff09;与驱动 显卡&#xff0c;也称之为 GPU。GPU 的全称是 Graphics Processin…

CUDA详解

CUDA&#xff08;Compute Unified Device Architecture&#xff0c;统一计算设备架构&#xff09;&#xff0c;是显卡厂商NVIDIA推出的运算平台。 CUDA™是一种由NVIDIA推出的通用并行计算架构&#xff0c;该架构使GPU能够解决复杂的计算问题。 它包含了CUDA指令集架构&#xf…

CUDA入门

1. 引言 CUDA为a platform and programming model for CUDA-enabled GPUs。该平台通过GPU来进行计算。CUDA为GPU编程和管理 提供C/C语言扩展和API。 CUDA编程中&#xff0c;会同时使用CPU和GPU进行计算&#xff1a; CPU system&#xff1a;称为host。GPU system&#xff1a;…

cuda和cudatoolkit

Pytorch 使用不同版本的 cuda 由于课题的原因&#xff0c;笔者主要通过 Pytorch 框架进行深度学习相关的学习和实验。在运行和学习网络上的 Pytorch 应用代码的过程中&#xff0c;不少项目会标注作者在运行和实验时所使用的 Pytorch 和 cuda 版本信息。由于 Pytorch 和 cuda 版…

最新CUDA环境配置(Win10 + CUDA 11.6 + VS2019)

最新CUDA环境配置(Win10 CUDA 11.6 VS2019) 本篇博客根据NVIDIA 官方文档所述, 并根据自己实践得出. 供各位需要的朋友参考. 1.前言 本篇文章的软件环境为: Windows 10CUDA 11.6VS2019 CUDA是目前做人工智能, 深度学习等方向的必备工具库. 由CUDA衍生出的加速工具很多, …

一文搞懂CUDA

什么是cuda 统一计算设备架构&#xff08;Compute Unified Device Architecture, CUDA&#xff09;&#xff0c;是由NVIDIA推出的通用并行计算架构。解决的是用更加廉价的设备资源&#xff0c;实现更高效的并行计算。 CUDA是NVIDIA公司所开发的GPU编程模型&#xff0c;它提供…

GPU,CUDA,cuDNN的理解

我们知道做深度学习离不开GPU,不过一直以来对GPU和CPU的差别,CUDA以及cuDNN都不是很了解,所以找了些资料整理下,希望不仅可以帮助自己理解,也能够帮助到其他人理解。 先来讲讲CPU和GPU的关系和差别吧。截图来自资料1(CUDA的官方文档): 从上图可以看出GPU(图像处理器,…

CUDA编程之快速入门

CUDA(Compute Unified Device Architecture)的中文全称为计算统一设备架构。做图像视觉领域的同学多多少少都会接触到CUDA,毕竟要做性能速度优化,CUDA是个很重要的工具,CUDA是做视觉的同学难以绕过的一个坑,必须踩一踩才踏实。CUDA编程真的是入门容易精通难,具有计算机体…

CUDA学习

想想学习CUDA的时间也应该有十来天了&#xff0c;也该是做一个小总结了&#xff0c;说说我理解的CUDA&#xff0c;它到底是什么东西&#xff1f; 其实说到CUDA&#xff0c;还真的没几个人知道&#xff0c;说实话&#xff0c;我也听说不久&#xff0c;主要因为它2007年才刚发布&…

CUDA简介

CUDA简介 CUDA是什么 CUDA&#xff0c;Compute Unified Device Architecture的简称&#xff0c;是由NVIDIA公司创立的基于他们公司生产的图形处理器GPUs&#xff08;Graphics Processing Units,可以通俗的理解为显卡&#xff09;的一个并行计算平台和编程模型。 通过CUDA&#…

CUDA是什么-CUDA简介

在大家开始深度学习时&#xff0c;几乎所有的入门教程都会提到CUDA这个词。那么什么是CUDA&#xff1f;她和我们进行深度学习的环境部署等有什么关系&#xff1f;通过查阅资料&#xff0c;我整理了这份简洁版CUDA入门文档&#xff0c;希望能帮助大家用最快的时间尽可能清晰的了…

java队列和栈 共同_java 栈和队列的模拟--java

栈的定义&#xff1a;栈是一种特殊的表这种表只在表头进行插入和删除操作。因此&#xff0c;表头对于栈来说具有特殊的意义&#xff0c;称为栈顶。相应地&#xff0c;表尾称为栈底。不含任何元素的栈称为空栈。 栈的逻辑结构&#xff1a;假设一个栈S中的元素为an,an-1,..,a1&am…

栈和队列学习总结

一、栈 1、特点及应用 先进后出。(如果会和队列先进先出记混的话,就记场景吧:弹栈弹栈,就是把最上面的最新进来的弹出去;而队列就像我们火车站排队检票出站一样,谁排在前面谁就先出去。) 应用的话,其实我们经常接触呀。比如Undo操作(就是撤销操作)就是使用的栈的思想…