换脸技术已经火了好几年了,很是惭愧,之前都没有好好的研究过其背后的技术原理,最近在看人脸属性编辑相关的东西,无意中看到换脸技术(DeepFakes)能将人脸的表情、光照等变换的那么自然(虽然是有很多的前提条件),就想着认真学习一下,或许能从中得到些做人脸光照变换的灵感。
基础架构:自动编码器
自动编码器是一种无监督的神经网络模型,它可以学习到输入数据的隐含特征,称为编码(encode),同时用学习到的新特征可以重构出原始输入数据,称之为解码(decode)。从直观上来看,自动编码器可以用于特征降维,类似主成分分析PCA,但是其相比PCA其性能更强,这是由于神经网络模型可以提取更有效的新特征。除了进行特征降维,自动编码器学习到的特征可以送入有监督学习模型中,这样自动编码器可以起到特征提取器的作用。通过对隐向量施加约束,自动编码器还可以用于生成与训练样本不同的新数据,这就是变分自动编码器,也是一种很常见的生成模型。
以人脸为例,上图显示了将人脸进行编码以及解码的过程。编码器将人脸编码为较低维度的表示,称为潜在向量或隐向量。接着通过解码器重建出原本的人脸。自动编码器是有损的,因此重建的人脸很难具有与输入的人脸相同的细节。