生成|深度伪造(Deepfake)原理分析及实战( 三 )


关键点检测器论文中物体的运动用其关键点处的运动表示,关键点通过自监督的方式学习。首先假设存在一个抽象的参考帧R,这样的话,预测Ts
对于某类物体,假设有K个关键点p1,p2,…,pK。
假设有一帧图片X,对于函数Tx
生成|深度伪造(Deepfake)原理分析及实战
文章插图
忽略高无穷小量,得到
生成|深度伪造(Deepfake)原理分析及实战
文章插图
假设TX
生成|深度伪造(Deepfake)原理分析及实战
文章插图
带入一阶泰勒展开,得到
生成|深度伪造(Deepfake)原理分析及实战
文章插图
其中,
生成|深度伪造(Deepfake)原理分析及实战
文章插图
于是,TS
TS

生成|深度伪造(Deepfake)原理分析及实战
文章插图
稠密运动网络论文这里的目的是用稠密运动网络联合各关键点的局部运动和源图像得到稠密的运动场。
根据K个关键点的局部运动,将原图像变形(warp)成S1,S2,….,SK,再添加一个不运动的S0=S表示背景。另外计算Hk用于表示运动发生的像素点位置:
生成|深度伪造(Deepfake)原理分析及实战
文章插图
转换得到的图片S1,S2,….,SK和Hk拼接在一起通过另外一个U-Net得到掩码Mk。最后稠密运动场使用下面的公式计算:
生成|深度伪造(Deepfake)原理分析及实战
文章插图
在源图像中存在遮挡的时候,目标图像并不能完全通过变形源图像获得。所以考虑预测一个遮挡映射
生成|深度伪造(Deepfake)原理分析及实战
文章插图
其用于表示源图像哪些区域需要被inpainted
转换后的特征图被写作
生成|深度伪造(Deepfake)原理分析及实战
文章插图
上式中fw表示反向变形操作。
训练损失训练的损失由多项组成。首先是基于感知损失(perceptual loss)的重构损失(reconstruction loss)。该loss用预训练的VGG-19网络作为特征提取器,对比重建帧和驱动视频的真实帧的特征差异:
生成|深度伪造(Deepfake)原理分析及实战
文章插图
另外考虑到关键点的学习是无标签的,这会导致不稳定的表现,所以引入不变性约束(Equivariance constraint)用在无监督关键点的学习中。假设图片X经过一个已知的变换TX
生成|深度伪造(Deepfake)原理分析及实战
文章插图
通过对两边进行一阶泰勒展开有
生成|深度伪造(Deepfake)原理分析及实战
文章插图
使用L1损失对上面两个公式进行约束
测试阶段测试阶段也就是实际的合成阶段,其目标是用驱动视频的每一帧D1,…,DT驱动源图像S1。论文采用相对运动的方式驱动Dt ,也就是通过D1和Dt 的相对运动驱动S1。好处是可以保持源图像中物体的几何信息
生成|深度伪造(Deepfake)原理分析及实战
文章插图
关键代码关键点检测
KPDetector类用于检测关键点,它会返回关键点的位置
生成|深度伪造(Deepfake)原理分析及实战
文章插图
转换图像
OcclusionAwareGenerator类,给定源图像和关键点,根据由关键点推导出的运动轨迹转换图像
生成|深度伪造(Deepfake)原理分析及实战
文章插图
生成|深度伪造(Deepfake)原理分析及实战
文章插图
动作计算
DenseMotionNetwork类根据给定的kp_source和kp_driving预测稠密运动,动作的计算主要都集中在这里。其中包括以下三个关键函数
1)计算热力图的函数
生成|深度伪造(Deepfake)原理分析及实战