李永強,白 天
(中國科學技術大學 軟件學院,安徽 合肥230026)
近年來,基于深度學習技術的圖像生成技術迅速發展,視頻人臉偽造技術也隨之日趨成熟。 利用此類技術的人臉偽造技術已經可以欺騙普通人類[1]。但這些技術的濫用也引發了一些社會問題,因為這些技術可以利用公眾人物公開的視頻、圖像素材,偽造公眾人物出場的虛假視頻,發布虛假的言論,或偽造色情影片,破壞名譽。 由于Deepfakes 項目[2]的廣泛流傳,這一類技術常被通稱為Deepfake。 為了避免Deepfake 技術的濫用,許多研究團體做出了卓越的貢獻。 ROSSLER A 等人發布了包含大量Deepfake 數據的公開數據集FaceForensics++[1],以幫助研究人員研究檢測算法。 Facebook 開展了DFDC(Deepfake Detection Challenge)比賽并公布了訓練數據集[3]。
早期的研究主要是從視頻中隨機提取幀,使用基于卷積神經網絡(Convolutional Neural Networks,CNN)的二分類器進行檢測[1]。 這樣的方法存在兩個問題。一是只使用了單幀信息,忽略了Deepfake 技術的動態缺陷,在低質量場景下容易出錯。 二是分類器與訓練數據高度相關,不具備通用性,在對數據的生成模型未知的情況下,效果將會大打折扣。
另外有研究從頻域角度出發試圖解決問題。KORSHUNOV P[4]等人通過構造圖片的頻率特征或統計特征等方法,構造圖像質量指標(Image Quality Measures,IQM),作為特征供支持向量機(Support Vector Machine,SVM)學習,但是通過構造特征的方式需要大量專業知識,不能很好地泛化問題。 QIAN Y[5]等人從頻域提取到Deepfake 模型留下的特定頻率特征,在特定數據集上獲得了較好的效果。 然而無法保證不同的模型能產生類似的頻率特征,并且不同的有損壓縮方式也會帶來頻率噪聲,對頻域特征存在干擾,缺乏魯棒性。
針對以上問題,本文提出了一種基于深度學習的視頻中Deepfake 檢測方法。
本文的主要工作如下:
(1)提出卷積LSTM 的模型架構,結合CNN 和長短期記憶網絡(Long Short-Term Memory,LSTM)的模型架構,融合了存在于幀間的時間信息,用于視頻中Deepfake 檢測。
(2)提出一種幀抽取方法,提高了Deepfake 動態缺陷的顯著性。
(3)提出一種基于人臉特征點進行cutout 的數據增強方法,抑制了模型學會特定臉的現象。
(4)在公開數據集上進行測試,并與文獻中其他算法進行對比。
通過對相關數據的分析可以發現,使用Deepfake偽造人臉的視頻在動態過程中會出現異常抖動。 對于幀之間獨立分析的方法無法發現這種抖動,僅局限于發現單幀畫面中的瑕疵。 而視頻質量較差或使用有損視頻壓縮算法也會帶來許多瑕疵,當模型無法區分這兩類瑕疵時,模型的性能將大大降低。 本文提出卷積LSTM 架構,將CNN 與LSTM 進行融合,用于解決傳統模型忽略時序特征的問題, 并提出一種基于人臉標記點(landmarks)的cutout 方法,以抑制模型學會特定臉的現象。
卷積LSTM 分為CNN block 和LSTM block,CNN block 負責獲取空間信息,LSTM block 則從特征圖序列中獲取時間信息。 如圖1(a)所示,從視頻中提取N幀后,使用現有的人臉提取器對這些幀進行人臉提取,得到人臉圖片序列,調整大小到CNN block 對應的大小,在訓練時,還需進行動態數據增強。假設使用的CNN block 輸出512 維的特征圖,那么將得到N個512 維向量,在訓練階段,每個向量還將經過多層感知機得到標簽的獨熱編碼, 用于約束特征圖。 將N個512 維的向量輸入LSTM block 中,模型最終按獨熱編碼的形式輸出預測標簽。

