宋炎寒 蘇紅旗
(中國礦業(yè)大學(北京)機電與信息工程學院 北京市 100083)
隨著攝影技術和互聯(lián)網(wǎng)的發(fā)展,數(shù)字圖像在日常生活中扮演了越來越重要的角色。在新聞報導、法庭取證、醫(yī)學、科學研究、社交等領域中,數(shù)字圖像已經(jīng)成為不可或缺的一部分。當用數(shù)碼設備拍攝照片時,我們希望照片能真實的記錄實際發(fā)生的場景,但是隨著圖像處理軟件 (如 Photoshop, GIMP) 的快速發(fā)展,對數(shù)字圖像的處理越來越容易。例如,在 Photoshop 中可以輕易的完成尺寸調節(jié)、對比度調節(jié)、模糊等圖像操作,甚至可以比較容易的完成圖像特定區(qū)域的選擇和修改。這些圖像處理在一些場景下是必不可少的,可以使得拍攝的數(shù)字圖像更為美觀。但是一些圖像處理以傳遞虛假的信息為目的,對圖像的內容進行“移花接木”等操作。這些惡意造假事件,有可能對社會造成不良的影響。
對數(shù)字圖像的修改可以分成三類[1],如圖1所示。第一類是圖像處理 (image manipulation),指通過計算機軟件,對數(shù)字圖像完成的所有操作的集合,又叫圖像編輯。第二類是圖像篡改 (image forgery),其是圖像處理的一個子集,指為了傳遞欺騙性的信息,而對圖像所做的修改。第三類是圖像偽造 (image tampering),是為了在場景中隱藏一個對象,或者加入一個新的對象,而改變圖像的一部分。圖像篡改檢測針對的即是圖像篡改,采用主動或者被動檢測方法,來對圖像的真?zhèn)涡宰龀雠袆e。

圖1:數(shù)字圖像操作分類
經(jīng)過篡改后的圖像會傳遞錯誤的信息。在新聞、法庭取證、科學研究等特定領域中,這些篡改操作是不被允許的。因此,有必要對圖像篡改進行檢測。圖像篡改檢測作為圖像取證 (image forensics)領域的一個分支[2],很早就受到了關注。圖像篡改檢測任務有兩個不同的目的:一是對圖像是否經(jīng)過篡改進行判斷,即對圖像進行二分類;二是對篡改區(qū)域進行定位,得到篡改區(qū)域的掩膜 (mask)。篡改檢測技術以實現(xiàn)第一個目的為基本要求。對篡改區(qū)域的定位則更為復雜,根據(jù)所采用的算法和針對的篡改操作類型不同,一部分算法可以實現(xiàn)篡改區(qū)域的定位。
已有的圖像篡改檢測方法,可以分為主動方法和被動方法。主動方法需要事先向圖像中插入額外的信息,如數(shù)字水印和數(shù)字簽名。在篡改檢測時,需要通過這些額外的信息來判斷圖像是否經(jīng)過了修改。由于網(wǎng)絡上圖片數(shù)目巨大,很難要求所有的圖像都添加這些額外的信息,因此主動方法應用的范圍受到了限制。在無法接觸到原始圖片的情況下,研究者提出了被動檢測方法。被動方法區(qū)別于主動方法,是在僅有一張圖像的前提下,通過對圖像的特征進行分析,判斷該張圖像是否經(jīng)過了篡改。由于被動方法不依賴于額外添加到圖片中的信息,因此又被叫做盲檢測 (blind detection)。雖然經(jīng)過篡改后的圖片有可能在視覺上沒有明顯的篡改痕跡,但是在圖像的統(tǒng)計指標上還是會產生異常[3]。被動方法即利用圖像篡改操作留下的線索來對圖像真?zhèn)涡赃M行檢測。圖像篡改檢測技術分類如圖2所示。

