基于自编码器模型的人脸替换算法与视频人脸替换系统*

2022-11-04 02:23刘译键
北京电子科技学院学报 2022年1期
关键词:编码器关键点人脸

刘译键 宁 宁 金 鑫

北京电子科技学院,北京市 100070

引言

在视频合成、虚拟现实、隐私保护等领域,视频人脸替换有着广泛的应用价值。 视频人脸替换致力于将视频中目标人物的脸替换为参考人物的脸,同时保持目标人物面部姿势、表情、光照、背景等条件不变。 目前,关于人脸替换技术的研究取得了日新月异的成果,但该技术的难点依旧是如何提取并自适应地重组两个图像的身份和属性特征。 早期的人脸替换技术基于简单的计算机图形学理论知识,其存在效率低、通用性差的缺点。 现在主流的人脸替换算法基于深度学习技术,图像的生成效果和效率都取得了巨大的进步,但是,当人脸图像处于复杂的光照和肤色条件下时,人脸替换的效果并不能令人满意,替换后的图像往往有明显的伪影。

本文提出了一种基于自编码器模型的人脸替换算法,针对目前人脸替换算法像素低的缺点,在原始的Deepfakes 算法的基础上对网络结构进行改进,在提升生成图像质量的同时,使人脸替换后的图像与背景融合更自然。 在基于自编码器模型的人脸替换算法的基础上,本文设计并实现了视频人脸替换系统。 针对视频人脸多样性和背景复杂性,半自动化视频换脸系统实现了视频转图片、人脸检测、人脸对齐、泊松融合、肤色转换、光照重渲染等操作流程,使视频实现精准的人脸替换。 本文示例中所用的公开人物和影视作品均不涉及隐私,均可公开使用。

1 基于自编码器模型的人脸替换算法

为解决人脸替换算法生成图像像素低、人像与背景融合不匹配等问题,本文在原始Deep-Fakes[1]基础上改进网络结构,提升生成图片质量。

自编码器模型对输入的目标图片和参考图片进行编码,目标图片和参考图片的编码器是同一个,该编码器学习两张图片的共性特征。 而目标图片和参考图片各有一个单独的解码器,用以学习各自的个性特征。 目标人脸经过编码器处理后,再使用参考人脸的解码器处理,经过以上操作,得到的人脸图像的表情属性就会保持目标人脸的表情属性,而新的人脸图像的五官属性却会变为参考人脸的五官属性,公式表达如下:

X′ =Decoder(Encoder(Shuffle(X)))

Loss =L1Loss(X′-X)

模型结构如图1.1。

图1.1 换脸模型网络结构

可以看到,模型训练模块主要有编码器模块、共享模块、解码器模块以及判别器模块。 本文在原始DeepFakes 网络结构基础上增加了更多特征提取层和不同的堆叠顺序,DownScale 在编码器中缩小原图特征,同时,我们也在原始基础上增加了Space2Depth 的操作。

图1.2 原始编码器

UpScale 在共享层和解码器中对特征尺寸进行放大,采用pixelshuffle 进行上采样,消除伪影和棋盘效应。 采用 Resnet 结构的 Identity shortcut connection 的思想, 构建了类似的ResBlock 结构。 训练时先对图像进行人脸对齐,原编码器仅有一个DownScaleBlock,内含四个DownScale 结构,卷积核为5,卷积核不进行膨胀。 本文编码器有四个DownScaleBlock,每个DownScaleBlock 有四个DownScale 结构,其卷积核分别为3,5,5,7,第三和第四块DownScale 结构的卷积dilation 为2。

编码器生成的隐空间特征向量进入共享模块,经两个全连接层、reshape 层和upscale 层后转换为特征图,分别输入不同的解码器。

人脸对齐后的图像的解码模块的解码器有三个相同的解码结构,原解码结构仅有一个DecoderBlock 和一个Conv2D。 本文解码器中有一个Conv2D 和两个DecoderBlock 结构,并在DecoderBlock 之间进行 UpScale 和 LeakyReLU操作。

