沈萬里,張玉金,胡 萬
(上海工程技術大學 電子電氣工程學院,上海 201620)
圖像修復[1-2]是用看似合理的內容來填充圖像中缺失的區域,在圖像處理和計算機視覺領域有廣泛的應用,例如修復損壞的照片和移除不想要的物體;然而,圖像修復技術也可能被惡意利用來篡改和刪除圖像內容,使其成為偽造圖像的強大工具。近年來,關于惡意使用圖像修復技術的信任問題和安全問題受到廣泛關注,例如在法庭上使用修復的圖像作為證據、移除關鍵對象來報告假新聞、擦除可見的版權水印等。隨著深度學習技術的快速發展,傳統圖像修復方法得到了實質性的改進,使互聯網上的修復偽造圖像更加泛濫。因此,為解決圖像修復帶來的信任和安全問題,檢測圖像是否被修復以及進一步定位修復區域具有重要的理論研究意義和應用前景。
典型的圖像修復方法主要有三類:基于擴散的修復方法、基于圖像塊的修復方法和基于深度學習的修復方法[3]。針對基于擴散和圖像塊的修復已有一些有效的取證方法[4-7],然而針對深度圖像修復的取證工作相對較少。Zhu等[8]在2018 年首次提出一種基于深度神經網絡的圖像修復取證算法,使用一個由標簽矩陣和加權交叉熵監督的編碼器-解碼器網絡來捕獲修復痕跡。Wu 等[9]提出了一種通用的偽造定位網絡(Manipulation Tracing Network,MT-Net),利用神經網絡強大的學習能力對輸入圖像的異常進行分類實現篡改區域像素級的定位。為了進一步提高檢測精度,Li等[10]設計了一種基于深度修復的圖像區域定位方法,采用高通預濾波模塊來抑制圖像內容,增大修復區域和未修復區域之間的差異,達到了較高的測試精度。
深度圖像修復模型可以利用高級語義信息生成更復雜的結構乃至是新的對象[11],獲得視覺上更加逼真的修復圖像。針對深度圖像修復取證問題,上述方法僅針對單一的深度修復技術進行取證分析,而在現實生活中深度修復技術種類繁多,現有方法難以滿足實際需求。此外,對于修復偽造的圖像,修復區域和未修復區域通常具有類不平衡問題,即修復區域通常面積遠小于未修復區域,給現有取證方法加大了檢測難度。
本文提出一種面向圖像修復取證的U 型特征金字塔網絡(Feature Pyramid Network,FPN),通過自上而下的VGG16[12]模塊進行多尺度特征提取,利用自下而上的特征金字塔架構對融合后的特征圖進行上采樣,在獲取豐富的圖像特征的同時,增強了高級特征的表示能力,以應對多種深度修復方法的取證場景。為了解決修復區域和未修復區域通常具有類不平衡的問題,本文結合全局和局部注意力機制凸顯修復痕跡,使用融合損失函數以提高修復區域的預測率。
特征金字塔網絡(FPN)[13]實現了在像素域的圖像分割,圖像修復取證旨在判斷圖像中的像素是否被修復,在某種意義上與圖像分割的目的相似,即確定圖像中每個像素所屬的對象類別。受此啟發,本文提出面向圖像深度修復取證的U型特征金字塔網絡(U-shaped FPN,U-FPN),算法流程如圖1所示。通過VGG16 模塊提取高維和低維特征,底層的高維特征圖與上一層特征圖通過像素相加的融合方式[14]輸出并向上采樣,整體流程形成U 型結構。各層特征圖經過全局和局部注意力機制進行權重分配后,通過數據拼接方式融合并輸出,最后通過融合損失函數模塊做決策判定。

圖1 本文算法流程Fig.1 Flow of the proposed algorithm
U-FPN 使用了自上而下、自下而上和橫向連接的架構,架構整體形成U 型,如圖2 所示。圖2 中x、y、z分別表示卷積核的個數、大小和步長。深度修復取證主要強調修復區域留下的痕跡,需要深度網絡學習更加豐富的特征[15]。