圖2:圖像篡改檢測技術分類
由于圖像篡改檢測問題的復雜性,早期的檢測算法并不是通用的,一般只能適用于某一特定的篡改類型。研究較多的篡改類型是復制粘貼篡改 (copy-move forgery) 和拼接篡改 (splicing forgery)。復制粘貼篡改是指把圖像中的一部分內容復制,并粘貼到同一張圖像中。拼接篡改新生成的圖像由兩張圖像組合而成,是把一張圖像中的內容復制,并粘貼到另外一張圖像里。兩種篡改方式示例如圖3所示。兩種篡改類型都可以包含適當?shù)暮筇幚聿僮?(post-processing),目的是為了隱藏篡改痕跡,使得篡改圖片視覺上更為自然,常用的后處理操作有:旋轉、縮放、模糊、對比度調整等。在圖像篡改檢測領域中,針對這兩種常見的篡改方法的特點,進行了針對性的研究。

圖3:復制粘貼篡改(左)和拼接篡改(右)
在傳統(tǒng)的方法中,主要根據(jù)復制粘貼篡改和拼接篡改的特點手動選取特征,來對圖像的真?zhèn)涡赃M行判斷。利用傳統(tǒng)方法來進行復制粘貼篡改檢測和拼接篡改檢測的研究領域非常活躍,已經(jīng)有了大量的研究。近幾年,隨著深度學習的發(fā)展,特別是深度學習在計算機視覺領域取得的成功,使得研究者開始關注基于深度學習的圖像篡改檢測。
復制粘貼篡改檢測是該領域中最早受到關注的,主要是因為其有明確的檢測思路。復制粘貼操作把圖像中一部分復制并粘貼到圖像的另一個區(qū)域中,最終的篡改圖像內一定含有重復區(qū)域。根據(jù)這一特點,復制粘貼篡改檢測問題可以轉變?yōu)閳D像中的重復區(qū)域檢測問題[4]。把圖像分成不重疊的圖像塊,在圖像塊之間進行匹配,即是早期算法的檢測思路。但是檢測難點在于復制粘貼篡改并不是圖像內容的完全復制粘貼,而是伴隨著后處理操作。經(jīng)過后處理,篡改圖像更為真實,但是也使得圖像中的重復區(qū)域在像素值上并不是完全的一致。簡單的像素值匹配算法無法在存在后處理操作的情況下進行檢測。為了提高檢測算法對后處理操作的魯棒性,已經(jīng)提出了基于不同圖像特征的檢測算法。
復制粘貼篡改檢測算法的流程如圖4所示。Christlein 等人[5]提出把已有的算法分成基于塊的方法和基于關鍵點的方法,基于塊的方法會把圖像分塊,以每個圖像塊為單位提取特征向量;基于關鍵點的方法會在圖像內高熵區(qū)域內提取關鍵點。在匹配階段,會對提取到的特征向量檢測相似度,檢測到高相似度的特征向量可以看作圖像中存在重復區(qū)域。過濾在于移除錯誤匹配,例如移除錯誤匹配的在空間上接近的圖像塊。