圖1 模型架構圖
1.1.1 幀抽取
由于生成模型的訓練過程中沒有唯一標準的答案,因此生成結果具有一定的不確定性。 即對于相似的輸入,模型可能生成不相似的結果,尤其是處理毛發、斑點等特征的情況下,無法保證每次隨機生成的結果相同,從而導致了視頻中的抖動現象。記Ri表示原視頻的第i幀,Fi表示Ri經過Deepfake處理過的圖像,dr(i,j)表示原始視頻中第i和j幀的差異,即Ri和Rj的差異,df(i,j)表示Fi和Fj的差異。通常,dr(i,j)主要受視頻中人臉的姿態、光照等條件影響,而df(i,j)還額外受到模型不確定性error(i,j)影 響,如 式(1)所 示。 若|i-j|過 于 小,dr和df均 很 小,造成信息冗余。若|i-j|過于大,則df主要取決于dr,模型的抖動將難以捕捉。 因此,應當在保證一定最小間隔的前提下,選取相對緊湊的選取幀,本文實驗中,采用在視頻中隨機選取時間點,以0.2 s 為間隔采樣,采樣總長度不超過32 幀。

1.1.2 人臉提取
現有的人臉提取算法已經能滿足實際需要。 常見的人臉提取器有MTCNN[6]、dlib 等。 本文后續實驗中,將使用MTCNN 提取人臉框及人臉特征點。
1.1.3 CNN-block
ImageNet 競賽極大推動了深度卷積網絡的發展,即使ImageNet 早已結束,圖像領域的新模型都會在ImageNet 上進行基準測試,并發布預訓練模型?;谶@樣的預訓練模型在其他任務上訓練,可以加快訓練收斂的速度,并且一般會使得模型最終效果更好、更穩定。針對不同的應用場景,有許多開箱即用的模型可以使用。 Resnet[7]系列因為其普遍性,具有良好的可移植性,幾乎所有平臺都能使用。Mobilenet[8]系列針對邊緣節點算力較弱的場景,在可接受的準確率損失的前提下,極大地減少了計算力。 Efficientnet[9]則相反,使用更大的模型,更大的輸入尺寸,獲得更好的擬合效果。 本文提出的架構設計中,可以根據實際場景輕松地切換CNN-block。 為了后續模塊中能保留充足的信息,CNN-block 將會向后輸出一個較大維度的向量,如512 維向量,同時為了保證這個向量中包含了有關于訓練目標的信息,在訓練過程中,對于每個向量,都會經過一個淺層神經網絡,輸出單幀的標簽預測值, 從對特征向量本身進行約束,以提高特征本身對于標簽的相關性。
1.1.4 LSTM-block
單獨使用CNN-block 無法處理變長數據和有序數據,因此需要結合使用循環神經網絡(Recurrent Neural Network,RNN)來處理時間信息。LSTM 是一種特殊的RNN,如圖2 所示,本文所用的結構在原始LSTM 的基礎上加入了實例正則化(Instance Normalization,IN),這是由于不同的數據可能使用的替換人臉不同,每個圖像實例之間獨立地進行正則化,可以加快模型收斂。 結合CNN 與LSTM 后,模型擁有融合時空信息的能力,能同時挖掘數據中Deepfake的動態缺陷和靜態缺陷,提升了數據信息利用率。
1.2.1 數據增強
常規的數據增強方法依然適用,但是需要注意一點的是,部分增強方法在同一組數據中需要保持一致。 除了1.2.3 節中將要介紹的cutout 方法,本文實驗中使用到的數據增強方法如表1 所示。

