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