圖4:復制粘貼篡改檢測的流程
早在2003年,F(xiàn)ridric 等人[4]提出通過滑動窗口方法和DCT 來對圖像中重復區(qū)域進行檢測。該方法首先把圖像分成不重疊的圖像塊;然后對每一個圖像塊進行離散余弦變化;接下來對量化后的DCT 因子進行排序,以找到相似的圖像塊。之后的基于塊的檢測算法大致延續(xù)了這個思路,改進主要集中在塊的特征提取和特征匹配步驟。在論文[1]中,把基于塊的方法所提取的特征分成了6 大類,分別是圖像塊的像素值、統(tǒng)計指標、頻率域因子、不變矩、圖像局部特征、PCA 與SVD。
基于關鍵點的檢測算法主要是為了解決滑動窗口方法計算量大和對后處理魯棒性差的問題。尺度不變特征變換 (scale invariant feature transform, SIFT) 和加速穩(wěn)健特征 (speeded up robust feature,SURF) 是基于關鍵點方法中常用的特征。Pan 等人[6]提出用 SIFT算法,提取了圖像中的關鍵點并實現(xiàn)對篡改區(qū)域的定位。Xu 等人[7]提出使用SURF 特征的圖像復制粘貼篡改檢測算法,其對于旋轉、縮放、模糊等后處理操作具有魯棒性。基于關鍵點的算法主要缺點在于無法在光滑的區(qū)域提取關鍵點。
在拼接篡改的圖像中,被篡改區(qū)域的內容來自于另一幅圖像。由于圖像不存在重復的區(qū)域,無法使用與復制粘貼篡改檢測相同的方法。拼接篡改檢測主要利用的是圖像中篡改區(qū)域和未篡改區(qū)域來源不同,所導致的圖像統(tǒng)計特征上存在的差別。因此對圖像的統(tǒng)計特征進行建模,檢測肉眼不可見的篡改痕跡,是拼接篡改檢測的主要方法。常用的篡改痕跡有邊緣不一致、雙重JPEG 壓縮效應、光線不一致、與相機成像過程有關的不一致。
當圖像的格式是 JPEG,并且篡改后的也存儲為JPEG,那么篡改圖像會出現(xiàn)雙重量化效應 (double quantization, DQ)。Popescu 等人[8]開發(fā)了識別雙重壓縮圖像的工具。由于篡改區(qū)域來自于另一幅圖像,有可能與未篡改部分的光線方向不一致。Johnson 等人[9]通過估計圖像中對象的光線方向來進行檢測,如果有對象的光線方法有差異,就認為存在圖像篡改。與相機成像過程有關的不一致主要利用的有:相機響應函數(shù) (camera response function, CRF),色彩濾波陣列 (color filter array, CFA) 和光響應非均勻性(photo response non-uniformity, PRNU)。
傳統(tǒng)的圖像篡改檢測方法針對的是單一的篡改操作和特定的后處理操作,因此局限性主要是魯棒性差。復制粘貼篡改檢測需要在經(jīng)過后處理的圖像中檢測重復區(qū)域,但是目前算法針對的后處理操作有限,無法應對復雜的后處理情況。拼接篡改檢測方法有較強的假設和前提條件,在現(xiàn)實的應用場合中,無法提前預知待檢測的圖像是否滿足這些算法的基本假設。如何處理現(xiàn)實場景中的復雜情況,是傳統(tǒng)方法面臨的問題。
由于深度學習在其他領域取得的成功,圖像篡改檢測領域也開始關注篡改檢測技術與深度學習技術的結合。深度學習模型在訓練時,可以自動學習復雜的特征,從而一定程度上避免了手工選取特征適應范圍小、魯棒性差的問題。和傳統(tǒng)檢測方法不同,基于深度學習的檢測方法,直接在擁有多種篡改類型、多種后處理操作的訓練集上進行訓練。在基于深度學習的篡改檢測算法發(fā)展過程中,卷積神經(jīng)網(wǎng)絡 (convolutional neural network, CNN) 尤其受到關注。通過利用 CNN 來自動提取特征,可以實現(xiàn)通用的篡改檢測算法。
Zhang 等人[10]為了解決傳統(tǒng)的圖像篡改檢測方法魯棒性差的問題,提出了二階段的層次特征學習方法。該算法可同時對復制粘貼操作和圖像拼接操作進行檢測,并且有一定的篡改區(qū)域定位能力。其首先把圖像分成 32×32 的不重疊塊,對每一個圖像塊進行小波變換,獲得圖像塊的基本特征作為原始輸入。在第一階段中,利用棧式自動編碼器對每個原始輸入的復雜特征進行學習;在第二階段,結合了相鄰塊的信息,來計算每個塊的最終檢測結果。其在 CASIA數(shù)據(jù)集上制作了訓練集和測試集,在測試集對塊進行分類的準確度達到了91.09%。但是該方法是對整個圖像塊進行分類,方法得到的定位結果和實際的篡改區(qū)域有較大的差距。
Bayer 等人[11]提出了一種基于CNN 的通用的圖像操作檢測算法。算法檢測的圖像操作包括:中值濾波、高斯模糊、加性高斯白噪聲、重采樣。其創(chuàng)新點在于對 CNN 模型進行了修改。CNN 傾向于學習表示圖像的內容特征,而不是與檢測圖像操作有關的特征。因此他們參考了已有的圖像取證方面的研究,對第一個卷積層的濾波器添加了額外的約束。對第一層的12 個濾波器添加的約束為:中心值為-1, 四周的所有值之和為1。其實驗結果顯示該算法可以對多種圖像操作進行檢測,平均準確度達到了99.1%。
Rao 等人[12]提出用 CNN 來檢測拼接篡改和復制粘貼篡改。其提出的算法步驟較多。該算法用 CNN 提取尺寸為128×128×3 的圖像塊的層次化特征,差異在于CNN 的參數(shù)并沒有全部采用隨機初始化的方法,而是把第一層初始化為30 個高通濾波器,以計算殘差。接著對圖像應用滑動窗口方法并經(jīng)特征融合步驟得到整個圖像上的特征。最后需要應用SVM 分類器來對整張圖像的特征進行分類,以判斷整張圖像是否經(jīng)過篡改。算法在CASIA v1.0 的準確度達到了98.04%,在CASIA v2.0 數(shù)據(jù)集上的準確度達到了97.83%。雖然準確度較高,并且可以同時實現(xiàn)復制粘貼、拼接篡改檢測,但是無法實現(xiàn)篡改區(qū)域的定位。
Bondi 等人[13]提出用CNN 提取圖像塊中與相機型號有關的特征,以實現(xiàn)拼接篡改檢測與定位。如果一個圖像中檢測出了兩種相機型號,說明圖像經(jīng)過了拼接篡改。該算法把圖像分成不重疊的64×64 大小的圖像塊,利用CNN 得到圖像塊對應的相機模型特征。接著在整張圖像上進行 K-means 聚類,得到篡改區(qū)域的掩膜估計。其在測試集中,不僅有CNN 訓練過程中使用到的相機型號,而且還額外添加了 8 個沒有在訓練時使用過的相機型號,以測試方法對未知相機型號的魯棒性。該方法利用相機型號來進行拼接篡改檢測,證明 CNN 可以得到圖像塊的相機型號特征,而且對未知的相機型號也有檢測能力。
Marra 等人[14]提出了端到端的圖像篡改檢測方法。該方法直接把整幅圖片輸入到卷積神經(jīng)網(wǎng)絡中,進行端到端的訓練。其目的一方面是為了避免圖像塊尺度上的低錯誤率導致的整張圖像上的高錯誤率,另一方面是為了讓 CNN 在整張圖像上進行學習。其和已有的算法在多個數(shù)據(jù)集上進行了對比實驗,選取的指標為 AUC。其實驗結果中,端到端方法在每個數(shù)據(jù)集上都取得了比其它方法更好的結果。
無論是傳統(tǒng)方法,還是基于深度學習的方法,都離不開圖像篡改數(shù)據(jù)集。數(shù)據(jù)集一方面提供了所需要的篡改圖像,另一方面也使得不同算法之間的比較更為方便。在圖像篡改檢測領域中,有不少常用的數(shù)據(jù)集,但是由于這些數(shù)據(jù)集發(fā)布的時間不同并且創(chuàng)建目的不同,也存在著不少的差異性。例如在圖像尺寸、格式、數(shù)量、篡改操作、后處理操作等方面,各個數(shù)據(jù)集不盡相同。
早期的數(shù)據(jù)集針對的是傳統(tǒng)檢測方法,往往圖像數(shù)量少,尺寸小,也沒有后處理操作。隨著對檢測算法魯棒性的關注,數(shù)據(jù)集中開始包含不同格式、不同后處理操作的圖像。為了實現(xiàn)篡改區(qū)域的定位,有的數(shù)據(jù)集還會包含篡改區(qū)域的掩膜。詳細的圖像篡改檢測數(shù)據(jù)集信息見表1。

表1:圖像篡改檢測數(shù)據(jù)集
圖像篡改檢測在近幾年受到了越來越多的關注,也有大量的篡改檢測方法提出。本文總結了圖像篡改檢測的分類,對傳統(tǒng)方法中的復制粘貼篡改檢測和拼接篡改檢測做了介紹,并分析了目前基于深度學習的檢測方法。
傳統(tǒng)方法利用手工提取的特征進行檢測,算法魯棒性差。基于深度學習的方法借鑒并進一步發(fā)展了傳統(tǒng)方法,例如對CNN 的卷積層設置為受限的高通濾波器;利用CNN 學習圖像塊的相機型號特征。這些方法已經(jīng)取得了一定的進展。但是基于深度學習的圖像篡改檢測方法還是需要利用圖像塊來實現(xiàn)篡改區(qū)域的定位,篡改區(qū)域定位算法還需要進一步的發(fā)展。