怎么浅析ZAO背后的深度学习算法原理

怎么浅析ZAO背后的深度学习算法原理,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

下面从更底层的算法角度出发,带大家深入到算法本质,去理解ZAO究竟是如何基于GAN来进行换脸的。

首先,我们给出一张换脸的整体流程图:

怎么浅析ZAO背后的深度学习算法原理  zao 第1张

图片来源:Exposing DeepFake Videos By Detecting FaceWarping Artifacts

上图展示了基于deepFake换脸算法的一般流程,首先对于输入图片(a)原图做人脸检测(b),检测出人脸后进行关键点检测(c)。之后(c)通过变换矩阵(d)来实现人脸摆正,之后将摆正后的人脸进入DeepFake(GAN/CycleGAN)来实现人脸替换,之后将替换后的人脸(g)通过变换矩阵的反变换来做关键点对齐,最后替换回原图进行融合最终得到(i)和(h)。

这里我们给出的是图像上人脸替换的一般流程,那对于短视频而言,就需要先对视频进行截帧,然后逐帧进行人脸替换,在视频帧替换过程中要有人脸识别的网络来保证替换的对象保持统一性(具体理解就是比如我们要替换一段视频中小燕子的脸,那就要识别出检测的人脸是不是小燕子的,不能将紫薇的人脸也替换了),当然由于是视频逐帧的替换,那么在其中为了保证视频随时间前后帧替换的人脸的自然和连贯性,就需要对前后帧的人脸进行转移平滑操作,从而保证较强的视觉效果。

以上就是图像换脸,视频换脸的通用流程,当然对于ZAO而言,我们发现它的换脸效果要好于我们一般的换脸算法,尤其是在头部旋转的(低头,回头,仰头)上面,效果很是不错,所以我们有理由相信,ZAO的算法内部应该是使用3D人脸关键点的检测,这样在替换的过程中就会换的更为自然。

好的,现在我们了解了流程,下面我们更加细节的介绍上面说的DeepFake(GAN/CycleGAN)的算法工作原理。为了简化大家对于GAN/CycleGAN的理解,我们同样以图的方式展现:

怎么浅析ZAO背后的深度学习算法原理  zao 第2张

首先,上图表示了最简单的人脸替换网络,对于输出人脸(左边),通过神经网络编码得到中间状态(往往是一个向量或者很小的图像),之后再进入解码器还原得到重建的人脸(右边)。我们注意,中间的编码态相当于保存的人脸的全部信息。在上图我们并没有做人脸替换的相关操作,即A脸编码后解码的还是A脸,B脸编码后解码的还是B脸。

怎么浅析ZAO背后的深度学习算法原理  zao 第3张

下面,如果我们将B脸编码的向量用A脸的解码去解,会发生什么呢?是的,B的脸会出现在原本A的脸的位置,但面部的表情和一些细节会保留A的。这样就实现了换脸。

从上图还有一点需要注意,因为编码的可替换要求,我们必须让所有脸的编码器保持一致性,也就是所有替换前的人脸用统一的编码器去编码(上图统一的红色编码器),但对于每个不同的人脸要实用不同的解码器去解码(上图不同的蓝色和绿色解码器),这样才能完成换脸。

但是如果仅仅使用上面的算法结构,生成的人脸会比较假,可以看出相当明显的人为替换痕迹,而为了让替换发生的更为真实,CycleGan应运而生,还是简单的一张图去理解CycleGan的算法本质:

怎么浅析ZAO背后的深度学习算法原理  zao 第4张

我们可以看出,说到底,CycleGan不过在换脸后生成的假脸和真脸的之间多增加了一个损失来减小两者的差距,同时让相较于之前的A-->B, CycleGan还同时实现了B-->A的生成和缩小差距,而这整个过程呈现了一个闭环,故而名为Cycle。

CycleGan的循环训练可以明显的缩小直接将B脸用A解码器解码所产生的不真实性。

当然,在真实场景中,在完成换脸后可能还需要一些后处理来保证结果更加平滑自然,比如在换脸边缘做一些模糊处理,在人脸区域做一些和原脸的风格迁移等等。

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注蜗牛博客行业资讯频道,感谢您对蜗牛博客的支持。

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:niceseo99@gmail.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

评论

有免费节点资源,我们会通知你!加入纸飞机订阅群

×
天气预报查看日历分享网页手机扫码留言评论Telegram