陳俊韜,朱子奇
(武漢科技大學 計算機科學與技術學院,武漢 430081)
隨著數字時代的發(fā)展,大量含有篡改圖像的虛假新聞在網絡上傳播。在案件分析、法庭取證等重要領域,數字圖像常常作為重要的物證,而圖像偽造技術會混淆事實,給社會帶來巨大危害。
復制-粘貼偽造是一種常見的圖像偽造技術[1]。在復制-粘貼偽造中,圖像的一部分區(qū)域(源區(qū)域)被復制粘貼到同一張圖像的其他區(qū)域(目標區(qū)域),以隱藏部分內容或增加部分內容,這改變了圖像原本的語義信息[2]。為了讓偽造圖像更逼真,通常會對被篡改的圖像內容執(zhí)行一些幾何學變換(如旋轉、縮放、變形等)和后處理操作(如圖像模糊、噪聲添加、JPEG 壓縮等)。復制-粘貼偽造檢測(Copy-Move Forgery Detection,CMFD)就是分析一張圖像是否經過復制粘貼偽造,輸出二進制掩碼,其中,黑色部分表示背景(未篡改區(qū)域);白色部分表示源-目標區(qū)域。
早期的CMFD 研究可以追溯到20 世紀初,主要集中在傳統(tǒng)的機器學習方法[3]。傳統(tǒng)的CMFD 方法[4]主要分為兩類:基于塊的方法和基于關鍵點的方法。基于塊的技術將輸入圖像分割為固定大小的重疊/不重疊的塊,再進行特征提取,最后匹配塊特征,目前已有許多提取塊特征的方法,如離散余弦變換[5]、主成分分析[6]、奇異值分解[7]、梯度直方圖[8]、局部二進制模式[9]、zernike 矩[10]等;但這些方法計算代價高昂。基于關鍵點的技術提取具有魯棒性的關鍵點特征,并通過相似性匹配來定位被篡改的區(qū)域,尺度不變特征變換(Scale-Invariant Feature Transform,SIFT)[11]和加速穩(wěn)健特征(Speeded Up Robust Features,SURF)[12-13]是其中最流行的CMFD 方法;但是當源-目標區(qū)域光滑時(如天空),這些方法經常檢測失敗。Meena 等[14]提出了結合基于塊和關鍵點的方法,利用兩者互補的特點,取得了良好的效果。傳統(tǒng)方法基于先驗知識手工提取的特征通常只在特定數據集上表現良好,泛化能力卻不足。
近十年,深度學習在計算機視覺領域取得了大量成果,因此,一些研究者試圖用深度學習處理CMFD[15]。與傳統(tǒng)方法相比,深度學習方法使用神經網絡自動提取圖像特征,替代了手工提取特征,模型的表現效果往往更好,而且具有良好的泛化能力。由于CMFD 領域公開的數據集只有幾百到幾千張圖像,而深度學習方法常常需要大量的數據驅動,Ouyang 等[16]使用遷移學習,把AlexNet 在ImageNet 數據集上的預訓練模型放到少量的CMFD 數據集上作微調,最后輸出二分類結果(真/偽),該方法在簡單的復制-粘貼偽造圖像上表現良好,但是無法像素級地定位篡改區(qū)域。Wu 等[17]最先提出了像素級的端到端深度神經網絡(Deep Neural Network,DNN)。由于區(qū)分偽造圖像中的源-目標區(qū)域也十分重要,隨后他又開創(chuàng)性地提出了BusterNet[18],該網絡并行組合兩個子網絡:Simi-Det 用于檢測相似區(qū)域;Mani-Det 用于檢測篡改區(qū)域。BusterNet 最先做到了區(qū)分源-目標區(qū)域,但是需要兩個分支的輸出結果都正確才能保證最終的結果可靠;而且,BusterNet 的相似性檢測網絡在特征提取時只使用了單一尺度的特征,無法有效檢測出經過縮放的篡改區(qū)域,因此性能有限。Chen 等[19]改進了BusterNet,提出串行組合兩個子網絡的方法,將前一個網絡的輸出作為后一個網絡的輸入,子網絡CMSDNet(Copy-Move Similarity Detection Network)負責檢測圖像中的相似區(qū)域,STRDNet(Source Target Region Distinguishment Network)負責對CMSDNet 輸出的相似區(qū)域中的源-目標區(qū)域進行區(qū)分。CMSDNet 中使用空洞卷積提取多尺度特征,并使用雙重自相關匹配以有效利用多層次的特征,使CMFD 性能得到了明顯提升。
在CMFD 中,圖像中的篡改區(qū)域通常比未篡改區(qū)域小很多,以上深度學習方法在訓練過程中使用交叉熵損失函數,該損失函數逐像素地計算篡改區(qū)域與背景,模型在訓練過程中會學到更多的背景特征,導致輸出的預測結果偏向于把篡改區(qū)域標記為背景,進而拉低了評估指標。同時,這些模型采用沙漏結構,在編碼過程下采樣丟失的空間信息在解碼過程的上采樣后無法恢復,這些模型沒有利用編碼特征以在解碼過程中彌補丟失的信息,導致圖像中被篡改的小目標的空間信息丟失,從而對小目標的邊界識別不精確,影響了輸出結果的可視化效果。
本文針對相似性檢測問題,進一步改進了檢測模型的性能。首先,在特征提取模塊的第4 個卷積塊中,并行設置3 個不同空洞率的空洞卷積層,進行多尺度的特征提取,再分別進行自相關特征匹配,最后融合這些分支的特征,這樣可以有效地檢測到不同大小的篡改目標;其次,在特征提取模塊與解碼模塊之間添加跳躍連接,彌補編碼特征與解碼特征之間的差異;最后,使用Log-Cosh Dice Loss 函數替代交叉熵損失函數,解決CMFD 中存在的類別不平衡問題。
在CMFD 中,基于深度學習的方法通常可以分為3 個組成部分:特征提取、自相關匹配以及掩碼解碼。BusterNet 中的相似性檢測子網絡Simi-Det 的特征提取模塊由VGG16[20]的前4 個卷積塊組成。自相關匹配模塊使用前面提取的特征矩陣與自身的轉置做乘法,逐像素計算相似性。在掩碼解碼過程中使用Inception[21]與上采樣層逐漸恢復圖像的尺寸,最后使用Sigmoid 激活函數輸出二進制掩碼。
CMSDNet[19]用于檢測圖像中的相似區(qū)域,定位出復制粘貼偽造圖像中的源-目標區(qū)域。該網絡的特征提取模塊的前3 個卷積塊與VGG16 對應的部分相同,第4 個卷積塊使用3個串行的空洞卷積以增加過濾器的感受野[22],并去掉了池化層以提高分辨率。自相關匹配模塊使用特征提取模塊中第3 個和第4 個卷積塊的輸出特征,分別先經過通道注意力增強重要特征,再進行特征自匹配來識別相似的特征,最后把兩個分支的特征圖融合,這種雙重自相關操作可以匹配到多層次的特征。在掩碼解碼模塊,先用空洞空間金字塔池化(Atrous Spatial Pyramid Pooling,ASPP)獲取多尺度的特征,再通過帶有空間注意力的卷積層和上采樣層逐漸恢復特征圖的分辨率,最后使用Softmax 激活函數輸出二進制掩碼。
CMFD 也可以看作是圖像分割任務,目標是逐像素地分類圖像中的篡改部分與非篡改部分。U-Net[23]在醫(yī)學圖像分割領域應用廣泛,它巧妙地使用跳躍連接,將編碼器下采樣前的特征與對應的解碼器特征融合,消除編碼器中下采樣操作導致的編碼特征與解碼特征之間的差異,從而更精準地分割醫(yī)學圖像中的病灶。
基于以上研究,本文在特征提取模塊中把第4 個卷積塊中的空洞卷積層并行組合,使用了多尺度特征提取、多重自匹配,用特征融合的方法檢測圖像中不同尺寸的篡改目標。利用跳躍連接把不同分辨率的編碼特征傳遞給解碼器,幫助解碼器更精準地定位篡改區(qū)域。
由于現有方法存在引言中所描述的不足,本文繼續(xù)對網絡結構進行優(yōu)化,提出的相似性檢測網絡結構如圖1 所示,記為SimiNet。