表1 數據增強方法及參數說明
1.2.2 基于人臉特征點的cutout
cutout[10]是一種數據增強技術,在圖像中隨機選擇一個正方形區域,進行全0 填充。Deepfake 偽造的痕跡主要存在于面部及交界處,直接使用cutout 技術,有可能將面部覆蓋,從而引入有害噪聲,影響模型的學習。人臉標記點用于定位人臉不同的區域,dlib能檢測68 個特征點,如圖3(a)所示。 本文實驗中,利用這些點劃分了6 個區域,如圖3(b)所示,區域所用的特征點序號如表2 所示。 每個區域按均等概率進行cutout。

表2 不同區域所用特征點序號

圖2 LSTM 單元結構圖
本文實驗使用了2 個數據集,FaceForensics++和DFDC。 實驗中,將利用DFDC 數據訓練CNN 模型,使用遷移學習技術,在完整模型架構中,使用Face-Forensics++對應數據子集進行模型微調,最后在Face-Forensics++對應的子集上進行效果驗證。
FaceForensics++數據集包含了1 000 個從YouTube上篩選的視頻片段,片段以單人視頻為主,視頻物理分辨率從480p 到1 080p 不等。 通過Deepfakes[2]、Face2Face[11]、FaceSwap[12]以及NeuralTextures[13]四種算法生成偽造視頻以及對應的模型。 對于每個視頻,根據H264 編碼時使用的參數分為無損 (RAW)、低壓縮(C23)和高壓縮(C40)三種版本,對于偽造視頻,還提供了偽造區域的mask 信息。
DFDC(Deepfake-Detection-Challenge)數據集來源于Kaggle 上的算法競賽,由AWS、Facebook 等共同創建,其中的偽造視頻由視頻、音頻以及音視頻同時偽造。 數據集共471.84 GB,分為50 個相互獨立的分卷,每個分卷中有若干視頻和一個標簽文件,每個文件對應的標簽中標明了數據是否是造假視頻, 對于偽造視頻, 還提供了其原視頻的標簽,相比FaceForensics++, 沒有公布進行偽造的算法和模型,也沒有提供偽造區域的mask 信息。

圖3 人臉特征點及cutout 區域
為了方便對比基線,實驗的CNN 模型選用了Xception[14],單幀輸入大為224×224,對應輸出feature map 的大小為512。 使用帶有梯度裁切的adam 優化器進行優化,學習率設置為0.000 1,損失函數使用focal loss[15],其 表 達 式 為 式(2),αt設 置 為0.25,γ 設置為2,focal loss 可以緩解數據中的不平衡,使模型更專注于難樣本。 訓練時存在兩種約束,需要交替訓練。訓練CNN 的階段,設置batch size 為128,迭代次數為10 個epoch,使用DFDC 數據作為預訓練。綜合訓練階段,使用FaceForensics++的某個子集進行訓練,設置batch size 為32,迭代次數為20 個epoch。
本文方法使用DFDC 數據預訓練CNN 模塊,然后遷移到FaceForensics++對應的數據子集上進行后續的完整訓練。 數據子集包括無損、低壓縮和高壓縮三種質量下的四種算法生成的偽造視頻和對應的真實視頻進行混合的12 種集合。 結果如表3 所示。 相比于文獻[1]中給出的基于Xception 的基線算法,在12 種集合上的效果均有提升,尤其是在低視頻質量的情況下,提升較為明顯。

表3 在FaceForensics++數據集上準確率對比(%)
本文提出了一種用于檢測視頻的Deepfake 檢測方法。 提出將CNN 和LSTM 結合的卷積LSTM,充分利用了視頻中幀的空間信息和Deepfake 的動態缺陷這一時間信息。 針對任務目標,提出了一種幀提取方法,提高了Deepfake 動態缺陷的顯著性。 提出一種基于人臉特征點的cutout 方法用于數據增強,同時抑制模型學會特定臉的現象。 在FaceForensics++數據集上的實驗表明,算法在各種壓縮質量和換臉算法下,對比基線算法均有提升。