图1.3 改进后的编码器

图1.4 共享模块

图1.5 解码器结构

在鉴别器中,训练的损失函数增加对抗损失和感知损失,感知损失更好地保持人脸的拓扑结构,生成图像更加清晰。 最后对生成的面部图像进行替换,利用可逆性,将上一步生成的人脸以及对应的mask 图像调成之前的状态。

2 视频人脸替换系统

2.1 设计思路

在视频合成、虚拟现实、隐私保护等领域,视频人脸替换有着广泛的应用。 但由于视频中会有一个场景中有多个人物,以及背景十分复杂的情况,使得实现视频人脸替换的难度较大。 针对以上问题,在基于自编码器模型的人脸替换算法基础上,提出并设计了视频人脸替换系统。 因漏检而无法标注关键点的视频帧会有无法实现换脸的问题,所以设计了视频人脸辅助标注工具,采用手动标注并插值的方法实现人脸标注。 最后通过预处理(视频转图片、人脸检测和对齐)、基于编码器的人脸替换模型的网络和模型训练、人脸转换、后处理(图像融合和光照融合)、视频合成五个步骤,实现精准的视频人脸替换。 视频人脸替换系统图如图2.1。

图2.1 视频人脸替换系统图

2.2 实施方法

2.2.1 预处理

(1)视频转图片

视频转图片的过程,使用开源的多媒体工具FFmpeg 工具。 FFmpeg 可以记录并转换音频视频,移植性高,可以在各种环境、机器体系结构和配置下,跨不同操作系统编译运行。 将视频分解成视频帧时,命令为:ffmpeg -i video.mpg image%d.jpg,将图片合成视频时,命令为:ffmpeg -f image2 -i image%d.jpg video.mpg。

(2)人脸检测

人脸检测和人脸对齐的精度对后续人脸替换有着至关重要的影响。 人脸检测算法是在图片中检测和标注人脸的位置。 本文用MTCNN[2]算法来进行人脸检测。 MTCNN 采用三个CNN级联的方式,同时完成人脸检测、边框回归和人脸特征点定位,方便人脸重构,算法效率高,如图2.2。

图2.2 MTCNN 级联网络

(3)人脸对齐

人脸检测之后,基于人脸68 个关键点,由人脸图像自动确定人脸特征点的过程被称为人脸关键点定位。 人脸的68 个关键点如图2.3。

图2.3 人脸68 个关键点

定位算法是将人脸的纹理特征与各特征点之间的位置约束结合,输入的是图片,输出的是人脸关键点的集合。 本文采用的定位方法是FAN[3]人脸对齐网络。 FAN 网络是一个base 的头网络堆叠四个hourglass 构建的人脸对齐网络,其中存在于每张图中的矩阵块被替换为新的分层并行多尺度结构。 FAN 人脸对齐网络有FAN-2D 和FAN-2D-to-3D 两部分,FAN-2D 部分在 Heatmaps 之前, FAN-2D-to-3D 在Heatmaps 之后, 基于人体姿态估计架构HourGlass,先得到人脸的2Dheatmaps,之后将人脸的2D 面部坐标和输入图像输入 Face Alignment depth Network 得到关键点坐标的深度信息,这也就是对应的面部3D 坐标。 FAN 人脸定位网络的模型结构图如图2.4。

图2.4 FAN-2D 以及FAN-2D-to-3D 模型结构

检测并得到人脸的关键点坐标后进行人脸对齐操作,将人脸的特征点与标准人脸特征点坐标对比,计算得到与标准脸特征点的相似变换矩阵,基于平移、缩放、旋转等操作后得到标准人脸图像。 通过以下变换将FAN 人脸定位网络得到的68 个关键点坐标转换为标准的五点坐标。

对齐处理利用Umeyama 算法实现,相似矩阵是由平移、缩放、旋转操作组合计算得来,如下为相似变换公式:

