武 茜,賈世杰
(大連交通大學電氣信息工程學院,遼寧大連 116028)
近年來,基于深度學習的人臉替換技術取得了較快的發展[1]。人臉偽造主要體現在修改身份、轉移表情、生成全新人臉這3 種情況,其中,修改身份即為人臉替換,DeepFake 是人臉替換中的主要方法。DeepFake 起源于2017 年Reddit 論壇中的一個匿名代碼,是基于深度學習的人臉替換方法,其簡單易用且沒有違和感[2]。DeepFake 以自編碼器(AutoEncoder,AE)為核心結構,利用編碼器提取面部圖像的潛在特征,然后使用解碼器重建面部圖像,從而將目標人物的面部圖像替換到原視頻中的人物上。為了在原圖像和目標圖像之間交換面部,需要2 個編碼器-解碼器對,每個編碼器-解碼器對都在人物圖像集上進行訓練,并且編碼器的參數在2 個網絡之間共享。目前,人臉替換鑒別方法主要分為兩類。
第一類方法利用DeepFake 視頻中前后幀的時間信息進行鑒別:GüERA[3]研究發現DeepFake 視頻前后相鄰幀之間包含不一致的時序性內容,其提出利用CNN 和LSTM 檢測假視頻的方法;LI 等[4]研究發現DeepFake 假視頻的人物眨眼頻率低于真實視頻,因此,將裁剪后的眼部區域序列分配到長期循環卷積網絡(LRCN)[5]中進行動態預測;張怡暄等[6]研究發現DeepFake 視頻中人臉區域的幀間差異明顯大于真實視頻,其利用視頻相鄰幀中人臉圖像的差異特征進行預測;陳鵬等[7]利用全局時序特征和局部空間特征來發現偽造人臉視頻;LI 等[8]利用DeepFake 視頻相鄰幀上的抖動來檢測視頻真偽,并解決了訓練不能很好收斂的問題。上述方法容易被DeepFake 技術所借鑒并進行改進,因此,方法的時效性通常較弱[9]。
第二類方法提取DeepFake 的圖像特征信息進行鑒別:YANG 等[10]提出一種鑒別方法,該方法利用由頭部方向和位置組成的三維頭部位姿之間的差異,將提取的特征輸入SVM 分類器進行分類,但是實際情況中三維頭部姿態獲取效率低;AFCHAR[11]利用神經網絡中層語義信息,使用具有少量層的神經網絡來學習真假人臉圖像內在特征的不一致性;LI 等[12]針對DeepFake 會留下特殊偽影的現象,利用深度學習網絡來檢測DeepFake 偽影;NGUYEN 等[13]利用膠囊網絡(Capsule-Net)來檢測DeepFake,并在FaceForensics++數據集[14]上進行評 估。文獻[11-13]方法雖然在各自的數據集上具有有效性,但泛化能力弱,對于高質量的DeepFake 圖像檢測效果不佳。
BONETTINI 等[15]將簡單的注意力機制引入卷積神經網絡中,在FaceForensics++和DFDC 數據集上進行評估,結果表明,注意力機制對于鑒別DeepFake 具有有效性。因此,本文提出一種基于多通道注意力機制的人臉替換鑒別方法。對現有的注意力模型進行擴展,設計一種多通道注意力模塊,根據矩陣相乘的思想融合全局和局部的注意力表示,在注意力模塊連接主網絡的方式上借鑒殘差神經網絡(ResNet)[16]的跳躍連接方法,以減少重要信息損失。在訓練過程中,通過由多通道模塊生成的注意力圖來引導圖像裁剪和去除,從而實現數據增強。
本文方法的整體網絡框架如圖1 所示。將圖片I輸入特征提取器,得到特征F,通過多通道注意力模塊得到注意力圖A,特征圖F與每個通道的注意力圖A按元素相乘得到特征矩陣T,然后通過全連接層得到概率P,從而區分輸入圖片是否為DeepFake 所生成。

