粗到精的卷積神經網絡與自適應聚類相結合的圖像拼接篡改檢測
研究方向:圖像篡改檢測
論文出處:ELSEVIER A類
學校:西安電子科技大學網絡工程學院、重慶郵電大學計算機科學與技術學院
關鍵字:Splicing forgery detection、Convolutional neural networks、Adaptive clustering、Image-level CNN
論文提出的檢測方法:提出的檢測方法包括兩部分,第一部分為一個粗到細的卷積神經網絡(C2RNet),第二部分為自適應聚類。在第一部分中將粗的卷積神經網絡稱為C-CNN,細的神經網絡稱為R-CNN,兩個網絡分為兩個階段提取圖像中篡改和未被篡改區域之間不同的屬性,在此過程中為了降低運算量,采用Image-level的卷積網絡來代替Patch-level的卷積網絡。在這之后將網絡輸出的可疑篡改區域,應用自適應聚類算法進一步確定篡改的區域。
實驗采用的數據集:CASIA,COLUMB,FORENSICS
實驗結果:本文提出的檢測算法與目前最好的算法相比,能夠實現可觀的效果。並且在多種篡改方式上都實現了良好的效果。
1.基礎知識
數字圖像篡改分為兩種類型:copy-move forgery(復制粘貼篡改)和splicing forgery(拼接篡改)。前者指的被篡改的部分來自本身的一部分,后者指的是被篡改的部分來自非本身的部分。拼接篡改比復制粘貼篡改的檢測更加難。
最新的一些研究提取不同的一些特征來鑒別圖像是否被篡改,這些特征有lighting(光照), shadows(陰影), sensor noise(傳感器噪聲), and camera reflections(相機反射原理).
拼接篡改的檢測方法主要基於4類,分別為基本圖像屬性的檢測,成像設備屬性的檢測,圖像壓縮屬性的檢測,哈希技術。這四類檢測方法的局限性如下:
- 如果在拼接后應用了一些隱藏偽造的技術,例如整體模糊操作,則可能后導致檢測失敗。
- 如果設備的噪聲強度較弱,則基本成像設備屬性的檢測方法可能失效。
- 基於圖像壓縮屬性的檢測方法只能檢測JPEG格式的圖像篡改。
- 基於哈希技術的檢測方法依賴於原始未經篡改圖像的哈希,則不能嚴格分類為盲偽造檢測類型。
卷積神經網絡成功的兩個原因,如下:
- CNN框架利用了領域內的像素通常是高度相關聯,采用分組的本地連接,而非所有像素單元之間使用一對一連接(大多數神經網絡的情況)。
- CNN體系結構采用特征共享,每個通道(特征圖)都是在所有位置使用相同的卷積核通過卷積運算生成的。
2.網絡框架結構及相應算法
2.1. 網絡框架結構
上圖種的上一部分為從粗到細的CNN網絡,下一部分為自適應聚類算法。
在上一部分,分為兩個特征學習過程,第一個特征學習過程是基於粗CNN,能夠粗略的確認在圖像篡改區域和圖像未篡改區域的差別,尤其是邊緣。第二個特征學習過程是基於細CNN,能夠進一步學習到必要的在圖像篡改區域和圖像未篡改區域的差別,即在粗CNN得到的邊緣進一步篩選。
在下一部分,在通過C2RNet得到最終更加准確的可疑篡改區域(Net_out)后,采用自適應聚類算法確定最終准確的篡改篡改區域(FD_Out),然后利用填充算法進行填充,得到最終結果。
2.2. C2RNet網絡參數
2.2.1. 粗卷積神經網絡(C-CNN)網絡參數
C-CNN是基於VGG-16,它包括13個卷積層,每個卷積層采用RELU激活函數,5個最大池化層,2個全連接層。
數據的輸入:圖像塊(image Patch)\(W_c×W_c\)(篡改圖片和對應原始圖片),論文中\(W_c\)設置為32,一共生成115000的patch標簽作為篡改和115000patch標簽作為非篡改。
數據的輸出:二分類問題,是包含篡改區域的塊還是不包括篡改區域的塊。
2.2.2. 細卷積神經網絡(R-CNN)網絡參數
C-CNN輸出的是可疑的篡改區域,這就意味着圖片邊緣附近可能存在一些不正確檢測到的區域,這表明C-CNN學習到的結果需要進一步過濾掉,同時也說明了C-CNN網絡中輸入的Patch大小無法提供足夠的局部信息來探索圖片的差異。因此,可以通過級聯一個精的CNN網絡來濾除那些不准確的區域。
R-CNN是基於VGG-19,它包括16個卷積層,5個最大池化層,3個全連接層。
數據的輸入:圖像塊(image Patch)\(W_r×W_r\)(為了使R-CNN獲得更多足夠的本地信息,\(W_r>W_c\),這些patch來自原始圖像和可疑篡改區域),論文中\(W_c\)設置為96,一共生成115000的patch標簽作為篡改和115000patch標簽作為非篡改。
數據的輸出:二分類問題,是包含篡改區域的塊還是不包括篡改區域的塊。
2.2.3. 為了加快計算速度采用Image-level CNN
圖像被每個像素為中心的重疊的patch塊,然后每個像素塊輸入到網絡中進行訓練。例如圖像的大小為M×N,被分成每個patch的步幅為1,則重疊的patch塊數數量為\((M-W+1)×(N-W+1)\),讓將這些圖像patch按順序輸入到網絡中。本文中為了加快計算速度,將patch-level CNN 轉換成 image-level CNN。
兩者關系如下:
可疑觀察到兩者的結果是等效的,區別如下:
- 最大池化被替換成重疊的最大池化
- 在重疊最大池化后添加下采樣步驟
2.2. 自適應聚類算法
自適應聚類算法整體流程:
由R-CNN網絡得到的輸出為Net_out,自適應聚類算法分為兩步:自適應離群濾波(adaptive outlier filtering)和填充操作(convex full filling process)。
具體算法如下:
具體算法解析如下:將Net_out分成\(C_1\)到\(C_n\)個簇,簇的中心分別為\(b_1\)到\(b_n\),計算這幾個簇的幾何質心\(g_c\),通過歐氏距離計算\(b_i到g_c\)的距離,記為\(d_igc\).通過下面公式在計算這些歐式距離的均值\(\overline{d_gc}\),通過下面公式計算出標准偏差\(sd\)
如果\(sd\)滿足如下條件:
則所有的\(c_1\)到\(c_n\)全部作為確定的篡改的區域記為\(\widetilde{Net-out}\)。
如果\(sd\)不滿足,則說明一小部分簇並非篡改區域,取一個閾值\(t_h\),將每個簇中包括像素最多的\(d_gc\)作為基准,計算各個簇到基准的歐氏距離,若歐氏距離小於\(t_h\),則認為該簇為篡改區域。
最后用填充算法對符合條件的簇進行填充為一個區域,生成FD_out。
具體例子如下
如圖,圖片被分成了四個簇,每個簇的質心為黑色塊(a),計算幾何質心\(gc\),分別計算每個簇質心到幾何質心的歐氏距離\(d_igc\)(b),計算標准偏差\(sd\),發現\(sd\)不滿足條件,選擇每個簇包括像素最多的簇的\(d_igc\)為基准,此例為\(C_1\),計算其它簇到基准的歐式距離,若大於閾值,該簇為非篡改區域,將剩余的簇填充為一個區域,即為最終篡改區域FD_out。
3.實驗與分析
實驗的數據集:
- CASIA:包括1275個數據,原始圖片和篡改圖片各1275。存儲格式為TIFF,分辨率為384×256。訓練數據集為1226,剩余的49做為測試集。
- CLOUMB:包括179個數據,原始圖片和篡改圖片各179。存儲格式為TIFF,分辨率為757×568。訓練數據集為139,剩余的40做為測試集。
- FORENSICS:包括144個數據,原始圖片和篡改圖片各179。存儲格式為PNG,分辨率為2018×1536。訓練數據集為94,剩余的50做為測試集。
以上數據集中的數據稱為普通拼接篡改圖像。
同時,本論文還進行了5中更加復雜拼接篡改,分別為JPEG壓縮,噪聲添加,圖片縮放,圖片旋轉和前四種的組合,由於以前的研究圖片均采用JPEG,故我們將所有的TIFF格式圖片轉換成JPEG,質量因子為100%。
衡量標准:
TP:表示為正確檢測到篡改的像素數
FP:表示為錯誤檢測到篡改的像素數
FN:表示為錯誤檢測到的未篡改像素的數量
采用Precision、Recall、F-Measure來衡量算法性能,公式如下
神經網絡框架:Tensorflow
3.1. 聚類簇的數量n
通過實驗分析,當N=4時,准確率最高。
3.2. 實驗評估和對比分析
過往圖像篡改方法DCT , ADQ , ELA , NADQ , CFA , NOI , NFC , MPRNU , C-Net , DF-Net , and LSC-Net。這些檢測方法可以在像素級別檢測篡改區域。
3.2.1. 普通拼接篡改檢測結果
六個示例結果如圖,圖中的a1-a2來自CASIA,a3-a4來自COLUMB,a5-a6來自FORENSICS,a7是一張圖中有多個篡改部分,並且是圖片的大小是非標准。分別計算了六個示例的衡量標准的平均值(Precision、Recall、F-measure),如下表。
3.2.2. 復雜拼接篡改檢測結果
以下所有圖的三列分別為衡量標准Precision, Recall , and F-measure。
A)在JPEG壓縮條件下篡改檢測的結果
橫坐標為壓縮質量因子。
a1和a3是來自CASIA,b1和b3是來自COLUMB,c1和c3來自FORENSICS。
B)在添加噪聲條件下篡改檢測的結果
橫坐標為不同的方差數。
a1和a3是來自CASIA,b1和b3是來自COLUMB,c1和c3來自FORENSICS。
C)在組合條件下篡改檢測的結果(JPEG壓縮和加噪聲組合)
a1-a3顯示了在JPEG壓縮率為60%的CASIA下添加不同方差的噪聲的結果。
b1-b2顯示了在JPEG壓縮率為80%的CASIA下添加不同方差的噪聲的結果。
c1-c3顯示了在JPEG壓縮率為60%的COLUMB下添加不同方差的噪聲的結果。
d1-d3顯示了在JPEG壓縮率為80%的COLUMB下添加不同方差的噪聲的結果。
e1-e3顯示了在JPEG壓縮率為60%的COLUMB下添加不同方差的噪聲的結果。
f1-f3顯示了在JPEG壓縮率為80%的COLUMB下添加不同方差的噪聲的結果。
D)在縮放條件下篡改檢測的結果
橫坐標為縮放因子。
a1和a3是來自CASIA,b1和b3是來自COLUMB,c1和c3來自FORENSICS。
E)在旋轉條件下篡改檢測的結果
橫坐標為旋轉度數。
a1和a3是來自CASIA,b1和b3是來自COLUMB,c1和c3來自FORENSICS。
F)運行時間的對比
上表中包括了patch-level CNN和image-level CNN的對比。
F)部分實驗結果與其它方法對比可視圖
4. 結論
實驗結果表明,該方法取得了比其他先前檢測方法更好的結果。由於這些數據集的容量限制了針對所提出的檢測方法對C2RNet的訓練,因此尚未獲得理想的結果。
由於后處理方法(自適應聚類算法)的限制,所提出的檢測方法僅聚焦於圖像中的單個篡改區域,並且在以后的研究中將考慮並修復該問題。
總結
本論文實際上就是利用語義分割,新穎的地方就是利用兩個神經網絡的級聯來實現一步一步精確的檢測,在提取到Net_out后,利用K-means來提取真實的篡改區域。
在實驗采用了多種比對方法進行對比,使實驗結果更加准確。