圖2 U-FPN圖像修復取證網絡Fig.2 U-FPN image inpainting forensics network
針對現實生活中種類繁多的深度修復技術,修復區域在規模、形狀和位置上具有明顯的差異,單一采用FPN 自下而上的卷積和池化層,無法有效處理這些復雜的修復痕跡。VGG16 模塊卷積層深度更大,能獲取深度圖像修復取證所需的豐富特征圖,同時該模塊使用了有填充的卷積模式,保證了卷積層的輸入和輸出尺寸一致。因此,VGG16 特征提取模塊可以較為有效地處理這些復雜的修復痕跡。VGG16特征提取模塊由13 個卷積層和4 個2×2 的最大池化層組合而成,結構如表1 所示。

表1 VGG16特征提取模塊的結構Tab.1 Structure of VGG16 feature extraction module
U-FPN 以VGG16 作為自上而下的路徑,這種下采樣可以進行多尺度特征提取,獲取圖像修復取證所需的豐富特征圖。本文分別將下采樣過程中的Conv1-2 和Conv2-2 作為低維特征圖,Conv3-3、Conv4-3 和Conv5-3 作為高維特征圖輸出。在自下而上的路徑中,底層的Conv5-3 高維特征圖做上采樣操作,同時輸出得到特征圖{P5}。為克服上采樣過程在一定程度上導致的信息失真,本文算法在自上而下的路徑(收縮路徑)和自下而上的路徑(擴展路徑)之間建立橫向連接架構,將收縮路徑的特征映射和從擴展路徑的特征圖融合在一起來增強高級特征的表示能力,特征融合的具體方式如圖3 所示,下層特征圖通過2 倍上采樣后,與每一層通過1×1卷積的特征圖進行融合。為消除上采樣的混疊效應,經過融合的特征圖會通過一個步長為2 的3×3 卷積核后繼續向上采樣并輸出。經過4 次上采樣過程后,生成最后需要的特征圖{P1,P2,P3,P4,P5}。

圖3 特征融合方式Fig.3 Method of feature fusion
上采樣后的特征圖{P1,P2,P3,P4}將通過的卷積層、BN層(Batch Normalization)和ReLU 層(Rectified Linear Unit)使通道減半后進行輸出,得到的特征圖將分別輸入到注意力機制生成更好的檢測結果。深度圖像修復檢測不同于FPN 需要對多尺度的特征圖進行預測,U-FPN 將特征圖通過像素相加的方法(Element-wise addition)進行融合,可以較充分地利用特征在不同尺度之間的相關性,從而得到更準確的檢測結果。
針對修復區域和未修復區域像素不平衡問題,本文將U-FPN 中提取的特征圖{P1,P2,P3,P4,P5}輸入全局和局部注意力機制模塊,通過注意力機制減少誤分類像素的數量,并提高局部特征的一致性。各層特征圖通過注意力機制凸顯修復痕跡后,將通過數據拼接的方式進行融合,融合后的特征圖將通過一個的3×3 卷積核輸出,并得到與輸入圖像具有相同尺寸的特征圖,該特征圖具有兩個通道,表示為Z=[z0,z1],其中z0和z1分別代表未修復和修復的像素。最終的特征圖將通過Softmax 邏輯回歸(Softmax Regression)進行分類。修復類的概率矩陣表示為:
其中:m=0,1 表示未修復和修復的類,根據概率矩陣P得到最終預測的標簽矩陣:
其中:1 ≤i≤H,1 ≤j≤W,Mo(i,j) 表示修復圖像Mo的第(i,j)像素,H和W分別表示圖像的高度和寬度。
圖像修復檢測結果可以分為正樣本和負樣本兩類,即修復區域像素和未修復區域像素,而卷積神經網絡在長時間建模過程中可能會產生錯誤分類的像素,降低檢測準確率[16]。同時為了有效解決修復區域和未修復區域通常具有的類不平衡問題,本算法結合全局和局部注意力機制[17]用于提高檢測結果:全局注意力機制旨在分類任務中,通過類內方差最小化的技術來減少誤分類像素的數量;局部注意力機制用于提高特定區域內的特征一致性。全局和局部注意力機制具體過程如圖4 所示(Cov.表示卷積操作,Avg.表示取平均值操作),下面對上述兩種注意力機制分別進行介紹。