圖1 整體網絡框架Fig.1 Overall network framework
1.1.1 特征提取器
本文利用Xception[17]網絡作為特征提取器。與常規網絡卷積操作相比,Xception 的參數量和運算成本較低,且其可以更好地提升網絡訓練效率,在同等參數量以及大規模數據集上,效果優于Inception-v3。此外,在給定硬件資源的情況下,Xception 可以有效提高網絡效率和性能。
1.1.2 多通道注意力模塊
本文多通道注意力模塊以矩陣相乘的方式融合全局和局部注意力表示,再以跳躍連接的方法與主網絡連接。具體的注意力模塊結構如圖1 中的淺色陰影區域所示,整個注意力模塊分為A、B、Q 這3 個分支:
1)A 分支為全局注意力表示。注意力表示方法將特征圖通過16 個1×1 卷積核的卷積層,獲得全局注意力表示,此時更加突出重要的權重,最終得到注意力特征圖F1。
2)B 分支為局部注意力表示。該分支采用CBAM[18]空間注意力表示,空間特征圖F2(F)的計算過程如下:

其中:F為輸入的特征 圖;MaxPool 和AvgPool 分別為最大和平均池化層;f1×1為1×1 大小的卷積核;σ為Sigmoid 激活函數。
對特征圖分別進行基于通道的最大池化和平均池化,在通道上做拼接操作,再經過Sigmoid 激活函數得到特征圖F2。因為最大和平均池化會造成一定的信息損失,所以這里將其稱為局部注意力表示。
3)Q 分支得到經過2 048 個1×1 卷積核卷積后的特征圖F0,其對Feature 多增加一層卷積映射,使網絡學到更多的參數。將Si,j權重應用到F0上,即每一個元素點都與整個Feature 相關,相關性來自于D矩陣。Q 分支的輸出O計算公式如下:

其中:F0(xi)為Q 分支的卷積操作表示。
如圖2 所示,將F0[C×N]矩陣與S[N×N]矩陣的轉置相乘,得到輸出O[C×N]。輸出O中的第i行第j列的元素表示被矩陣S對應第j列元素加權之后的Feature 在第i個通道的值。然后對輸出O進行維度重構,使輸出O恢復為C×W×H尺寸。為了減少訓練時間,在輸出后再加一個簡單的卷積層,最終得到A。

圖2 輸出O 的計算過程示意圖Fig.2 Schematic diagram of calculation process of output O
本文方法使用矩陣相乘的方式來結合全局和局部注意力表示。為了滿足矩陣相乘的條件,將F1和F2的尺寸從2 個維度(H×W維)壓縮為1 個維度(N維),使尺寸從[B×16×H×W]分別變為[B×N×16]和[B×16×N],其中,N=H×W,H和W分別為Feature的長和寬。F1和F2矩陣相乘后得到D矩陣,大小為[B,N,N],其可以看作一個相關性矩陣,即F上各個元素點之間的相關性表示。通過上述過程,既突出了重要權重又避免了重要信息的損失。矩陣D的計算公式如下:

其中:f1和f2分別為由分支A 和B 進行的卷積操作;Di,j可以理解為矩陣D中第i行第j列的元素值,表示F2中第j個元素對F1中第i個元素的影響。
為了防止梯度爆炸問題,將D矩陣逐行通過Softmax 函數得到S矩陣。矩陣S的計算公式如下:

其中:Si,j各行元素之和為1;S矩陣中第i行元素代表Feature 中所有位置的元素對第i個元素的影響,這種影響即為權重。
在連接主網絡的方式上,本文借鑒殘差神經網絡的跳躍連接,引入調節參數ε,使輸出O的權重需要通過反向傳播來更新,具體計算公式如下:

在初始階段,ε為0,輸出y直接返回輸入的F,隨著訓練的進行,輸出y逐漸學習到要將經過注意力機制的F加在原始F上,從而強調了需要施加注意力的部分F。
1.1.3 輸出層
將特征圖F與每個通道的注意力圖按元素相乘,具體計算公式如下:

其中:Ai為注意力圖;M為注意力圖的個數。
相乘之后以拼接的方式得到特征矩陣T,T中的每一行代表一張圖像的所有特征,然后將T特征矩陣輸入線性分類層進行二分類,最終得到概率P從而判斷輸入圖像的真假。
本文方法的損失函數表達式如下:

其中:Le為交叉熵損失;Lc為中心損失。
Le的計算方式如下:

其中:yi為真實標簽值為預測標簽值。
Lc借鑒了中心損失[19]的原理,將原來中心損失的類中心替換成不同特征的特征中心,使同一類別中同一部分的特征盡可能地接近。Lc的計算方式如下:


其中:δ在實驗中初始值取0.05。
本文網絡的訓練過程使用遷移學習中的微調(Fine-tuning)技術。使用Xception 網絡在ImageNet數據集上的預訓練模型,去掉原來的全連接層,添加新的模塊和全連接層,在原有參數的基礎上訓練整個網絡,從而提高實驗效率。同時,本文利用細粒度分類WSDAN 網絡[20]中的訓練方式,通過每一個輪次訓練好的注意力圖來引導一個輪次圖像的裁剪和去除,然后進入網絡進行訓練,從而實現數據增強。具體過程如下:
輸入圖像經過特征提取和注意力網絡后輸出A,尺寸為B×M×W×H,選取M張圖像中權重較高的2 張圖像分別用作圖像裁剪和圖像去除,經過歸一化處理得到A'1和A'2。歸一化計算公式為:

當k=1 時,A1用作裁剪得到mask,計算公式如下:

其中:Cm為得到的mask;θc為設定的裁剪閾值。Cm為不規則形狀的mask,取能包含該mask 的最小的矩形邊界(bounding box),將該矩形邊界坐標覆蓋至原圖,并將該邊界區域放大至原圖大小,即放大已經受到關注的區域,就可得到裁剪圖片以繼續參與訓練。
當k=2 時,A2用作去除得到mask,計算公式如下:

其中:Em為得到的mask;θe為設定的去除閾值。Em與原圖進行對應元素相乘,得到去除后的圖片,使得已經受到關注的區域被消除,保留沒有受到關注的區域,且去除后的圖片繼續參與訓練。
2.1.1 環境設置
本文實驗在單機PC端訓練完成,實驗環境設置如下:處理器為Intel?CoreTMi7-6700HQ CPU@2.60 GHz,顯卡為NVIDIA GeForce GTX 950 M 4 G,操作平臺為Windows 10,軟件平臺為Python3.6,主要依賴庫為CUDA 9.0、cuDNN 7.6。
2.1.2 數據集構成
本文實驗只針對由自編碼器生成的換臉視頻(以下稱為DeepFake)。目前關于鑒別DeepFake 的數據集質量不統一,FaceForensics++(以下簡寫為FF++)的DeepFake 數據集中有些視頻生成效果不佳,人眼就能識別出DeepFake 視頻,因此,本文對FF++(c40)中DeepFake 數據集進行重新人工篩選,將有明顯生成痕跡的假視頻剔除,并在此基礎上擴增數據集,分別由Celeb-DF 數據集[21]、DFD(DeepFake-Detection)數據集[14]、網絡收集構成。為了降低原始數據的復雜度,提升模型訓練穩定性,本文對原視頻做預處理,利用MTCNN[22]進行人臉檢測,把裁剪出的人臉作為輸入圖片,最終數據集中訓練集總共有17 200 張圖片,真假圖片各占一半,為8 600 張,測試集總共有4 300 張,真假圖片各占一半,都為2 150 張。具體的訓練集、測試集構成如表1所示。

表1 數據集信息Table 1 Datasets information
2.1.3 實驗參數設置
模型基于Pytorch 1.1.0 深度學習框架搭建網絡架構,訓練方法為隨機梯度下降法(SGD),初始學習率設為0.001,動量設置為0.95,權重衰減為0.000 01,batch size 為8,輸入圖像大小為300×300,總共進行30 輪的訓練,θc∈(0.4,0.6),θe∈(0.4,0.7)。在訓練過程中,采用微調的訓練方式,提取Xception 除全連接層外的最后一層,即得到的特征圖數量為2 048。
2.1.4 評估標準
本文實驗采用的評估標準為精度(Accuracy),其定義如下:

其中:TTP為真陽性;TTN為真陰性;FFP為假陽性;FFN為假陰性。本文實驗中將人臉真圖定義為正類,人臉假圖定義為負類。
本文方法和其他鑒別方法在測試集上的測試精度對比如表2 所示。從表2 可以看出,與其他基于深度學習的檢測方法相比,本文方法測試精度最高,測試精度相 比Xception[14]方法提高了2.63 個百分點,相比B4Att[15]方法提高了1.35 個百分點,充分驗證了本文方法的有效性。