依据相似变换矩阵T 对x,y 进行变换,并将人脸图片裁剪成合适尺寸,方便下一步的模型训练。

2.2.2 视频人脸辅助标点工具

(1)问题背景

FAN 人脸定位算法在静图[4]上的效果很好,但在动态模糊视频中是无法得到稳定准确的效果的。 在视频人脸图像关键点标注时,有些人脸图片是无法直接用算法进行准确标注的,例如一些面部姿势较大的图片以及动态模糊的人脸图片。 针对此问题,本文提出了基于时间维度结构一致性的人脸特征点检测方法。 具体操作是,手动标注一张图片的关键点,再通过插值方法将其扩展到后面的帧上,这样可以高效地解决漏检的问题。

视频人脸特征点检测是基于静态人脸图像特征点检测实现的。 由于视频中的模糊图片是由于视频中人物运动速度和定格速度不匹配导致的,视频中的人脸图像会缺少像面部轮廓或者边缘这些结构信息,那么即使是最先进的人脸特征检测算法也是无法对其准确捕捉其中的人脸结构的。 但是,由于视频抽帧中,是保持了人脸结构在时间上的连续性和一致性的,这种性质为使用半自动人脸关键点插值方法,利用前面帧的结构信息预测后面帧的结构信息提供了前提条件。

(2)视频人脸关键点插值方法

对于检测不到关键点的人脸,手动标注68个关键点。 但是考虑到手动标注68 个关键点的性能损耗,本文先对一张图标注5 个关键点,然后利用这些点的坐标推导分别代表哪一个部位,当然,并不是所有图的关键点标注部位和顺序都是一样的,但是人脸特征点定位算法可以根据标注的关键点一次得到所需要的关键点,然后推广到68 个关键点。 使用OpenCV 的CVAT 进行剩余视频帧关键点插值。 假设给定了前一帧的面部边框,通过预测器计算出插值并假设是线性插值来预测下一个面部边框。 基于此,设计了一个由标注工具、插值预测器、人脸特征点检测网络为有机整体的框架,如图2.5。 具体流程是,插值预测器从前一帧的面部结构预测当前帧的结构,得到当前帧的面部结构后,传给人脸关键点检测网络,给当前帧标注人脸关键点,然后再反馈给插值预测器进行下一帧预测。

图2.5 视频人脸特征点检测架构

插值预测器对有机整体是至关重要的,它利用前t-1 和t-2 的面部关键点预测当前时刻t 的面部关键点位置。 不考虑人脸的面部纹理,人脸结构是有语义意义且清晰明确的人脸表征,而两面部结构之间的运动比单纯两个图像之间的运动更容易获取,故插值预测器在面部结构层面进行计算预测。 人脸的面部结构有坐标、边缘、三维模型等表达方式,由于坐标在不同的面部姿势下是不稳定的,会随着不同的表情和姿态变化,给人脸运动增加了噪声干扰,故不利于用来面部结构预测;而三维模型包含丰富的信息,但是数据的获取是有难度的,综上,选择人脸边缘结构来进行插值预测,在已有研究[6]基础上,由前面两个面部边缘结构Et-1和Et-2,由计数器H 预测两张图片之间的信息流F,再将预测的信息流F和Et-1和Et-2传递给当前面部边缘Et:

人脸特征点检测网络可以是特征点检测的任何网络,无论采用何种人脸特征点检测网络,手工标注特征点后都能准确地预测当前时刻人脸的关键点,得到的准确的面部结构信息同时为下一张人脸的检测提供更好的信息,形成一个良性循环。

2.2.3 后处理

1.泊松融合

图2.6 关键点插值后被检测到并被替换的视频帧

