1. 引言
近几年,随着深度学习中生成对抗网络(Generative Adversarial Network, GAN) [1] 的发展,人物图像合成技术受到越来越多的关注,已经成为一个研究的热点问题,在图像编辑、电影制作、行人重识别和虚拟换衣等方向上有广泛的应用 [2] [3] [4]。通过姿态节点引导的人物图像合成是目前最流行的方法之一,生成具有目标姿态的人物图像实现姿态转换技术的实现,可以方便用户在线上服装类购物平台了解更多的信息,也可以促进虚拟试衣间的完善。然而,由于人体是非刚性的,在姿态变换的过程中可能会引起合成图像中人物的变形和伪影的产生,同时,在不同视角下的不同姿态的人物外观有很大的不同,这使得生成网络必须具有捕捉图像分布中大范围变化的能力和推理被遮挡区域像素的能力。另一方面,服装的纹理和人物外观的细节在生成过程中很容易丢失。因此,目前的人物图像合成技术还存在着许多挑战。
文献 [5] 通过对人体的3D模型进行建模,再将3D人物渲染到2D图像中,这种方法通常比较耗时,并且计算量很大。文献 [6] 首先提出用两阶段的模型来实现人物图像的合成,但这种coarse-to-fine策略的计算步骤很复杂。随后文献 [7] 在之前的基础上将图像的前景、背景和人物的姿态分解和编码成不同的特征,通过一定的组合方式再把它们结合在一起生成目标姿态人物图像,虽然提升了对生成过程的编码控制,但是最后生成的图像质量并不高。文献 [8] 通过提出一种神经网络中跳跃连接的变体来解决因姿态不同造成的人物外观的像素错位,这种方法不适用于形变较大的姿态转换。
受人类感知过程的启发,注意力机制在计算机视觉领域中常用来提取重要区域的特征 [9] [10]。同时残差网络ResNet [11] 的提出有效解决了网络退化和网络难训练的问题,被广泛应用于深层网络中。
综上所述,本文提出了基于嵌套残差注意力模块的人物姿态转换方法。一方面,保留了传统提取特征用的残差模块用于优化深层网络的优势,同时为了减少静默神经元的出现本文将里面的激活函数替换成LeakyReLu [12]。另一方面,将残差模块嵌入在注意力模块里,可以在深层网络传播过程中根据注意力机制的动态变化学习全局特征的局部相关性,高权重聚集重要信息,通过多方位残差学习融合特征信息,使得人物图像可以递进式转换姿态,相比之前的方法不会丢失更多细节,平缓地完成姿态转换的过程,同时添加Style Loss [13] 损失函数来引入Gram矩阵提升姿态转换前后图像风格的匹配程度,使生成图像的风格和原图像风格保持一致。
2. 基础理论
2.1. 人体姿态估计
基于深度学习的人物图像合成算法往往通过OpenPose [14] 做姿态估计。OpenPose用热力图
来表示要检测的关节点数,用向量图
来表示要检测的关节对数。通过2D高斯分布建模,第k个人的第j个关节点在p点的热力图
可表示为:
(1)
其中,
表示坐标位置,
用于控制峰值的范围。
通过关节联通区域(Part Affinity Fields,PAFs)建模骨骼区域,对骨骼区域内的每一个像素点使用2D向量表征位置和方向信息。第k个人的第c对关节对在p点的向量图
可表示为:
(2)
得到各个关节点的坐标热力图和关节对的向量图后,将各个关节连接成一段骨骼,快速对应到不同人物个体中。图1为OpenPose做双向匹配的示意图。