圖4 全局和局部注意力機制Fig.4 Global and local attention mechanisms
1.2.1 全局注意力機制
全局注意力機制旨在分類任務中,通過類內方差最小化的技術來減少誤分類像素的數量。實驗設置中,對于特征圖中的最相似的特征塊,使用其最相似的T個類的平均值代替,以達到減少同一類之間差異的作用。當使用X作為輸入時,假設?(X)是通過U-FPN 各層輸出的特征圖,從?(X)中提取所有1×1 的類組成一個集合P。對于每個Pj∈P的類,在P內的內余弦相似度可以用式(3)進行計算:
為計算所有的Sj,k,設置一個相似性閾值τ來為集合P內的Pj選擇最相似的類。在實驗中,令N={k|Sj,k≥τ} 為Top?T中所有最相似類的索引,得到N={n1,n2,…,nT}。相似性搜索的過程可以通過修改的卷積層來進行,以減少由循環操作引起的計算負擔[17-18],實驗通過對應的頂部T個最相似類的平均值來更新每個Pj∈P,即,更新后的將隨著訓練過程增加類內相似度。根據文獻[9],當τ=0.5 時,計算得出相似類的概率最高,此時的T=5。
1.2.2 局部注意力機制
相鄰像素通常與中心像素高度相關,由此本算法加入了一個局部注意模塊來提高特定區域內特征的一致性。類似于全局注意力機制的過程,實驗以加權的方式用相鄰像素區域來更新中心像素區域。為了反映局部相關性,本算法利用局部小窗口中的相鄰像素區域,定義了一個大小為5×5 的權重矩陣Wl與Pj進行卷積,以獲得更新后的特征,即:=Wl?Pj。根據文獻[17],Wl定義為:
損失函數通過掩膜標簽和網絡預測圖來衡量網絡性能。實驗設置中,使用二元交叉熵損失函數(Binary Cross Entropy,BCE)來訓練網絡,訓練損失被定義為:
其中:(Mg,Mo)表示一對掩膜標簽和網絡預測圖,Mg(i,j)和Mo(i,j)分別表示Mg和Mo的第(i,j)個像素。
然而在大多數的修復取證中,圖像中的篡改區域(正樣本)往往比未篡改區域(負樣本)小得多,占主導地位的負樣本會造成大部分損失,正樣本信息較少導致真陽率(True Positive Rate,TPR)下降。為解決上述問題,本文將BCE 函數和焦點損失函數融合成新的損失函數。焦點損失函數意在標準的交叉熵損失中增加一個調制項,以便集中學習困難樣本(修復區域面積遠小于未修復區域)。焦點損失函數被定義為:
其中:γ是一個聚焦參數,用來平滑地調整簡單樣本的降重速率。當γ=0 時,此融合損失函數相當于二元交叉熵函數,并且隨著γ變大,調制因子的影響同樣增加。通過大量的實驗分析,γ=2 時算法性能最佳。α是分配困難樣本的權重,用于進一步調整樣本之前的不平衡性。樣本修復區域的比例大多在0%~50%,實驗設置α=0.75 來平衡困難樣本。融合損失函數可以進一步表示為:
本文從ImageNet 數據集[19]準備了訓練和測試數據,數據集中的圖像尺寸不同,均以JPEG 文件形式儲存,品質因子(Quality Factor,QF)為96、85 和75,對于不同品質因子,分別從ImageNet 中隨機選擇50 000 張圖像作為訓練集。該數據集通過文獻[20]方法對圖片中心10%的矩形空白區域進行修復。測試集由6 種不同的基于深度學習修復方法制成,根據方法分別命名為GC[20]、CA[16]、SH[18]、LB[21]、RN[22]、EC[23],各包含1 000 組修復圖片和掩膜圖。其中,修復區域是手動選擇的一些有意義的對象,修復區域的總面積約為整個圖像的2%~30%。
本算法的修復檢測結果將基于精度(Precision,Pre)、召回率(Recall,Re)、F1 分數(F1)和交并比(Intersection over Union,IoU)進行評估。具體定義的公式如下:
其中:TP(True Positive)是指檢測出真陽樣本的數量,FP(False Positive)是指檢測出假陽樣本的數量,FN(False Negative)是指修復像素點被誤檢測為真實像素點的數量。通常來說,Pre值越高越好,Re值也越高越好,為綜合考慮準確率和召回率,采用F1 分數,F1 分數是準確率和召回率的加權調和平均,值越大檢測結果越好。IoU 通過計算交集(網絡預測圖和掩膜的重疊區域)和并集(網絡預測圖和掩膜的并集區域)的比值來評估檢測器,比值越大,檢測效果越好。
模型訓練使用Pytorch 深度框架,采用Adam 優化模型,初始化學習率為0.000 1,經過每個epoch 后學習率下降50%,batch-size 設置為4,20 個epoch 迭代訓練網絡,整個網絡在單張NVIDA RTX 2080Ti GPU進行訓練。
2.3.1 網絡結構的有效性
為了驗證算法的有效性,本文通過消融實驗在品質因子QF=96 的測試集上進行評估,測試集使用的深度修復方法與訓練集一致,實驗結果如表2 所示。表2 中的場景1 是指不帶有VGG16 特征提取模塊和注意力模塊的網絡變體;場景2 是指不帶有VGG16 特征提取模塊、帶有注意力模塊的網絡變體;場景3 是指帶有VGG16 特征提取模塊、不帶有注意力模塊的網絡變體;場景4 是指帶有VGG16 特征提取模塊和注意力模塊的網絡變體。
從表2 可以看出,當網絡使用VGG16 的特征提取模塊和注意力模塊時,測試的結果都略高于所提方法的其他變體,說明了本文提出的面向圖像修復取證的U 型特征金字塔網絡具有一定的有效性。

