换脸算法探索---基于gan网络实践

介绍

        最近接到一个项目,做一个换脸算法,能实现任意人脸的互换。天天p图,zao的换脸是目前市面上做的比较好的产品,有比较高的技术及资源门槛。国外deepfake刚出来的时候也引起了不小的轰动,甚至影响到立法。

        在github上搜索swapface,相关项目有这些特点:

        1针对特定人脸,即训练针对特定人物的模型,不能实现任意两人的互换,尤其是视频,甚至是两个指定视频要训练后才能进行互换;

        2效率过低,显卡上跑着都很吃力,动不动几百毫秒没有了;

        3效果太差,尤其是对肤色角度的相似性要求太高。

       就上面几点,形成了天天p图和zao的技术难点及应用难点,据说zao刚运营的时候,日亏百万。

方法

       本文所属方法,目标如下:

       1 实现任意人脸互换

       2 实现高效率的运行,在pc机单核200ms以下的处理时间

       3 实现对肤色和角度的最大限度的支持

算法实现

      整体步骤如下:

       1 人脸识别,得到人脸位置及特征点;

       2 采用人脸剖分方法,将一个人脸映射到另一个人脸上;

       3 采用gan对人脸进行精修,实现多余物体取出(阴影,留海等),肤色融合及畸变矫正

      其中gan的方法借鉴了deep fake的思想,主要在训练样本对的设计上很有讲究,这是本文所述方法的技术核心,不方便透露。

效果展示

换脸算法探索---基于gan网络实践_第1张图片

换脸算法探索---基于gan网络实践_第2张图片

上面的例子展示了一些肤色不一样,角度变化大的情况,当然角度变化是有限度的,越大效果越差,肤色也是一样的,差距越大也差。

总结

          本文所述方法还处在研发期,不过效果还是可圈可点的,尤其是时间现在控制在100ms左右,i5单核上。未来计划应用在视频换脸上,只要能解决帧间稳定性,尽量向zao看齐

你可能感兴趣的:(人脸sdk,机器学习)