表2 6 種方法的測試精度對比Table 2 Comparison of test accuracy of six methods %
在FF++(c40)、Celeb-DF、DFD[23]數據集上分別進行測試對比,結果如表3 所示。從表3 可以看出:各方法在Celeb-DF 和DFD 數據集上的測試精度均低于FF++數據集;本文方法在Celeb-DF 和DFD 數據集上的測試精度能達到97.85%和92.17%,且在FF++數據集上,本文方法的測試精度相比B4Att[15]提高了0.45 個百分點,在挑戰性相對較高的Celeb-DF 和DFD 數據集上,測試精度分別提高4.68 和3.59 個百分點,本文方法整體性能優于其他對比方法,泛化能力更強;S-MIL-T 是基于視頻的檢測方法,相比其余基于圖片的檢測方法,其只在Celeb-DF數據集上表現突出。

表3 在FF++、Celeb-DF、DFD 數據集上的測試精度對比Table 3 Comparison of test accuracy on FF++,Celeb-DF and DFD datasets %
本文還在具有代表性的測試圖例上進行實驗對比,結果如表4 所示,其中,第一、第二幅圖為FF++數據集,第三、第四、第五幅圖為Celeb-DF 數據集,最后一幅圖為DFD 數據集,表格內“√”代表該網絡能正確判斷該圖為DeepFake 圖片,“×”代表網絡將圖片誤判為真圖。表4 中給出的例子實際均為DeepFake圖片,從第一幅圖片的測試結果可以看出,生成效果不佳的DeepFake 圖片有明顯的偽影邊界,表中方法均能鑒別出該圖為DeepFake 圖片,但隨著DeepFake圖片質量的提升,其他方法會出現誤判的情況,而本文方法仍然能夠正確地鑒別出該圖為DeepFake圖片。

表4 DeepFake 圖片的鑒別結果Table 4 Identification results of DeepFake pictures
對本文所設計的模型進行消融實驗,測試精度對比情況如表5 所示。其中:Base model 為直接使用Xception 網絡進行分類鑒別的模型;+Attention 為在Base model 上添加本文注意力機制的模型;eraser mask、crop mask 分別為注意力引導的圖像去除、裁剪的模型;最后4 行All 代表本文模型在不同的預訓練模型(ResNet101[16]、VGG19[24]、Inception-v3[25]、Xception)上進行測試。從表5 可以得出:

表5 消融實驗結果Table 5 Results of ablation experiment %
1)在Xception 網絡的基礎上加入本文設計的Attention 模塊,測試精度有2.27 個百分點的提升;在基礎模型上添加中心損失,測試精度也有0.44 個百分點的提升;添加A、B 不同分支的注意力表示,對基礎模型的測試精度分別有2.13 和2.18 個百分點的提升,即局部和全局注意力表示均能發揮一定作用,將它們相結合后精度能夠進一步提升。
2)在多通道注意力模塊的基礎上引入注意力引導的圖像裁剪和去除,測試精度能夠提升0.28 個百分點;裁剪的作用(提升0.22 個百分點)比去除的作用(提升0.08 個百分點)更明顯,即對于鑒別DeepFake,裁剪的圖像有利于網絡提取到更細節的特征。
3)在不同的特征提取網絡的基礎上,本文設計的多通道注意力模塊的測試精度都能達到97%以上,其中Xception 網絡效果最好。
本文針對DeepFake 圖片鑒別問題,建立一種基于多通道注意力模塊的鑒別網絡模型。將注意力模塊添加到現有的預訓練模型中,融合全局和局部注意力表示以避免重要信息損失。在訓練過程中使用注意力引導的圖像裁剪和去除的訓練方式,從而起到數據增強的作用。在FF++、Celeb-DF 和DFD 數據集上的實驗結果表明,該模型泛化能力較強,測試精度優于B4Att、S-MIL-T 等方法。但是,本文模型難以直接對輸入視頻進行鑒別,也未利用視頻中各幀之間的相關性信息,對以上問題進行研究以提升模型的檢測性能將是下一步的研究方向。