圖1 SimiNet結構Fig.1 Structure of SimiNet
本文提出的SimiNet 可以分為3 個模塊:特征提取模塊、自相關模塊以及解碼模塊。
在特征提取模塊中,編碼器使用VGG16 的前3 個卷積塊。由于復制粘貼偽造圖像時常常會對篡改區(qū)域進行縮放操作,利用多尺度特征可以有效識別出CMFD 中被縮放的篡改區(qū)域。因此,在編碼器后面加入空洞卷積,并把這3 個空洞卷積并行組合,擴大過濾器的感受野,獲取更多不同尺度的信息,還可以讓后續(xù)的自相關模塊同時進行三重自匹配。
在自相關模塊中,SimiNet 很自然地直接使用特征提取模塊中3 個并行組合的空洞卷積的輸出特征進行三重自相關匹配,因此可以匹配到更多尺度上的特征并共享信息。在自相關操作前,特征圖先經過通道注意力(Channel Attention,CA)處理,以關注通道上的重要信息。具體地,特征提取模塊輸出的3 個特征圖大小為32×32×512,可以看作32×32 個塊特征,每個塊特征 512 維,即F={F[i,j]|i,j∈{ 0,1,…,31} }。自相關匹配會計算特征圖中每個塊之間的相似性,使用皮爾遜相關系數ρ來量化特征之間的相似性,計算公式如下:
最后,自相關模塊輸出形狀為32×32×1 024 的張量S;接著把得到的張量S中各維度的相似性分數按從高到低排序;再通過百分比池化操作過濾掉其中不相關的信息,該操作同時也降低了特征的維度。執(zhí)行百分比池化操作前,特征的總維度是1 024,百分比池化操作后保留其中的128 個維度的特征。最后把三重自相關匹配的輸出結果進行融合操作。
在解碼模塊中,由于復制-粘貼的區(qū)域可能經過縮放,先使用空洞空間金字塔池化(ASPP)提取多尺度特征。接著使用多個Inception 變體進行多尺度的特征提取和融合,每個Inception 后接一個上采樣操作以逐漸恢復圖像的尺寸。由于特征提取模塊中的下采樣操作以及解碼模塊中的上采樣操作,使編碼特征與解碼特征之間存在差異。網絡淺層的低級別特征中包含更多的偽造痕跡,而深層的高級別特征中包含更多的語義信息,在CMFD 中含有鑒別偽造痕跡的特征往往比語義特征更重要。為了彌補這些差異,本文把特征提取模塊中第2、3 個卷積塊的輸出特征經過跳躍連接操作后與對應的解碼特征融合,幫助解碼器更精準地定位篡改區(qū)域:
其中:concat 是融合操作;conv3×3是核大小為3×3 的卷積操作,conv1×1是核大小為1×1 的卷積操作;Fe、Fd分別表示編碼特征與解碼特征。在初步實驗中發(fā)現,在特征提取模塊的第1 個卷積塊后添加跳躍連接會損害復制粘貼偽造檢測的精度,因此,在第1 個卷積塊后不添加跳躍連接。最后通過一個標準卷積層與Softmax 激活函數,輸出二進制掩碼。
在CMFD 中,篡改區(qū)域通常比背景面積小很多,這種現象被稱為類別不平衡。當前CMFD 方法中常用的交叉熵損失函數逐像素計算篡改區(qū)域與背景,模型在訓練過程中會學到更多的背景特征,導致輸出的預測結果偏向于把篡改區(qū)域標記為背景。因此,交叉熵損失函數不是一種良好的應對類別不平衡問題的方法,而一個合適的損失函數對于深度學習至關重要,此處要求選擇的損失函數在監(jiān)督模型訓練時忽略大量的背景像素,重點關注篡改區(qū)域。
CMFD 任務中常用的評估指標為F1 分數,它在計算中忽略了大量的背景像素,因此,適用于類別不平衡問題。Dice系數的計算方式等價于F1 分數。因此,理論上來說使用由Dice 系數生成的Dice Loss 作為損失函數,訓練得到的模型表現更好。但是Dice Loss 是非凸函數,它會給訓練過程帶來不穩(wěn)定性與不確定性,從而導致訓練損失無法收斂或者得到的只是局部最優(yōu)解,而不是全局最優(yōu)解。本文使用Log-Cosh Dice Loss[24]作為損失函數,Log-Cosh 方法被廣泛應用于基于回歸問題的曲線平滑,可以表示為:
其中,L′(x)為L(x)的導數。由于tanhx的值域為[-1,1],L(x)的一階導數連續(xù)且有界,因此,Log-Cosh 方法可以修復Dice Loss 的非凸特性。假設模型輸出的二進制掩碼為p,真實的掩碼為y,損失函數計算公式如式(6)~(7)所示,SimiNet 的目標是最小化損失Llc-dce。
CMFD 領域公開的數據集通常只有幾百到幾千張圖像。Wu 等[18]創(chuàng)建了一個包含105張圖像的合成數據集USCISI,以8∶1∶1 的方式劃分為訓練集、驗證集和測試集。將本文的SimiNet 在USCISI 訓練集上進行訓練,在驗證集上挑選超參數,最后在測試集上驗證效果。同時,為了測試SimiNet 的泛化能力,在兩個公開數據集CASIA v2.0[25]與CoMoFoD[26]上驗證模型的表現。這3 個數據集的詳細信息如表1 所示。CASIA 數據集是Wu 等[18]從CASIA v2.0 中手動挑選的1 313張復制粘貼偽造圖像,并生成了對應的真實掩碼,沒有使用該數據集全部的復制粘貼偽造圖像。