表2 所提方法不同變體的定位結果 單位:%Tab.2 Localization results obtained by different variants of the proposed method unit:%
1)VGG16 特征提取模塊:本文方法相較于不使用該模塊的變體,在交并比和F1 值上高出約14.61 個百分點和10.32個百分點,說明了該特征提取模塊能有效地提取深度圖像修復取證所需的豐富特征圖。
2)全局和局部注意力機制:本文方法相較于不使用注意力模塊的變體,在交并比和F1 值上提升了約9.11 個百分點和5.08 個百分點,說明了該模塊能夠較為有效解決修復區域和未修復區域通常具有的類不平衡問題。
2.3.2 圖像修復檢測結果
為了評估本文方法的性能,實驗選取以下方法進行對比:基于擴散的數字圖像修復定位(Localization of Diffusionbased Inpainting,LDI)[5]、基于圖像塊的深度修復取證方法(Patch-based Convolutional Neural Network,Patch-CNN)[6]和基于高通全卷積神經網絡(High-Pass Fully Convolutional Network,HP-FCN)[10]的深度圖像取證架構。表3 顯示的是LDI、Patch-CNN、HP-FCN 和本文方法在數據集GC、CA、SH、LB、RN 和EC 上的F1 分數和IoU 值。從表3 可以看出,在品質因子為96 的情況下,本文方法在6 個測試集上的平均F1分數和IoU 值為79.19%和74.72%,均優于對比方法。

表3 品質因子為96時,在六個數據集上F1分數和IoU值的比較 單位:%Tab.3 Comparison of F1-score and IoU values on six datasets when quality factor is 96 unit:%
從實驗結果看出,LDI 方法的預測率不足50%,Path-CNN方法的預測率為57.17%,檢測效果并不理想,主要原因是基于擴散和圖像塊修復的取證方法是通過檢測圖像中的偽影從而定位修復區域,而基于深度學習的修復方法可以在不留下明顯偽影的情況下獲得良好的修復效果。實驗使用的深度修復數據集的修復區域在規模、形狀和位置上具有明顯的差異,HP-FCN 網絡檢測修復區域面積遠小于未修復區域面積的圖像時,檢測精度還有待提升,主要原因是HP-FCN 的模型過度擬合了由特定修復方法和固定修復掩膜組成的數據集,面向多種修復操作則體現為泛化能力不足。而本文方法合理運用卷積過程中的高維和低維特征,并引入注意力機制進行像素權重分配,針對不同深度修復方法的數據集,有更好的泛化能力。
2.3.3 方法對JPEG壓縮的魯棒性
在實際的修復取證場景,修復后的圖像通常會以JPEG格式進行保存,為進一步分析本文方法的魯棒性,實驗分別測試6 個品質因子QF=85 和QF=75 的數據集,使用的深度修復手段不變。實驗結果如表4、5 所示,通過對比可知,相較于QF=96 時,本文方法的平均F1 分數分別下降了1.85 個百分點和6.47 個百分點,HP-FCN 方法分別下降了38.41 個百分點和42.32 個百分點,Patch-CNN 和LDI 方法下降更明顯。

