搭建深度學習模型實現“換臉檢測” Deepfake Detection

概要

Deepfakes 是一種合成視頻,通過深度學習技術將原視頻中的人臉進行替換,然後輸出新的視頻。

本文針對 Clay Sciences Video Annotation 平臺上長達300分鐘、總計449977幀的真實視頻以及Deepfake視頻進行了人工標註。然後通過 Keras 和 TensorFlow 在谷歌雲進行了深度學習模型的訓練,開發了 single shot multibox detector,用於自動檢測視頻是否是 deepfake。檢測的準確度在部分情況下高達 100%。 通過實現對 deepfake的識別,將能夠減少由其帶來的潛在負面影響。

引言

由於視頻剪輯軟件的流行及其簡單易用的特點,Facebook、Instagram、Snapchat等社交平臺充斥著剪輯視頻。通過視頻剪輯可以偽造一些實際上並沒有發生過的人物事件。如果放任剪輯視頻的大肆傳播,會有潛在的誤導輿論的可能。現在已經有相關的反面事例了。近期就在網上流傳有關於美國眾議院議長 Nancy Pelosi 和美國總統候選人 Joe Biden 的偽造視頻,在視頻中顯示他們曾在公開演講中發表種族主義言論,而這些偽造的視頻在社交媒體中大肆傳播。

而 Pelosi 和 Biden 類似的偽造視頻是非常簡單的,只需要選擇性地對內容進行編輯就能夠實現。而最近更受媒體關注的是一種更為先進的技術——Deepfakes。Deepfakes 通過人工智能技術將人臉疊加到原視頻上。

Deepfakes 於 2017 年在網絡上得到極大關注。2017年7月27日,Radiolab 的一期“Breaking News”中,對 Deepfakes 及其可能存在的風險進行了討論,甚至自行開發了自己的 deepfakes。通過這一技術,一個和原視頻毫不相干的人可以被設計為視頻的主角。而這些合成的視頻幾乎不可能通過人眼識別出來。顯然其潛在的風險是很大的,可能在社會的各個領域產生不良的影響。因此,開發能夠識別視頻真實性(針對 deepfake 技術)的程序是很有必要的。在本項目中,通過訓練一個機器學習模型實現了對於真實視頻和合成視頻的識別檢測。

此外同時需要注意還有另一種形式的 deepfake 技術——語音合成,能夠改變音頻內容,並且語音合成和視頻合成是可以相結合的。而本項目目前只專注於視覺領域的 deepfake。

數據和方法

數據集

訓練數據主要是從150分鐘的真實視頻和150分鐘的合成視頻中提取的449977幀圖像,並且通過 Clay Sciences 平臺根據是否是合成的對這些圖像中的人臉添加了邊框並進行了“真實”/“合成”的標記。然後將數據集劃分為訓練集(323202 幀圖像)、驗證集(80855 幀圖像)和測試集(45920 幀圖像),並且每個源視頻生成的幀圖像被劃分進同一個數據集中。

方法

為了實現對於人臉真實性的識別檢測,需要開發一個深度學習模型對圖像中的人臉進行識別並判斷:1)在圖像中識別出人臉;2)判斷人臉是否真實。該模型還需要能夠檢測出圖像中具有多個人臉對象,因為單個視頻可能存在多個人臉對象,甚至可能同時存在真實的人臉和合成的人臉。為了實現這一功能,本項目選擇基於 Single Shot MultiBox Detector(SSD) 模型進行開發,SSD是一個能夠針對圖像中對象進行識別和標記的神經網絡模型。具體地,通過 TensorFlow 編寫相關代碼,通過谷歌雲計算進行相關訓練。

本項目中,輸入為 300x300 的圖像,訓練 15 個 epoch,每個 epoch 包含 11000 步,每個 batch 包含 32 個圖像。而誤差函數為 SSD 模型的損失函數,該損失函數包含兩個部分:1) 目標定位(預測的邊框和實際標註邊框的差異);2) 目標分類(預測標籤和實際標籤的差異)。通過不斷訓練減少誤差,使得模型逐漸學習關鍵特徵。但是需要注意不能一味謀求減少訓練誤差,應該也要考慮模型的泛化能力,否則模型將出現過擬合的情況,在訓練集以外的數據達不到理想的效果。而驗證集能夠幫助評估模型的泛化能力,一般而言,模型在驗證集上的誤差越小,則模型越好。

