谭台哲,钟晓静,杨 卓,2,刘 洋,2,黄 丹,2
1(广东工业大学 计算机学院,广州 510006)2(广东工业大学 交互与视觉信息研究所,广州 510006)
近几年,针对人物图像展开的应用受到越来越多的关注,比如图像编辑、电影制作、行人重识别和虚拟换衣等.人物图像中的姿态转换任务是目前研究的一个热点问题,根据提供的姿态节点生成具有目标姿态的人物图像.目前的人物图像姿态转换算法可以分成基于几何的方法和基于深度学习的方法.
基于几何的方法引入人体表面的几何约束,通过对人体的3D建模和映射实现姿态转换.Neverova等人[1]提出用DensePose[2]来表示人体的各个部位,在UV坐标空间对人体表面的像素进行插值和修复然后映射回图像空间.Zanfir[3]等人提出根据拟合3D人体模型将模型的顶点分为可见和不可见部分,对于可见的部分直接映射到目标姿态图像上,不可见的部分通过神经网络来修复.这类方法往往存在着计算代价昂贵,拟合结果不够精确的问题.
随着深度学习的不断发展,由生成器和判别器组成的生成对抗网络(Generative Adversarial Network,GAN)[4]能生成越来越逼真的图像,被广泛应用于图像翻译和图像合成等问题中.Ma等人[5]首先提出用两阶段的模型来实现人物图像的姿态转换,但两阶段都是相似的编解码器结构,难以处理复杂的人物外观信息.随后Ma等人[6]在之前的基础上将图像的前景、背景和人物的姿态分解和编码成不同的特征,通过一定的组合方式再把它们结合在一起生成目标姿态人物图像,虽然提升了对生成过程的编码控制,但是最后生成的图像质量并不高.Essner等人[7]将VAE[8]和U-Net[9]结合来分解人物图像的外观和姿态,然而,因为外观特征往往十分复杂,很难用固定长度的潜码去表达.Siarohin等人[10]通过提出一种神经网络中跳跃连接的变体来解决因姿态不同造成的人物外观的像素错位,这种方法不适用于形变较大的姿态转换.Zhu等人[11]将关节点当作姿态引导信息来提取注意力,缺乏对人体各个部位的精准控制.
由于人体是非刚性的,在姿态变换的过程中可能会引起合成图像中人物的变形和伪影的产生.同时,在不同视角下的不同姿态的人物外观有很大的不同,这使得生成网络必须具有捕捉图像分布中大范围变化的能力和推理被遮挡区域像素的能力.另一方面,服装的纹理和人物外观的细节在生成过程中很容易丢失.因此,目前的人物图像姿态转换任务还存在着许多挑战.
本文提出用人体解析图作为姿态引导信息,它的生成代价比DensePose要小,又能提供比骨骼关节点更多的人体信息.先以关节点为引导,提出一种将原始姿态的人体解析图转换为目标姿态的多尺度特征融合编码解码网络,避免了直接生成复杂的人物外观纹理信息.提出一个预训练网络和可训练网络组合的特征提取网络在第2阶段中充分提取人物外观信息.设计出一个多任务生成网络,用一个变形模块将生成的光流下的人物像素坐标偏移值对原图像进行弯曲,同时通过一个融合模块将得到的粗糙结果和弯曲后的图像进行融合,有利于人体各个部位的结构性平滑转换,可以对未观察到的像素进行迁移和推理,达到增强有用信息和抑制无用信息的作用.通过实验证明,本文提出的方法可以生成更清晰的目标姿态人物图像,保留衣服的纹理细节信息.
姿态估计的目的是描绘出人体形状,从2D上将关节点表述为回归的问题到3D上将人体像素映射到肢体的三维曲面,从大致的肢体连接到细致到手指关节,姿态估计算法不断发展,与之相关的人物图像技术也应进一步更新.
人体解析图是将人体及其着装的语义信息分解成多个部分.LIP[12]数据集是2017年由中山大学Fashion团队提出的包含了超过50000张注释过的人物图像的数据集,这些图像是从具有广泛视角和复杂背景的场景中捕获的,其中有19个像素级的语义标签,分别为脸、上衣、头发、左手、裤子、右手、左脚、右脚、左鞋、右鞋、帽子、外套、手套、袜子、眼镜、裙子、衬衫、连裤衫和围巾.通过将人物图像转换为人体解析图可以只关注人体的各个部位的局部联系,避免外观纹理信息带来的干扰,同时又能得到更具体的轮廓信息和衣服形状信息.图1为同一幅人物图像分别用OpenPose[13]提取得到的人体姿态节点图和用LIP提取得到的人体解析图.
图1 姿态图
之前的大部分方法将姿态节点作为目标姿态引导信息仅仅考虑了人物的大概形态,而忽略了人体各个部位的具体轮廓.由于现实生活中人也有高矮胖瘦之分,通过引入人体解析图作为辅助信息可以有助于生成网络更精准地构建出具象的肢体信息.
由于在这个阶段不需考虑人物外观和衣服纹理信息的形成,为了避免更多的计算量,本文提出通过一个架构简单的编码解码网络来生成具有目标姿态的人体解析图,下采样编码阶段是通过连续的堆叠池化层或步长大于1的卷积层来实现图像特征的提取,上采样解码阶段是通过插值方法或者步长大于1的反卷积层来实现图像分辨率的恢复.
在由卷积神经网络构成的模型中,网络层数越深感受野越大,语义信息表征能力越强,但是特征图的分辨率低,空间几何信息细节缺乏;网络层数越浅感受野虽然小,但是有丰富的空间几何信息.不同尺度的特征信息都有重要意义,通过多尺度空间特征的融合有利于网络学习全局的语义信息和局部的连接关系.把多尺度特征融合引入编码解码网络中,网络结构如图2所示.
图2 多尺度特征融合编码解码结构
图像的原始大小为W和H,将原姿态节点转换成热力图P1∈RH×W×18、目标姿态节点热力图P2∈RH×W×18和LIP对原人物图像提取得到的人体解析图I∈RH×W×3在通道层做concat操作联结在一起输入至网络,经过4次下采样编码操作.为了恢复生成图像的分辨率大小,考虑到反卷积操作容易引起“棋盘”现象,因此采用双线性插值来提高分辨率.双线性插值是根据现有的点来计算要插入的点,不具备反向传播过程中的学习能力.通过在插值之后做不改变特征图大小的SAME卷积操作,降维的同时也可以使网络具有学习权重的能力.
根据图3所示,通过双线性插值,所求点P的像素值可以通过公式(1)求得:
图3 双线性插值
f(x,y)=f(Q11)(x2-x)(y2-y)+f(Q21)(x-x1)(y2-y)+f(Q12)(x2-x)(y-y1)+f(Q22)(x-x1)(y-y1)
(1)
同时,由于批归一化层(BN层)在一定程度上减弱了模型的泛化能力,在训练数据集和测试数据集两方统计数据相差较大时使用 BN层可能会生成伪影,因此在上采样解码阶段去掉了BN层[14].除了最后一层,每一个上采样解码得到的特征图都融合了编码阶段时相同大小的特征图信息,有效克服了低级特征的语义性不足和高级特征的空间信息缺陷带来的双重问题.
通过上一阶段提出的多尺度特征融合编码解码网络生成了具有目标姿态的人体解析图,在这一阶段中将人体解析图作为输入条件,用来引导人物图像的姿态转换.
在这一阶段,生成网络需要渲染出人物的外观和衣服的纹理.受到AdaIn[15]风格迁移方法的启发,本文设计出一个组合了预训练网络和可训练网络的特征提取网络,一个在COCO数据集[16]上预训练过的VGG网络[17]已经学习过各种各样的纹理细节,拥有很好的泛化能力.但是仅仅靠一个固定了参数的网络来提取复杂的外观特征是不足够处理形变较大时的图像分布变化的,因此还要将它和可训练的神经网络组合起来,可以提高生成网络的鲁棒性及应对姿态遮挡等问题的挑战.
图4 组合特征提取网络结构
多任务生成网络的各个分支共享组合特征提取网络的最后一层输出的级联特征图信息,通过衍生出不同的分支单独训练,一方面可以减少计算量,另一方面相关联的任务可以起到彼此监督的作用,使网络收敛趋于缓和不会突然跳跃.理论上,网络层数越深虽然能提取更加丰富的特征,但也存在着难训练、优化效果差等问题,受到深度残差网络ResNet[18]的启发,把残差学习引入到网络中可以有效避免网络退化等问题.多任务生成网络结构如图5所示,每个分支通过6个残差块提取更深层的语义信息,每个残差块由两个叠加的卷积层,BN层,leaky ReLu 激活函数构成.每个分支的残差块最后都连接卷积核数量不同的反卷积层,用来生成多任务的结果.
图5 多任务生成网络结构
根据FlowNet[19]的启发,通过神经网络可以拟合物体运动时的光流场,从而得到像素点在运动过程中的每一帧的对应关系.人改变姿态的过程也是一个运动过程,不同姿态上的点应该是一一对应的.本文用一个分支预测原图像弯曲到目标图像产生的大小为H×W×2的光流图f,意味着每个像素点在光流的作用下产生的坐标偏离值,将其归一化到[-1,1]之间.对于图像上的每个点f(x,y)来说,令瞬时变化量为(dx,dy),变化后点的坐标为f(x+dx,y+dy).变形模块根据光流图f中得到的每个点的坐标偏离值,从原人物图像M的对应位置进行采样,通过双线性插值填充到目标图像的指定的位置上.通过模拟一个光流变形的过程,能保留姿态变换过程中人物边缘的细节信息.
(2)
其中,⊙为像素的点乘.
图6 判别器结构
在生成目标姿态的人体解析图的训练过程中,虽然 MSE 损失函数的收敛性较好,但是它对异常点的加权通常较大,使其误差较大的项相比于误差较小的项影响更大,而L1绝对误差对于异常值则更加鲁棒,因此本文选用L1绝对误差在这一阶段进行有监督训练.
在生成目标姿态的人物图像的训练过程中,总的损失函数如公式(3)所示:
l=100·lflow+10·lgan+lper
(3)
由于缺乏真实的数据真值对预测得到的光流进行判断,将FlowNet从真值人物图像提取得到的光流作为光流的真值样本通过L1损失计算lflow.
感知损失[21]将生成问题看作变换问题,将卷积神经网络提取出的特征图看作是目标函数的一部分,通过比较待生成的图片经过特征提取网络的特征值和目标图片经过特征提取网络的特征值,使它们在语义上更加相似.在实验过程中,感知损失对最终结果的形成发挥了最重要的作用.感知损失lper通过下面公式计算得到:
(4)
为了使生成图像更符合真值图像的数据分布,引入了生成对抗损失函数lgan.
(5)
其中,D为多尺度判别器,G为本文提出的组合特征提取网络和多任务生成网络结合起来的生成器.
本文实验硬件系统为Ubuntu 20.04.1 LTS,使用两块NVIDIA TITAN XP GPUs 进行训练,实验环境为python3.6、pytorch1.1.0和CUDA10.0.
实验使用的数据集为香港中文大学多媒体实验室提供的多类别大型服装数据集DeepFashion中的子集′In-shop Clothes′,本文将101966对图像划分为训练集,8570对图像作为测试集.训练时,第1阶段和第2阶段的batch_size均设置为12,Epoch均设置为600,生成器和判别器均使用Adam优化器.
图7展示了第1阶段生成的部分测试结果,可以看到,本文提出的多尺度特征融合的编码解码网络在转换人体解析图姿态过程中可以较好地保留肢体的轮廓,生成过程中不会破坏各部位间的语义连续性.
图7 DeepFashion上的第1阶段测试结果
图8展示了本文所提出算法的部分消融实验结果,可以看到,解析图的姿态引导有利于生成更加完整的人物外观轮廓.变形模块由于引入了光流变形,通过从原图像中采样得到的像素点会比生成得到的更加清晰,有利于保留姿态变换过程中的边缘细节,比如衣领.融合模块有利于纹理的增强,可以较好地融合特征级和像素级的语义信息,比如衣服上的纹路.
图8 消融学习
通过解析图引导的多任务生成网络在姿态转换过程中可以将像素点自适应地对应到指定区域,能够较好地应对形变较大引起的模糊和伪影问题,对于头发等精细信息也能在生成过程中充分保留.
本文比较了4种主流的人物图像姿态转换算法,包含基于编码控制的PG2算法[5],基于VAE和U-Net的VUNet算法[7],基于跳转连接变体的Deform算法[10]以及基于注意力引导的PATN算法[11].为了使比较结果更加公平,实验在所有测试方法中均使用相同的数据集进行训练.各人物图像姿态转换算法生成的对比结果如图9所示.可以看出,本文提出的算法生成的人物图像质量优于其它几种算法,最接近测试样本真值.
图9 DeepFashion上的定性比较结果
本文使用的评价指标为衡量生成图像质量中常用的结构相似性(Structural Similarity Index Measure,SSIM)[22]和起始分数(Inception Score,IS)[23].
SSIM指标比较了生成图像和目标图像的亮度、对比度以及结构,SSIM值越大,意味着生成图像失真程度越小,和目标图像结构越相似.SSIM值可通过下面公式计算:
(6)
其中,μx和μy分别代表图像x和图像y的均值,σx和σy分别代表它们的方差,σxy代表它们的协方差,C1和C2为常数.
IS指标比较了生成图像和目标图像的清晰度和多样性,IS值越大,意味着生成的图像质量越高,多样性越多.IS值可以通过下面公式计算:
IS(G)=exp(Ex~pgDKL(p(y|x)‖p(y)))
(7)
其中,x为生成图像,y为生成图像输入到分类网络中得到的向量,DKL为对p(y|x)和p(y)求KL散度.表1为各人物图像姿态转换算法SSIM值和IS值的对比.
表1 各人物图像姿态转换算法SSIM值、IS值对比
大多数主流的生成图像算法会通过用户学习来更充分地验证算法的有效性.在本文的用户学习实验中,通过向50名随机用户展示55组图像样本,每一组样本包含所提出算法和其它4种主流算法根据目标姿态生成的人物图像,并且将真值样本提供给用户作为参考,让用户在5张图像中选出最好的一张,对55组的结果求平均值,百分比越高说明用户选择该算法的倾向性越大,表2为各人物图像姿态转换用户学习.
表2 各人物图像姿态转换用户学习
综上所述,相较于其它主流算法,本文所提出的算法能够更好地生成高质量且清晰的目标姿态的人物图像,在姿态转变较大的场景中更好地应对遮挡和外观形变等挑战.
为让人物图像在目标姿态信息的引导下生成更精准的姿态转换人物图像,本文把姿态转换任务分解成两阶段.通过多尺度特征融合的编码解码网络生成目标姿态的人体解析图,通过多任务生成网络生成目标姿态的人物图像.将人体解析图作为引导控制人体部位的条件,进一步提升了生成网络对于全局信息的控制.本文在DeepFashion上进行了一系列的实验比对,可以看出本文算法性能略好一些,所提出的变形模块和融合模块对最终高质量结果的形成发挥了重要作用.后续将进一步探索姿态相关性和解析图的关系,以及把本文提出的变形模块和融合模块运用到更多的生成图像任务中.