表4 品質因子為85時,在六個數據集上F1分數的比較 單位:%Tab.4 Comparison of F1-score on six datasets when quality factor is 85 unit:%

表5 品質因子為75時,在六個數據集上F1分數的比較 單位:%Tab.5 Comparison of F1-score on six datasets when quality factor is 75 unit:%
JPEG 壓縮會對圖像信息造成損失,產生塊效應,品質因子越小,對修復證據的破壞越大,檢測難度越高,而這就要求網絡需要學習更加豐富的圖像信息完成取證工作。針對JPEG 壓縮后的圖像,LDI 方法無法有效地提取圖像修復后產生的偽影,從而導致檢測失敗;Patch-CNN 和HP-FCN 的網絡深度較淺,提取的圖像信息不夠豐富,從而造成檢測精度不高。而本文使用VGG16 的特征提取模塊,能夠獲得取證網絡所需的豐富圖像信息,同時合理運用了高維特征分辨率高和低維特征語義強的特點,檢測經過JPEG 壓縮后的修復圖像具有較強的魯棒性。
2.3.4 圖像修復篡改定位結果
為了進一步驗證文本提出框架的泛化能力,本節對上述由6 種不同方法產出的修復圖像進行了修復檢測和定位,如圖5 所示。
從圖5 可視化結果可以看出,在6 種真實修復集上HP-FCN 和本文方法多數都能識別修復區域;傳統LDI 方法在部分數據集上能大致檢測出修復區域的輪廓,但在CA、SH 和EC 數據集上檢測失敗;Patch-CNN 方法多數能檢測到大致的修復區域,但是在CA、LB 和RN 數據集上將未修復區域檢測為修復區域比例較大,誤檢率較高。對比基于深度修復取證的HP-FCN 方法,對于真值掩膜圖較為規則的修復圖,例如SH 所示,兩種方法的預測圖都能達到較高的相似度,對于多數不規則的真值掩膜圖,本文方法較之HP-FCN方法更好地定位了修復區域,同時也能大致顯示出修復區域的輪廓。雖然較之其他三種方法,本文方法在真實修復數據集上能更有效地實現定位和預測,但是預測區域的分辨率還是有限的,預測區域的輪廓也與真值掩模圖有差異,但總體 而言的定位結果更為準確。

圖5 品質因子為96時,六種不同數據集的可視化結果Fig.5 Visualized results of six different datasets when quality factor is 96
2.3.5 時間復雜度對比分析
時間復雜度作為衡量方法的指標,是實際應用中一個重要問題,實驗在具有10 000 張修復圖像測試集上分別比較了幾種方法的平均運行時間。實驗結果如表6 所示,相較于其他幾種取證方法,本文方法運行速率提升明顯。基于傳統擴散修復取證的算法LDI 平均運行時間長,其原因是LDI 單次只能檢測一張圖片,且使用的CPU 計算力遠遠不如深度取證方法使用的GPU。而基于圖像塊的深度修復取證方法Patch-CNN,需要在整張圖像上搜索可疑的圖像塊,平均運行時間較低。本文方法和HP-FCN 的平均運行時間較少,是因為深度學習方法以犧牲訓練時間為代價,大幅地減少了測試時間。而在實際應用中,測試階段才是通常關心的計算成本,訓練階段是離線的,所以深度學習方法無疑更適合實際應用。

表6 不同方法的平均運行時間 單位:sTab.6 Average running times of different methods unit:s
本文提出一種面向圖像深度修復取證的U 型特征金字塔網絡U-FPN,實現修復區域的檢測與定位。本文以VGG16作為提取模塊,有效地提供了取證網絡所需的豐富特征圖。引入全局和局部注意力機制使網絡更加關注修復區域,有效處理了由不同深度修復技術帶來的復雜痕跡問題。本算法引入融合損失函數用于提高修復區域的預測率,針對修復圖像類不平穩的問題,依舊能取得較好的檢測精度。實驗結果表明,相較于現有方法,本文所提方法在多種深度修復數據集上具有更好的泛化能力,同時針對JPEG 壓縮也具有較強的魯棒性。但實驗中發現,當修復區域的輪廓更加復雜時,網絡只能做到定位修復區域和檢測大致邊緣;探索由復合深度修復方法制成的數據集也是未來的工作之一。