楚雪玲, 魏為民, 華秀茹, 李思纖, 栗風永
(上海電力大學 計算機科學與技術學院, 上海 200090)
盲取證技術在不知道原始來源的情況下,利用統(tǒng)計和幾何特征、插值效應或特征不一致可驗證圖像/視頻的真實性。由于JPEG壓縮可能會覆蓋數(shù)字篡改的某些痕跡,因此許多盲取證技術僅對未壓縮的圖像有效。然而,大多數(shù)媒體捕獲設備和后期處理軟件(如PHOTOSHOP),以JPEG格式輸出圖像,而且互聯(lián)網(wǎng)上的圖像大多是JPEG格式的。因此,對JPEG壓縮魯棒性研究的盲取證技術至關重要。原始JPEG圖像(質(zhì)量因子為QF1)被篡改后通常需要重新壓縮,即將經(jīng)過數(shù)字篡改后的偽造圖像以不同質(zhì)量因子(QF2)的JPEG格式重新存儲,可能會引入雙重JPEG壓縮的證據(jù)。近年來,許多成功的雙JPEG圖像壓縮檢測算法被提出。文獻[1-2]分析了篡改前后的雙量化(Double Quantilization,DQ)效應,發(fā)現(xiàn)經(jīng)過兩次量化的圖像區(qū)域的離散余弦變換(Discrete Cosine Transfrom,DCT)系數(shù)直方圖一般呈現(xiàn)周期性,不同于單量化區(qū)域的DCT系數(shù)直方圖。文獻[3]識別了DCT系數(shù)在時域與頻域的周期性壓縮偽跡,可以檢測塊對齊和非對齊的雙JPEG壓縮。文獻[4-5]提出單壓縮圖像的DCT系數(shù)一般遵循Benford定律,而雙壓縮圖像的DCT系數(shù)則違反了Benford定律。在文獻[5]中,采用DCT首位統(tǒng)計特征和支持向量機(Support Vector Machine,SVM)分類器相結合來對雙JPEG壓縮檢測。文獻[6]將雙JPEG壓縮應用于隱寫術,使用的特征是從低頻DCT系數(shù)的統(tǒng)計中得到的,不僅對普通的偽造圖像有效,而且對使用隱寫算法處理的圖像也有效。
然而,上面討論的算法有一個共同點,它們只估計圖像的壓縮歷史,而不能準確地指出操作了哪個區(qū)域。文獻[7]提出的算法是第一個通過分析DCT系數(shù)直方圖中隱藏的DQ效應來自動定位局部篡改區(qū)域的算法。該算法使用貝葉斯方法估計了單個8×8塊被篡改的概率,得到的塊后驗概率圖將顯示篡改(單壓縮)區(qū)域和未修改(雙壓縮)區(qū)域的視覺差異。為了更準確地定位篡改區(qū)域,文獻[8]利用先驗知識,即篡改區(qū)域應該是光滑的、聚類的,并使用圖像分割算法最小化一個已定義的能量函數(shù)來定位篡改區(qū)域。文獻[9]探索了一種新的基于特征的技術,使用殘差的條件聯(lián)合分布進行定位,不僅計算效率高,而且不受場景內(nèi)容的影響。文獻[10]基于文獻[7]提出了更合理的概率模型,計算了每個8×8塊被雙重壓縮的可能性,并結合一種估計初級量化質(zhì)量因子的有效方法,比文獻[7]具有更好的性能。基于改進的統(tǒng)計模型,文獻[11]提出的方法既可以檢測塊對齊的壓縮篡改區(qū)域,也可以檢測塊非對齊的壓縮篡改區(qū)域。文獻[12]基于DCT系數(shù)的第一個數(shù)字特征對圖像拼接結果進行定位,并使用SVM進行分類。然而,當QF1>QF2時,這些方法的性能很差。
眾所周知,深度學習方法可以自動學習特征并進行分類。利用卷積神經(jīng)網(wǎng)絡(Convolutional Neural Network,CNN)的深度學習在語音識別、圖像分類或識別、文檔分析、場景分類等領域取得了很大的成功。對于隱寫分析,文獻[13-14]利用CNN自動學習特征,捕捉對隱寫分析有用的復雜依賴關系,結果令人大受鼓舞。事實上,使用CNN的分層特征學習可以學習特定的特征表示,具有深度模型的神經(jīng)網(wǎng)絡也可以有效地進行盲圖像取證。
本文提出了一種利用CNN進行訓練/測試的方法,來檢測雙JPEG壓縮篡改的圖像。為了增強CNN的效果,對DCT系數(shù)進行預處理。提取DCT系數(shù)的直方圖作為輸入,然后設計一維CNN從這些直方圖中自動學習特征并進行概率結果分類,并與其他文獻中的算法進行性能比較。
利用圖像軟件篡改圖像時,JPEG圖像在篡改完成之后,可能會使用與原始圖像質(zhì)量因子QF1不同的質(zhì)量因子QF2再一次壓縮存儲,即JPEG圖像的雙重壓縮。應當注意,當QF1=QF2時,圖像特性改變不明顯。圖像雙壓縮過程如圖1所示。首先把原始JPEG圖像解壓縮,即先解碼和反量化;再進行逆DCT變換;最后對解壓縮的圖像執(zhí)行第二次壓縮。
圖1 雙JPEG壓縮過程
JPEG壓縮是一種基于8×8塊的方案,將DCT系數(shù)應用于輸入圖像的8×8塊,然后量化DCT系數(shù),并對其應用舍入函數(shù)。量化系數(shù)進一步通過熵編碼進行編碼,量化表對應每個特定的壓縮質(zhì)量因子QF,QF值為0~100的整數(shù)。QF值較低,表示丟失了更多的信息。DCT系數(shù)的量化是造成壓縮圖像信息丟失的主要原因。
對給定的JPEG圖像進行預處理。首先,從JPEG頭部提取其量化的DCT系數(shù)和最后一個質(zhì)量因子,在實驗中,只使用彩色圖像的Y分量;然后,為每個DCT頻率構造一個直方圖。圖像直流系數(shù)直方圖的分布與交流系數(shù)的直方圖不同,可能會給特征設計帶來困難,因此本文算法只考慮交流系數(shù)。此外,如果將整個直方圖直接輸入到CNN分類器中,則訓練操作會很復雜,原因如下:首先,CNN的輸入特征維數(shù)必須一致,而直方圖的大小總是變化的;其次,可能產(chǎn)生過高的培訓計算成本。為了在不丟失重要信息的情況下降低特征向量的維數(shù),選擇每個直方圖峰值附近的指定區(qū)間(可能包含大部分重要信息)表示整個直方圖。使用以下方法提取低頻下的特征集,具體如圖2所示。首先,選取Zig-zag排列的第2~10個DCT系數(shù)構建特征集,僅取對應于{-5,-4,…,4,5}被認為是有用的特性。設B為一個大小W×W的塊,hi(u)為DCT系數(shù)在第i個頻率處的直方圖,u在B中呈z字形排列。特征向量集由式(1)組成,通過上述方法獲得每個樣本9×11維的特征向量。
圖2 Zig-zag取值示意
XB=[hi(-5),hi(-4),hi(-3),hi(-2),
hi(-1),hi(0),hi(1),hi(2),
hi(3),hi(4),hi(5)]
i∈2,3,4,…,10
(1)
CNN依賴于3個概念:局部接受域、共享權重和空間子采樣[15]。在每個卷積層中,輸出特征圖通常表示與多個輸入的卷積,可以捕獲相鄰元素之間的局部依賴性。每個卷積連接之后都有一個池化層,池化層以局部最大化或平均的形式執(zhí)行子采樣,這樣的子采樣可以降低特征圖的維數(shù),進而降低輸出的靈敏度[16]。在這些交替的卷積層和池化層之后,輸出特征圖經(jīng)過幾個全連接,然后輸入到最終的分類層。分類層使用一個softmax連接來計算所有類的分布。
本文的CNN網(wǎng)絡結構由2個卷積層、2個池化層連接和3個全連接層組成,如圖3所示。
圖3 CNN網(wǎng)絡結構
輸入數(shù)據(jù)為9×11維的向量,輸出為兩個類(單壓縮/雙壓縮)概率的分布。對于卷積連接,將卷積核m×n設為3×1,卷積核數(shù)量k設為100,滑動步長設為1。以第1卷積層為例,輸入數(shù)據(jù)的特征向量為99×1,第1卷積層將這些特征數(shù)據(jù)與100個3×1的卷積核進行卷積,步長為1。輸出特征為97×1×100,即特征圖數(shù)量為100,輸出特征圖維數(shù)為97×1。對于池化層,同樣將卷積核m×n設置為3×1,池化步長設置為2,觀察到這種重疊池化可以防止訓練過程中的過擬合。每個全連接層有1 000個神經(jīng)元,最后一個的輸出與softmax層連接,可以產(chǎn)生出每個樣本應該被分類到每個類的概率。在JPEG圖像偽造檢測中,只有單壓縮和雙壓縮兩類。
網(wǎng)絡中每個連接層之間使用ReLU激活函數(shù),激活函數(shù)為f(x)=max(0,x)。在文獻[17]中,使用ReLU激活函數(shù)的深度學習網(wǎng)絡收斂速度是傳統(tǒng)學習網(wǎng)絡的幾倍,對大型數(shù)據(jù)庫的訓練性能效果更佳。在全連接層中,引入了“dropout”技術[18]。其核心思想是在訓練過程中從神經(jīng)網(wǎng)絡中隨機抽取單元,為有效地組合不同的網(wǎng)絡結構提供一種方法。使用dropout技術,可以有效地緩解過擬合,縮短訓練時間。
從Dresden Image Database圖像數(shù)據(jù)庫[19]中選取tiff格式的500張原始圖像,70%進行訓練,30%做測試,采用QF1為{60,70,80,90,95}進行第1次JPEG壓縮,采用QF2為{60,65,70,75,80,85,90,95}進行第2次JPEG壓縮,將產(chǎn)生5組共1 750張單壓縮圖片和40組共14 000張雙壓縮圖片,圖像塊大小分別選擇為64×64,128×128,256×256,512×512,1024×1024。實驗環(huán)境為Python3.6,TensorFlow1.8.0.
設置不同的圖像塊大小,檢測其在CNN網(wǎng)絡中不同QF2時所檢測分類的正確率,結果如表1所示。
表1 采用本文算法時QF2在圖像不同尺寸下檢測的正確率
文獻[20]使用DCT首位統(tǒng)計特征和SVM分類器相結合進行雙JPEG壓縮檢測。本文中同樣的樣本在文獻[20]算法中檢測的正確率如表2所示。
表2 采用文獻[20]算法時QF2在圖像不同尺寸下檢測的正確率
為了直觀地觀察出表1和表2數(shù)值變化的趨勢,將表1和表2數(shù)據(jù)分別生成圖4和圖5。
圖4 采用本文算法時QF2在圖像不同尺寸下檢測的正確率
圖5 采用文獻[20]算法時QF2在圖像不同尺寸下檢測的正確率
由圖4和圖5可得出共同的結論:樣本尺寸越大,分類檢測的正確率越高;當樣本尺寸大小為1 024×1 024時,正確率都非常高;本文提出的CNN算法性能明顯優(yōu)于文獻[20]中的算法性能。首先,對于卷積神經(jīng)網(wǎng)絡,樣本尺寸越大,所包含的統(tǒng)計信息越多,特征提取的也就越多,分類器越容易進行區(qū)分,所以檢測正確率越高。其次,QF2值越大,分類器分類的正確率越高,當QF2為95時,檢測正確率在最大尺寸下達到100%。當QF1 分析JPEG圖像雙壓縮的特征可知,對于雙JPEG壓縮篡改檢測而言,第二次壓縮的直方圖與第一次壓縮的直方圖不同,會出現(xiàn)很明顯的周期值缺失或周期性極大值和極小值,因此本文提出了一種CNN對JPEG圖像雙壓縮的檢測算法。將圖像的DCT系數(shù)直方圖作為CNN網(wǎng)絡的輸入進行特征提取,利用深度學習可以用深層次網(wǎng)絡自動學習到原始數(shù)據(jù)中隱含的關系,而不需要對數(shù)據(jù)進行“顯式”的預處理。實驗結果表明,與現(xiàn)有算法對比,本文提出的算法檢測率最高提高了1.3%,證明了該方法在JPEG雙壓縮檢測性能上的優(yōu)越性。4 結 語