表1 數據集信息Tab.1 Information of datasets
本文使用像素級的F1 分數作為評估CMFD 表現的指標。評價方法與BusterNet[18]中的方案B 相同,即先計算每張圖像的F1 分數,然后在整個測試集上取平均值。對于一張測試圖像,在像素級上計算TP(True Positive)、FP(False Positive)、FN(False Negative)。其中,TP表示正確識別出的被篡改的像素;FP表示錯誤標記為被篡改的像素(誤報);FN表示錯誤標記為未篡改的像素(漏報)。分別按如下公式計算準確率P和召回率R:
用式(9)計算像素級的F1 分數;F1 分數越大,檢測效果越好。
SimiNet 的全部代碼都是使用keras 框架實現。訓練時使用Nadam 優(yōu)化器,初始學習率設置為0.001,批大小為16。當驗證損失連續(xù)10 輪不下降,將學習率調整為10-4并繼續(xù)訓練,當驗證損失再次經歷10 輪不下降就停止訓練,選擇其中表現最好的一組權重。本文不對模型輸出的二進制掩碼執(zhí)行任何的后處理操作。
3.4.1 消融實驗
本文通過消融實驗驗證SimiNet 是否有益于CMFD,實驗結果如表2 所示,其中:base 表示基礎模型(特征提取模塊中串行排列3 個空洞卷積,并且不使用跳躍連接);skip 表示添加了跳躍連接;multi-channel 表示使用并行的空洞卷積并進行多重自相關匹配。可以看出,相較于模型1,添加跳躍連接后的模型2 的F1 分數提升了4.19 個百分點,驗證了跳躍連接的有效性,它彌補了編碼特征與解碼特征之間的差異,因此能更精確地定位篡改區(qū)域的邊界。把base 中串行排列的空洞卷積改為并行,并且進行多重自相關匹配后,模型3的性能大幅提高,F1 分數相較于模型1 提升了9.54 個百分點,驗證了多尺度特征提取與融合對CMFD 的重要性,這是因為復制粘貼偽造圖像中的篡改區(qū)域通常都經過縮放,利用多尺度的特征可以有效識別出這些篡改痕跡。在此基礎上繼續(xù)添加跳躍連接,相較于模型3,模型4 的F1 分數又提升了1.16 個百分點。綜上,與基礎模型相比,模型4(即SimiNet)的F1 提高了10.7 個百分點,后續(xù)的實驗都使用表現最好的這一組模型。以上結果驗證了多尺度特征提取與融合以及跳躍連接的有效性。