Figure 1. OpenPose bipartite matching
图1. OpenPose双向匹配
2.2. 注意力机制
注意力是人类大脑中一项不可或缺的复杂认知功能,人们会无意识地对外界输入的大量信息在大脑中初步筛选出重点部分,并暂时性地忽略其它部分,这种能力就叫做注意力。深度学习中把注意力机制分为软性注意力机制和硬性注意力机制,考虑到硬性注意力机制不方便通过反向传播方法进行训练,一般常用的是软性注意力机制,计算所有输入信息的加权平均,再输入到神经网络中。能够以高权重去聚焦重要信息,低权重去忽略不相关的信息,并且还可以不断调整权重,有很高的可拓展性。其基本网络框架如图2所示。在由卷积层、池化层等常见操作层构建出来的卷积神经网络中,每一层对于一副图像的所有空间特征是一视同仁的,为了让网络更加关注重点区域,通常会在网络中添加一层或几层注意力模块 [15] 来获得想要的信息。
3. 本文算法
3.1. 嵌套残差注意力模块
针对于通过姿态节点引导的人物姿态转换任务,将人体姿态估计得到的姿态节点和人物外观信息结合在一起做卷积可能会造成语义信息的缠结和混乱,因此本文提出将姿态信息和外观信息分成两个分支来处理。从姿态信息分支中提取特征注意力,对全局姿态信息进行编码,再通过嵌套残差注意力模块将软注意力机制下提取出的掩膜自适应选择外观信息分支中的人物特征信息,加强全局特征和局部特征的依赖性。不同于以往大多数双支路网络在提取特征过程中互不干扰的做法,本文的两个分支相互作用,不仅外观信息分支会受到引导姿态的影响,姿态信息分支也会随着人物外观特征的更新而更新。
虽然网络层数越深能提取的特征更加丰富,但也存在着难训练、优化效果差等问题。为了解决上面提到的问题,发挥重要作用的就是残差学习。ResNet通过短路机制引入残差单元,在恒等映射的基础上避免了由深度网络引起的网络退化问题。不仅可以通过残差学习来提取深层特征,同时还可以将短跳跃连接和注意力机制相结合,提取出深层的高级语义信息来引导人物外观特征图的形成,使得人物外观在姿态转换的过程中不会产生巨大的形变。以下有两个把残差块嵌入在注意力模块里的好处:(1) 通过在外观信息分支做短跳跃连接,使得注意力因子的影响范围得到可控,在生成网络面对形变大的姿态转换场景时可以更好地保留特征。(2) 通过把外观信息经过注意力提取后的通道特征叠加到外观信息上,对引导的姿态提供一个反馈信息,起到一个修正作用。图3为本文提出的一个嵌套残差注意力模块的结构图。其中,conv为若干层卷积操作,concat为特征图在通道层进行叠加操作。
此外,传统的残差模块将ReLu函数 [16] 作为激活函数,当它的输入值为负的时候,输出始终为0,其一阶导数也始终为0,这样会导致神经元不能更新参数,这种现象叫做“Dead Neuron”。为了避免“Dead Neuron”的发生,本文将内部的残差块激活函数替换为泄漏型修正线性单元Leaky ReLU函数。Leaky ReLu函数的表达式如下:
(3)
该函数的输出对负值输入有很小的坡度,由于导数总是不为零,这能减少静默神经元的出现,允许基于梯度的学习,解决了ReLu函数进入负区间后神经元不能学习的问题。

