换脸技术 Deepfake Face2Face HeadOn FSGAN

一、换脸技术发展简史

概述:换脸技术的应用分为三类,即换脸/换五官,转换面部表情,转换面部与躯干运动。以下介绍按照时间顺序排列。

1. Face2Face:Real-time Face Capture and Reenactment of RGB Videos(转换面部表情)

由德国纽伦堡大学科学家 Justus Thies 的团队在 CVPR 2016 发布

可以非常逼真的将一个人的面部表情、说话时面部肌肉的变化、嘴型等完美地实时复制到另一个人脸上

论文:http://www.graphics.stanford.edu/~niessner/papers/2016/1facetoface/thies2016face.pdf

2. Deepfake:Face Swapping(换脸 / 换五官)

推出了 FakeApp(适用于Windows)

Github 上有相同的开源项目 FaceSwap(适用于Ubuntu) https://github.com/deepfakes/faceswap

3. HeadOn:Real-time Reenactment of Human Portrait Videos(转换面部表情与躯干运动)

由 Face2Face 原班团队做的升级版,在 ACM Transactions on Graphics 2018 发布

Face2Face 只能实现面部表情的转换,HeadOn 增加了身体运动和头部运动的迁移

论文: http://niessnerlab.org/papers/2018/7headon/headon_preprint.pdf

4. FSGAN:Subject Agnostic Face Swapping and Reenactment (换脸 & 转换面部表情)

ICCV 2019 未开源

论文:https://arxiv.org/pdf/1908.05932.pdf

二、FaceSwap demo

概述:利用 CLM框架与 OpenCV 可实现单张图片换脸,参考 https://blog.csdn.net/wi162yyxq/article/details/53883507 。若要实现视频换脸,需要事先收集大量 A 与 B 各个角度各种表情的人脸图像素材,针对视频帧的不同表情换脸,最后合成影片,但这将耗费宝贵的时间与精力。将换脸工作交给深度 GAN 自主学习可大量节省时间与精力,项目地址:

https://github.com/deepfakes/faceswap

1. 基本条件

Ubuntu16.04

GPU(Nvidia RTX 2070)

Anaconda Python3.6

Tensorflow-gpu

FFMPEG 截取原始影像帧 / 合成换脸后的视频

具体安装方法:https://github.com/deepfakes/faceswap/blob/master/INSTALL.md


2. 过程与结果

a. Extracting Faces

先从video clips里截取帧,再截取人脸,适用于有多段 video clips 素材的情况

$ ffmpeg -i video.mp4 -vf fps=5 "pic_name%04d.png"

video 一般 25frame/second, fps=5 不必截取每一帧

$ python faceswap.py extract -i ~/faceswap/src/frames_folder -o    ~/faceswap/faces/extracted_faces


也可直接从一段 video 里截取人脸,适用于一段video(自动截取每一帧)。

$ python faceswap.py extract -i ~/faceswap/src/video.mp4 -o  ~/faceswap/faces/extracted_faces


b. Training a model

换脸者A,B双方的训练资料最好 > 3000张

理想 Loss: 0.009-0.01

实际 Loss 0.022, Nvidia RTX 2080 Ti 训练28小时

c. Converting a video

按原始fps截取需要换脸的 video frames

利用训练好的模型转换 video frames

    python faceswap.py convert -i ~/faceswap/src/extracted_frames/ -o ~/faceswap/converted/ -m  ~/faceswap/A_B_model/

合成转换后的 video frames 至新视频

ffmpeg -f image2 -i converted_frames%04d.png -vcodec libx264 -crf 1 -pix_fmt yuv420p -vf fps=60 A_B.mp4


具体使用方法:https://github.com/deepfakes/faceswap/blob/master/USAGE.md

三、Face2Face demo

https://github.com/datitran/face2face-demo

1. 环境配置与安装

Ubuntu16.04

Anaconda Python3.5

Tensorflow 1.2

OpenCV 3.1.0

Dlib 19.4

OpenCV 3.1.0 安装过程坎坷,试过用 pip,conda 指令安装:

$ pip install opencv-python==3.1.0

$ pip install opencv-contrib-python==3.1.0

$ conda install opencv=3.1.0

虽然都成功安装并通过测试

$ import cv2

$ cv2.__version__ 

$ 3.1.0

但是在运行 generate_train_data.py 的时候总是在 cv2.destroyallwindows() 这行报错。


最后使用 Cmake-gui 安装成功,方法如下:

a. 不用安装opencv-contrib

b. cuda,python2,doc,example,test 所有选项取消勾选

c. WITH_GTK_2_X 勾选

d. PYTHON3 路径如下:


e.  在 ./opencv-3.1.0/modules/videoio/src/cap_ffmpeg_impl.hpp 里最顶端添加了

    #define AV_CODEC_FLAG_GLOBAL_HEADER (1 << 22)

    #define CODEC_FLAG_GLOBAL_HEADER AV_CODEC_FLAG_GLOBAL_HEADER

    #define AVFMT_RAWPICTURE 0x0020

f. $ make -j8

  $ sudo make install

  $ sudo ldconfig

  成功!!!


2. 过程与结果

a. 训练资料:原始图片与 Landmarks 各400张

b. 训练周期:200 epochs

c. 训练时间:3h with Nvidia RTX 2080Ti

d. 结果:欠拟合


a. 训练资料:原始图片与 Landmarks 各1500张

b. 训练周期:500 epochs

c. 训练时间:15h with Nvidia RTX 2080Ti

d. 结果:过拟合


背景噪声干扰大,不采用。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 216,997评论 6 502
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 92,603评论 3 392
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 163,359评论 0 353
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 58,309评论 1 292
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 67,346评论 6 390
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 51,258评论 1 300
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,122评论 3 418
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,970评论 0 275
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 45,403评论 1 313
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,596评论 3 334
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,769评论 1 348
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 35,464评论 5 344
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,075评论 3 327
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,705评论 0 22
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,848评论 1 269
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,831评论 2 370
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,678评论 2 354

推荐阅读更多精彩内容