訓練完成後,使用測試集進行模型性能的評價。通常採用針對每個對象(本項目為真實人臉/合成人臉)的 PR 曲線(precision-recall curves)評價目標檢測模型的性能。PR 曲線中縱軸為分類器對正例的識別準確程度,橫軸為對正例的覆蓋能力。PR 曲線上的任一點表示模型預測的置信度,precision 越高、 recall 越低,則置信度越高,模型預測準確性越好。precision 越低、 recall 越高,則置信度越低,模型預測準確性越差,但是能夠識別大多數目標。通過計算所有目標類別的平均準確度,可以作為模型的準確度指標(mAP)。

最終選擇訓練準確度最高的模型對視頻圖像進行目標識別和標籤判斷。

結果

模型訓練和評估

經過不斷訓練,模型在第 8 個 epoch(88000 steps)時,使得驗證集誤差最小。此時訓練集誤差 2.5144,驗證集誤差 4.1434。而繼續訓練後,模型表現為過擬合:訓練集誤差持續減小,而驗證集誤差增加。通過計算 mAP 可以進一步驗證模型是否過擬合。


搭建深度學習模型實現“換臉檢測” Deepfake Detection


通過 epoch 8 的 SSD 模型 PR曲線可以看出,模型識別真實人臉的平均準確率為 40.2%,而識別合成人臉的平均準確率為 79.6%。

搭建深度學習模型實現“換臉檢測” Deepfake Detection

模型預測

經過訓練的 SSD 模型被用於對測試集的圖像進行真實人臉/合成人臉的識別。在所有測試集圖像識別過程中,模型能夠對大多人臉進行定位和判斷,部分圖像中將合成人臉識別為真實人臉,但是沒有在任一圖像將真實人臉識別為合成人臉。並且每次識別判斷的置信度都同步輸出在人臉的定位框中。

搭建深度學習模型實現“換臉檢測” Deepfake Detection

搭建深度學習模型實現“換臉檢測” Deepfake Detection

成功識別真實人臉

搭建深度學習模型實現“換臉檢測” Deepfake Detection

搭建深度學習模型實現“換臉檢測” Deepfake Detection

成功識別合成人臉

搭建深度學習模型實現“換臉檢測” Deepfake Detection

搭建深度學習模型實現“換臉檢測” Deepfake Detection

將合成人臉識別為真實人臉最後將該模型用於未進行標註的 Deepfake 圖像進行識別判斷,也具有良好的總體表現。

搭建深度學習模型實現“換臉檢測” Deepfake Detection

搭建深度學習模型實現“換臉檢測” Deepfake Detection

對未進行標註的數據集進行識別判斷

討論

要點

本項目的出發點在於訓練一個機器學習模型用於分辨視頻是否是通過技術手段合成的。本項目目前只是概念層面,所訓練的模型雖然沒有100%的準確率,但是具備有一定的判斷視頻真實性的能力。該模型尤其在識別合成人臉方面具有很好的效果。雖然它偶爾確實將合成人臉識別為真實人臉,但是當模型確實預測出合成人臉時,通常是正確的。通過 PR 曲線可以看到,模型在識別合成人臉方面具有很高的置信度,準確率接近 100%。同時,該模型還有很大的優化空間。通過 PR 曲線,發現模型在識別真實人臉方面不具有較高的置信度。因此為了更好地達到識別效果,還需要進一步地優化模型並訓練。

儘管模型的效果並不完美,但是結果仍舊是很令人滿意的。通過這個模型展示了目標檢測模型可以用於減少剪輯視頻的負面影響。

不足和展望

本項目除了上述不足以外,還存在著數據方面的問題。因為本項目中的圖像是通過將每一幀單獨提取出來並進行人為標註的,實際情況下視頻的每一幀是連續的,並且具有一定的關聯性,而這些特性對目標檢測模型可能有一定的價值和影響。在後期的工作中,每幀圖像不應該被單獨提出了,而應該將視頻作為一個整體,進而訓練相關機器學習模型,判斷整個視頻是否是合成的。

此外,如前引言部分所述,本項目只是針對視頻進行分析判斷,而音頻也存在 deepfake 的情況。所有一個可能的方向是將兩者結合起來,共同進行判斷。

值得注意的是,一些大型科技公司已經有開展“deepfake 檢測挑戰賽”,在競賽中,選手需要通過技術方法對視頻進行判斷。主辦方提供有視頻和音頻數據,該競賽計劃於2020年3月31日結束。參數選手如何完成相關工作很值得關注。


分享到:


相關文章: