換臉到底是什么樣的操作
Deepfake,是由“deep machine learning”(深度機器學(xué)習(xí))和“fake photo”(假照片)組合而成,本質(zhì)是一種深度學(xué)習(xí)模型在圖像合成、替換領(lǐng)域的技術(shù)框架,屬于深度圖像生成模型的一次成功應(yīng)用。
其實該技術(shù)最早版本在2018年初就被提出了,當時在構(gòu)建模型的時候使用了Encoder-Decoder自編解碼架構(gòu),在測試階段通過將任意扭曲的人臉進行還原,整個過程包含了:獲取正常人臉照片=>扭曲變換人臉照片=> Encoder編碼向量 => Decoder解碼向量 => 還原正常人臉照片五個步驟。而ZAO在Encoder-Decoder的框架之上,又引入了GAN(生成對抗網(wǎng)絡(luò))技術(shù),不但降低了同等條件下的模型參數(shù)量和模型復(fù)雜度,同時使生成的人臉更為清晰,大大降低了對原圖的依賴,顯著提升了換臉的效果,而且基于GAN技術(shù)的Deepfake改進版已經(jīng)在Github開源。
盡管「Deepfake」這類應(yīng)用非常吸引人,但落到實處還是會引發(fā)很多的問題,不論是倫理還是隱私。后面我們將介紹生成對抗網(wǎng)絡(luò)和變分自編碼器兩種換臉的解決方案,也許大規(guī)模應(yīng)用還能進一步催生效果更好、算力更少的解決方案。
直觀而言,GAN 這類生成模型可以生成非常逼真的人臉圖像,那么現(xiàn)在需要將某個人的特點遷移到另一張人臉上,這就需要更多的模塊來定義需要遷移的位置與特點。
總體上,「Deepfakes」換臉主要分為以下過程:
- 人臉定位
- 人臉轉(zhuǎn)換
- 圖像拼接
其中人臉定位已經(jīng)非常成熟了,一般定位算法可以生成人臉的特征點,例如左右眉毛、鼻子、嘴和下巴等等。人臉轉(zhuǎn)換也就是采用 GAN 或 VAE 等生成模型,它的目標是生成擁有 A 表情的 B 臉。最后的圖像拼接則是將人臉融合原圖的背景,從而達到只改變?nèi)四樀男Ч?/p>
當然,如果生成 ZAO 這種小視頻,那么還需要一幀幀地處理圖像,然后再將處理后的結(jié)果重新拼接成小視頻。
人臉定位
人臉定位也就是抽取原人臉的表情特征,這些特征點大致描述了人臉的器官分布。我們可以直接通過 dlib 和 OpenCV 等主流的工具包直接抽取,但它們一般采用了經(jīng)典的 HOG 的臉部標記算法。這種算法根據(jù)像素亮度差確定一些「箭頭」,從而找到人臉顯著的特征點。
image.png
如上是一些人臉特征點,如果我們想換臉的表情更加真實和準確,那么也可以使用目前主流的人臉識別算法,它利用卷及網(wǎng)絡(luò)能生成更完美的特征點。但是這類深度模型需要更大的算力,尤其是在處理高分辨率圖像時。
人臉轉(zhuǎn)換
首先對于變分自編碼器(VAE),我們知道它希望通過無監(jiān)督的方式將人臉圖像壓縮到短向量,再由短向量恢復(fù)到人臉圖像。這樣短向量就包含了人臉圖像的主要信息,例如該向量的元素可能表示人臉膚色、眉毛位置、眼睛大小等等。
image.png
所以如果我們用某個編碼器學(xué)習(xí)所有人,那么它就能學(xué)習(xí)到人臉的共性;如果再用某個解碼器學(xué)習(xí)特定的某個人,那么就能學(xué)習(xí)到他的特性。簡單而言,當我們用通用編碼器編碼人臉 A,再使用特定解碼器 B 解碼隱藏向量,那么就能生成出擁有 A 的人臉表情,但卻是 B 人臉的圖像。
這就是 VAE 的解決方案,對于 GAN 來說,它會利用抽取的人臉特征點,然后根據(jù)生成器生成對應(yīng)的目標人臉圖像。這時候,編碼器同樣也會將真實的目標人臉編碼,并和生成的目標人臉混合在一起。因此,如果判別器不能區(qū)分根據(jù)某人特征點生成的人臉和真實人臉有什么區(qū)別,那么生成的人臉就非常真實了。
如上所示為論文 Few-Shot Adversarial Learning of Realistic Neural Talking Head Models 的解決方案,它只需要幾張目標人臉圖,就能根據(jù)原人臉的特征點生成極其逼真的效果。
如何識別和應(yīng)對「Deepfakes」照片或視頻?
知道了如何制作換臉視頻,我們還要掌握一些識別換臉視頻的技術(shù),因為這些換臉技術(shù)給大眾帶來歡樂的同時,也在被不少人濫用。這種濫用不僅給公眾人物造成了困擾,甚至還威脅到了普通大眾。
不自然的眨眼
由于用來訓(xùn)練神經(jīng)網(wǎng)絡(luò)的圖像數(shù)據(jù)往往是睜著眼睛的,因此 Deepfake 視頻中人物的眨眼或不眨眼的方式通常是不自然的。
去年,奧爾巴尼大學(xué)(University of Albany)的研究人員發(fā)表了一篇論文,提出了一種可以檢測這種不自然眨眼的技術(shù)。有趣的是,這項技術(shù)使用的也是深度學(xué)習(xí),和制作假視頻的技術(shù)是一樣的。研究人員發(fā)現(xiàn),利用眨眼視頻訓(xùn)練出的神經(jīng)網(wǎng)絡(luò)可以在視頻中定位眨眼片段,找出非自然眨眼運動的一系列幀。結(jié)果發(fā)現(xiàn),Deepfake 視頻中人物的眨眼不符合正常的生理學(xué)規(guī)律,由此可以識別出哪些是原始視頻,哪些是 Deepfakes 視頻。
追蹤頭部動作
每個人都有獨特的頭部運動(如開始陳述事實時點頭)和面部表情(如表達觀點時得意得笑),但 Deepfakes 中人物的頭部動作和面部表情都是原人物而非目標人物的。
基于此,加州大學(xué)伯克利分校的研究者提出了一種檢測換臉的 AI 算法。其基本原理是:利用一個人的頭部動作和面部表情視頻訓(xùn)練一個神經(jīng)網(wǎng)絡(luò),然后拿這個神經(jīng)網(wǎng)絡(luò)去檢測另一個視頻中的人物動作和表情是否屬于這個人。模型準確率達到 92%。
(a)原始人物;(b,c)分別是 Deepfake 人物。
制作換臉視頻和識別換臉就像一場貓鼠游戲,造假技術(shù)日新月異,打假技術(shù)也在不斷迭代。但僅在技術(shù)層面打擊這一技術(shù)的濫用是不夠的,我們還需要法律的支持。
發(fā)表評論