参考文献为:
Beyond Face Rotation: Global and Local Perception GAN for Photorealistic and
Identity Preserving Frontal View Synthesis
文章对GAN网络进行改进,生成网络包含两个网络,一个用于局部特征生成,另一个用于全局特征生成,网络结构如下:
如图所示,利用一个Local Pathway网络学习人脸的局部特征,如眼睛,,嘴巴,鼻子,网络输入为侧脸图像的四个局部块,这四个局部块分别为包含左,右眼睛,嘴巴,鼻子的块,作为Local Pathway网络的输入,输出为正面的眼睛,,嘴巴,鼻子.
Landmark Located Patch Network
四个局部块提取方法为,利用人脸特征点,分别求左,右眼睛,嘴巴,鼻子的中心,并以其中心,截取图像块,这样对于每张输入图像,就得到四个图像块Gθli,i∈0,1,2,3.将四个块分别输入local pathway中,输出为正面的块特征,即正面的眼睛,,嘴巴,鼻子.将输出块融合,得到一个人脸五官图像.
利用一个Global Pathway网络学习人脸的全局特征,如人脸轮廓等底层信息,网络输入为整张侧脸图像,输出为与输入大小相同的图像,最后将局部和全局特征结合,得到生成图像(正脸图像).
之后将生成图像输入判别网络(Discriminator Network).
生成网络损失函数为,在原有交叉损失熵Lcrossentropy的基础上,加上合成损失函数Lsyn:
损失函数Lsyn由四个损失函数组成,分别为,Pixel-wise Loss(像素级损失函数),Symmetry Loss(对称损失函数),判别网络损失函数,身份保持损失函数.下面分别介绍几种损失函数的构造.
生成的图像Ipred与输入图像Igt要尽量相似,采用L1 loss,
Symmetry Loss的目的是使得生成图像左右对称,即我们认为生成的人脸左右是对称的,
判别网络用于区分输入图像是真实的正脸图像IF还是合成的正脸图像GθG(IP),损失函数为:
式中,IP表示输入侧脸图像,GθG(IP)为生成图像.
在构造损失函数的时候,引入身份信息.为了使合成的图像与输入图像为同一个人,使用light-CNN用于身份识别,
将真实正脸图像,生成图像分别输入Light CNN中,我们希望真实图像,与生成图像的Light CNN的最后2层的输出,尽量相似,即构造身份保持损失函数:
式中,i表示Light CNN的倒数i层,w,h为Light CNN的倒数i层的输出feature map大小.
Light CNN可以用大量的身份分类训练数据训练好,这样Light CNN就可以识别身份信息.
综上所述,总的损失函数为:
global pathway:
local pathway:
w×h为提取的眼睛,,嘴巴,鼻子块大小.local pathway网络的输入,输出为w×h×3的图像块.
在global pathway,local pathway的卷积层中,都采用residual block.
使用MS-Celeb-1M数据训练Ligth CNN,并使用MultiPIE进行fine tuning.
TP-GAN测试数据为MultiPIE,训练batch size=10,1天,学习率为0.0001.输入图像大小为128×128×3,其他参数值为:
α=10−3,λ1=0.3,λ2=10−3,λ3=3×10−3
作者对比了没有local pathway网络的效果,标记为P.同时对比了移除一个损失函数,如Lip,Ladv,Lsym的效果.识别效果如表4.
正脸恢复实验效果如图9.
由表4可知,偏转角度越大,local pathway与身份损失函数Lip越重要,即local pathway能够很好的恢复旋转特征.同时对称损失函数,判别损失函数也可以帮助改善识别效果.