表2 SimiNet在USCISI數據集上的消融實驗結果Tab.2 Ablation experimental results of SimiNet on USCISI dataset
3.4.2 Log-Cosh Dice Loss與交叉熵損失對比
交叉熵損失逐像素計算篡改區(qū)域與背景,在CMFD 中類別不平衡的情況下,使用交叉熵損失會偏向于把偽造區(qū)域識別為背景,導致F1 分數偏低。Dice 損失在圖像分割中十分常用,對于輕微的數據不平衡問題有一定的幫助[24]。本文使用Log-Cosh Dice Loss 替代交叉熵損失,對BusterNet 的相似性檢測子網絡(簡寫為BusterNet-simi)、CMSDNet 以及本文的SimiNet 這3 個模型進行對比實驗,并對比了分別使用Log-Cosh Dice Loss 與交叉熵損失進行訓練的表現差異,結果見表3。可以看出,使用Log-Cosh Dice Loss 作為損失函數的實驗組都表現得比使用交叉熵的對照組好,F1 分數分別提高了3.56、2.08 和2.14 個百分點。而且,同樣使用Log-Cosh Dice Loss 作為損失函數,SimiNet 的F1 比CMSDNet 提高了1.31 個百分點,再次驗證了本文方法的有效性。

表3 在USCISI數據集上3個模型使用不同損失函數的F1 單位:%Tab.3 F1 scores of three models with different loss functions on USCISI dataset unit:%
3.4.3 在USCISI數據集上的實驗對比
為了驗證本文SimiNet 的有效性,將兩種傳統(tǒng)方法與兩種基于深度學習(deep learning)的方法作為對比基線。傳統(tǒng)方法中,本文選擇了文獻[27]中的基于塊(block-based)的方法與文獻[28]中的基于關鍵點(key point-based)的方法;兩種深度學習方法分別是BusterNet-simi[18]與CMSDNet[19],實驗結果如表4 所示。可以看出,深度學習方法比傳統(tǒng)方法表現更好。SimiNet 表現最佳,F1 分數達到了72.54%,比次優(yōu)的CMSDNet 方法提高了3.39 個百分點,因為SimiNet 使用了多尺度特征提取和融合,進行了三重自相關匹配,還引入了跳躍連接以及Log-Cosh Dice Loss。同時,SimiNet 的參數量比CMSDNet 更小,說明了SimiNet 的性能提升不是因為模型更復雜引起的,而是由于模型的結構更適用于CMFD。在時間復雜度方面,SimiNet 的運算量也比CMSDNet 更少,表明SimiNet 的運行效率更高。綜上,SimiNet 的性能從整體上超越了CMSDNet 方法。