Figure 3. Nested residual attention module
图3. 嵌套残差注意力模块
目前的姿态转换方法中,大多通过第二次训练做一个加强模块来增强人物图像中的衣服纹理,将姿态和人物外观看作两个单独的问题,是忽略了它们之间的相关性,在这样的基础上人物外观信息的生成和姿态的正确转换很难达到一个优势的平衡点。而在本文提出的人物图像姿态转换网络的生成过程中,把这两个分支通过注意力机制联系在一起,随着每一个嵌套残差注意力模块的更新,经过Sigmoid函数生成大小为
的注意力图,
为特征图空间大小,得到的权重值范围在[0, 1],使得像素注意力权重在目标区域越接近1,在非目标区域越接近0。网络在局部上可以把源人物图像中的像素块转移到目标姿态中对应的位置上去,在全局上可以学会人体各个部位的连接关系,从而推理出因视角局限性而未观察到的外观信息,被分配到权重越大的像素在生成过程中得以保留,权重越小的像素则会被逐步清除。
经过多个嵌套残差注意力模块后,再通过连接2个反卷积层恢复图像的分辨率,使其和输入图像保持同样的大小。
3.2. 目标函数
L1最小化绝对误差损失虽然能以清晰的边缘重建为代价函数去除斑点和伪影,但是基于像素级的损失函数无法判断生成图像和真值样本的相似性,比如两张一样的图像,只不过在位置上有一点点偏移,这两张图像得到的损失值可能会非常大。为了让生成图像与网络的输入条件更匹配,根据条件生成对抗网络(conditional Generative Adversarial Network, cGAN) [17] 通过改变标签得到条件相关的生成图像的原理,把对抗损失里的概率表达转换成条件概率来训练判别器使得生成器生成的图像越接近目标条件。
生成网络的目的是将目标姿态的人体解析图迁移成人物图像的风格。Gram矩阵是特征图之间的偏心协方差矩阵,通过计算各个维度的内积来度量它们的互相关程度。对于特征图来说,浅层网络提取出的是局部的纹理细节特征,深层网络提出的是更抽象的轮廓、大小等信息,由这些向量计算出来的Gram矩阵可以把图像特征之间隐藏的联系提取出来,也就是各个特征之间的相关性高低。因此,本文引入了Style Loss来比较每一层特征图的Gram矩阵判断生成图像和真值图像的风格的相似性。Gram矩阵通过以下公式来计算:
(4)
其中,
分别指的是相对应的通道值和空间值,
指的是图像经过VGG-16 [18] 特征提取网络得到的第j层中间层的特征图。通过比较每一层特征图的Gram矩阵,再计算它们之间的欧式距离,最后将不同层得到的损失相加得到最后的Style Loss。风格损失通过下面公式计算得到:
(5)
4. 实验及其分析
4.1. 数据集
本文实验使用的数据集为香港中文大学多媒体实验室提供的多类别大型服装数据集DeepFashion中的子集‘In-shop Clothes’,其中包含52712张人物图像,7982种衣服商品,本文将48674张图像划分为训练集,剩余的4038张图像作为测试集。训练时,batch_size设置为8,Epoch设置为800,生成器和判别器均使用Adam优化器。实验部分从定性和定量两个方面评估所提出的嵌套残差注意力模块方法的有效性。
4.2. 评价标准
由于本文做的是生成任务研究,通过肉眼观察可以评判出生成图像的质量好坏。另一方面,本文从数值定量方面比较了之前提出的2种比较主流的人物图像姿态转换算法,包含基于编码控制的PG2算法 [6],和基于跳转连接变体的Deform算法 [8]。
本文使用的评价指标为衡量生成图像质量中常用的结构相似性(Structural Similarity Index Measure, SSIM) [19] 和起始分数(Inception Score, IS) [20]。SSIM指标比较了生成图像和目标图像的亮度、对比度以及结构,SSIM值越大和目标图像结构越相似。SSIM值可通过下面公式计算:
(6)
其中,
和
分别代表图像x和图像y的均值,
和
分别代表它们的方差,
代表图像x和图像y的协方差,
和
为两个取决于图像像素值的随机常数,避免除零。
IS指标比较了生成图像和目标图像的清晰度和多样性,IS值越大,意味着生成的图像质量越高。IS值可以通过下面公式计算:
(7)
其中,x为生成图像,y为生成图像输入到分类网络中得到的向量,DKL为对
和
求KL散度。
4.3. 定性分析
图4所示是本文提出的嵌套残差注意力模块数量从1到9分别得到的注意力热力图。可以看出从AM1到AM3的时候由于网络比较浅,能学习到的语义信息还不能描述出具体的人体轮廓。从AM4到AM6的时候,能看出靠近目标姿态的区域权重逐步增大,网络可以通过残差注意力模块正确学习到姿态信息,并和人物信息相融合。从AM6到AM9的时候,能看出区域轮廓从点线到块的转变,此时通过掩膜提取得到的是有连接性的语义信息,这意味着姿态转变过程中,覆盖区域的像素可以直接迁移过来,而不属于目标姿态中的区域则会为赋予低权重。说明嵌套的残差注意力模块在深度网络的训练效果下可以取得有效的注意力提取。
从图5可以看出,不管是从正面到侧面、侧面到正面、反面到正面,以及姿态转换的视角远近不同,本文提出的人物图像姿态转换方法都可以较好地保留人物的外观细节特征(脸部和头发),还有衣服的完整形状和人体的正确轮廓,同时可以恢复目标姿态中在源图像被遮挡或者覆盖的像素,接近真值样本。

Figure 5. Qualitative comparison with other methods
图5.与其它方法的定性比较
4.4. 定量分析
表1为各人物图像姿态转换算法的SSIM值和IS值的对比,可以看出本文算法相较之前的方法均取得了最高的SSIM值和IS值,SSIM值比之前最好的分数提高了3.84%,IS值比之前最好的分数提高了4.02%。由此可以看出,本文提出的方法生成的图像不仅清晰度高,不容易失真,并且和目标图像具有更相似的结构。

Table 1. Comparison of SSIM and IS values with other methods
表1. 与其它方法的SSIM和IS值的比较
表2对比了各人物图像姿态转换算法的推理时间,可以看出本文算法的推理时间最短。本文提出的算法是端到端训练,结构简单,具有轻量级嵌入的优势,不同于之前的一些方法需要经过两阶段coarse-to-fine的合成,能很好地满足有实时性要求的应用场景。

Table 2. Comparison of inferencing time with other methods
表2. 与其它方法的推理时间的比较
综上所述,定量分析的结果与定性分析结果一致,充分表明本文算法的优越性,在姿态转变较大的场景中能较好地应对遮挡和外观形变等挑战。
5. 结束语
本文针对现有的人物图像姿态转换算法生成的人物图像清晰度不高,人物外观容易变形和产生伪影等问题,提出了一种嵌套残差注意力模块,集合了残差模块和注意力模块原本的优势,通过姿态信息分支的引导提取注意力掩膜改变外观信息分支中空间特征的权重,使生成网络具有捕捉图像分布中大范围变化的能力,实现平缓的姿态转换。在公开数据集上测试表明,从定性和定量两方面本文算法都很好地解决了上述提到的问题,本文提出的姿态转换算法相比其它主流算法能够生成更清晰、更精确以及保留更多细节信息的人物图像,生成的图像结构分布也与真实分布更为接近。