预处理后,目标人脸和参考人脸完成了人脸检测和人脸对齐,接着将对齐后的目标人脸和参考人脸输入基于自编码器模型的人脸替换模型中训练模型,自编码器模型会将目标人物的人脸转换为参考人物的人脸,同时保留住目标人脸的表情、姿势等面部细节。 人脸替换完成后,进入后处理,根据转换后人脸的特征点坐标进行反变换,将换脸图片贴回原背景中。 为了实现浑然一体的效果,就需要进行图像融合操作。 图2.7 为泊松融合的符号表示。 其计算步骤如下:

图2.7 泊松融合符号表示

(1)设待融合图像g 要融合到背景s 中,通过差分的方法,根据g 的mask 得到ROI,计算ROI 梯度场v,背景图片以及融合图片的梯度场。 融合图片的梯度场是将g 的梯度场覆盖到s的梯度场上。

(2)求解融合图像的散度,也就是待融合梯度场的梯度的导数,即拉普拉坐标。

2. 光照融合与光照重渲染

综合分析主流光照重渲染算法的优缺点,针对人脸替换后的光照不—致问题,本文采用Zhu等人提出的基于3D 的人脸图像重渲染方法[10],来解决复杂光照条件下的人脸外观迁移问题。基于3DDFA[10]的人脸图像光照分析与重渲染算法主要包括以下七个步骤:

步骤一:用3DDFA 对目标人脸图像进行面部重建;

步骤二:估计表观法线和反照率;

步骤三:使用Dlib 检测反照率和人脸图像特征点,并基于ARAP 网格变形方法求出反照率对齐到人脸图像的变换函数,然后使用该变换函数将表观法线对齐到人脸图像;

步骤四:求解泊松方程以对表观法线非人脸区域填充,获得完整表观法线;

步骤五:使用FaceParsing 对人脸图像进行解析,划分出人脸区域和非人脸区域;

步骤六:进行光照分析;

步骤七:对人脸图像进行光照渲染,得到光照重渲染结果图像。

图2.8 光照重渲染算法示意图

3 实验

3.1 实验环境介绍

实验的硬件环境如表3.1。

表3.1 硬件配置表

实验的软件环境如表3.2。

表3.2 软件配置表

3.2 实验结果与分析

分别在四个不同的场景:影视视频、广告视频、访谈视频、跳舞短视频中测试人脸替换算法在视频中的效果。 影视视频中会出现同一张图片中由多个人物的情况,且背景相对复杂;广告视频中的人脸会出现遮挡的情况,且一般光线较暗;访谈视频中人脸多为正面且光线均匀,属于情况比较简单的;跳舞短视频中人物面部会剧烈抖动。

图3.1 为影视视频的人脸替换结果,本文提出的人脸替换方法在多人物场景中实现了精准的目标人物定位,完成了理想的人脸替换。

图3.1 影视视频人脸替换结果

图3.2 为广告视频的人脸替换结果,在远近不同角度的广告视频中,人脸检测阶段未出现漏检,且经过测试,在闭眼和侧脸的等难度情况下,人脸替换方法效果较好。

图3.2 广告视频的人脸替换结果

图3.3 为访谈视频的人脸替换结果,其中人物多为正面,不需要手工标注,就可实现稳定的换脸效果。

图3.3 访谈视频的人脸替换结果

图3.4 为跳舞短视频的人脸替换结果,跳舞短视频中人脸抖动幅度较大且光照复杂,利用本文所述方法进行人脸关键点标注以及后续的泊松融合和光照融合操作,实现了真实自然的换脸效果。

图3.4 跳舞短视频的人脸替换结果

将本文方法与Deepfakes 方法对比,进行定性实验,实验结果如图3.5。 观察分析得到,Deepfakes 方法会丢失图像的重要信息,例如光照信息和图片分辨率;而本文方法较好地保留了光照信息,替换效果也更加自然。

图3.5 与Deepfakes 方法的比较结果

在Facefforensics++[7]数据集上进行定量实验,该数据集提供了Deepfakes 视频换脸结果,对每个视频抽取10 帧,共1000 张人脸替换结果图,与本文方法对比。 为了对比两种方法的性能,基于图像质量、身份保持能力、姿态误差和表情误差四个指标进行对比分析。