表4 不同類別方法在USCISI數據集上的檢測表現對比Tab.4 Comparison of detection performance of different types of methods on USCISI dataset
3.4.4 在CASIA與CoMoFoD數據集上的實驗對比
為了測試模型的泛化能力,本文在兩個公開數據集(CASIA 與CoMoFoD)上進行實驗。CASIA 數據集中包含的部分圖像把目標區(qū)域復制粘貼到具有相似背景的其他位置,導致圖像的偽造檢測難度更大。觀察表5 可以看出,SimiNet在兩個數據集上都取得了最好的結果,雖然與次優(yōu)的CMSDNet 方法表現接近,但是SimiNet 的參數量與運算量都比CMSDNet 小,模型更輕量化。與CMSDNet 相比,SimiNet 的優(yōu)勢在于能更精確地定位被篡改的小目標的邊界。從表5中還可以發(fā)現,深度學習方法整體上比傳統(tǒng)方法表現更好,這兩個傳統(tǒng)方法在CASIA 數據集上表現不理想,但是在CoMoFoD 數據集上的檢測結果與深度學習方法差距不大。

表5 在CASIA與CoMoFoD數據集上的F1對比 單位:%Tab.5 Comparison of F1 on CASIA and CoMoFoD datasets unit:%
CoMoFoD 數據集中應用亮度改變、對比度調整、顏色降低、圖像模糊、JPEG 壓縮與高斯噪聲添加等后處理操作,可以用來測試模型對抗攻擊的能力。實驗結果如圖2 所示,可以看出,SimiNet 總體表現良好,具有一定的抗攻擊性,但是對JPEG 壓縮比較敏感,特別是當壓縮因子為20 或30 時,壓縮程度太高,模型表現不佳。這可能是由于訓練集中的圖像被壓縮的程度較低,模型沒有學習到抗JPEG 壓縮的特性。

圖2 在CoMoFoD(帶攻擊)數據集上的F1分數Fig.2 F1 scores on CoMoFoD dataset under attacks
本文在圖3 中可視化展示了一些檢測結果的對比圖像,并標出了對應的F1 分數。從圖3 可以看出,SimiNet 比其他方法定位的偽造區(qū)域更精確,對圖像篡改區(qū)域的邊界的識別效果更好,這主要是由于引入的跳躍連接彌補了編碼特征與解碼特征之間的差異。觀察圖3(b)中圖像5 可以發(fā)現,SimiNet 可以精確檢測到圖中小人的兩條腿,預測的結果與真實的掩碼很相似,而其他兩個方法的輸出無法區(qū)分人的兩條腿。類似的結果還有圖3(a)中圖像3 中的天鵝與圖像4中的小狗,這驗證了本文方法的有效性。同時,F1 分數高的預測結果在視覺上確實表現更佳,證明了該評估指標的有效性。

圖3 相似性檢測的可視化比較與對應的F1分數Fig.3 Visual comparison of similarity detection and corresponding F1 scores
本文提出了一種基于多尺度特征提取與融合的方法SimiNet 用于圖像復制粘貼偽造檢測。使用多尺度特征提取與融合方式,可以有效檢測出復制粘貼偽造圖像中經過縮放的篡改目標;添加跳躍連接可以幫助解碼器利用編碼器中高分辨率特征圖中的偽造痕跡來更精確定位篡改區(qū)域;Log-Cosh Dice Loss 可以有效應對CMFD 中存在的類別不平衡問題。在3 個公開數據集上的實驗結果驗證了SimiNet 比其他對比的CMFD 方法表現更好。
在CMFD 任務中,相似性檢測通常是區(qū)分源-目標區(qū)域的先決條件,它的效果直接決定了后續(xù)區(qū)分源-目標區(qū)域工作的可靠性。下一步計劃研究區(qū)分源-目標區(qū)域的方法,這對于CMFD 也十分有意義。