关于图像质量评价指标,本实验使用峰值信噪比(PSNR)和结构相似性[8](SSIM)来评价换脸后图像质量以及与原始图像的结构相似度。峰值信噪比的定义如下:

SSIM 基于样本x,y 之间的三个衡量指标:亮度(l)、对比度(c)、结构(s)。 l,c,s 定义如下:

μ 为均值函数,σ 为方差函数。

SSIM 的计算公式为:

SSIM =[l(x,y)α·c(x,y)ρ·s(x,y)′]

身份保持能力采用人脸识别模型CosFace[9]来衡量换脸模型在身份保持上的能力。 将结果图像与原始图像输入预训练人脸识别模型,计算输出特征的余弦相似度,公式为:

姿态误差评价指标采用3DDFA 提取原始图像和结果图像的姿态向量,计算姿态向量之间L-2 距离来衡量人脸生成模型的姿态保持能力,计算方法如下:

表情误差评价指标采用3DDFA 提取原始图像和结果图像的表情向量,算姿态向量之间L-2距离来衡量人脸生成模型的表情保持能力,计算方法如下:

定量实验结果如下表:

方法PSNR↑SSIM↑dID↑dpose↓dExp↓DeepFakes25.890.770.624.233.34本文方法26.220.790.732.873.35

同时,为了得到更真实的评价结果,本文引进人工主观评价,设计了100 张调查问卷,调查用户对换脸结果在身份保持、姿态保持、、表情保持、光照信息保持以及自然度上的评价结果。 每部分满分20 分,对100 分调查结果进行统计,人工评价结果如下表。

方法身份保持↑姿态↑表情↑光照信息↑自然度↑总分↑DeepFakes12151391261本文方法141615161879

综上实验结果表明:本文方法是优于原始DeepFakes 方法的。

4 结论

由于目前人脸替换存在实现效果不好,分辨率低等问题,所以基于自编码器模型,在原始的Deepfakes 算法的基础上对网络结构进行改进,提出了基于自编码模型的人脸替换算法。 同时,针对视频人脸多样性和背景复杂性,提出并设计了基于此算法的视频人脸替换系统,主要工作总结如下:

(1)在原始的Deepfakes 算法的基础上对网络结构进行改进,加入了更多的特征提取层和不同的堆叠顺序,在鉴别器中增加对抗损失和感知损失,训练模型,生成高质量的人脸替换图像;

(2)针对视频人脸替换,对于视频转视频帧操作后出现的面部姿势较大或运动模糊的视频帧,提出了基于时间维度结构一致性的人脸特征点检测方法,设计了人脸关键点插值法,通过标注工具、插值预测器和人脸特征点检测网络三个模块组成的有机框架,实现人脸特征点标注;

(3)基于提出的人脸替换算法,设计并搭建了视频人脸替换系统,视频人脸替换系统主要包含预处理(视频转图片、人脸检测和对齐)、基于编码器的人脸替换模型的网络和模型训练、人脸转换、后处理(图像融合和光照融合)、视频合成五个步骤,针对视频人物多样和背景复杂问题,实现了精准的视频人脸替换。

基于自编码器模型的人脸替换算法和视频人脸替换系统可实现精准的视频人物换脸,且在图像质量、身份保持能力和姿态、表情保持能力等多评价指标的检验下取得较好的效果。

猜你喜欢
编码器关键点人脸
基于ResNet18特征编码器的水稻病虫害图像描述生成
论建筑工程管理关键点
水利水电工程施工质量控制的关键点
玻璃窗上的人脸
基于Beaglebone Black 的绝对式编码器接口电路设计*
智力考场:有趣的图片测试
利用定义法破解关键点
基于TMS320F28335的绝对式光电编码器驱动设计
“领家系”可爱脸VS“高冷系”美人脸
机械能守恒定律应用的关键点