宋炎寒 蘇紅旗
(中國礦業(yè)大學(xué)(北京)機(jī)電與信息工程學(xué)院 北京市 100083)
隨著攝影技術(shù)和互聯(lián)網(wǎng)的發(fā)展,數(shù)字圖像在日常生活中扮演了越來越重要的角色。在新聞報(bào)導(dǎo)、法庭取證、醫(yī)學(xué)、科學(xué)研究、社交等領(lǐng)域中,數(shù)字圖像已經(jīng)成為不可或缺的一部分。當(dāng)用數(shù)碼設(shè)備拍攝照片時(shí),我們希望照片能真實(shí)的記錄實(shí)際發(fā)生的場景,但是隨著圖像處理軟件 (如 Photoshop, GIMP) 的快速發(fā)展,對數(shù)字圖像的處理越來越容易。例如,在 Photoshop 中可以輕易的完成尺寸調(diào)節(jié)、對比度調(diào)節(jié)、模糊等圖像操作,甚至可以比較容易的完成圖像特定區(qū)域的選擇和修改。這些圖像處理在一些場景下是必不可少的,可以使得拍攝的數(shù)字圖像更為美觀。但是一些圖像處理以傳遞虛假的信息為目的,對圖像的內(nèi)容進(jìn)行“移花接木”等操作。這些惡意造假事件,有可能對社會(huì)造成不良的影響。
對數(shù)字圖像的修改可以分成三類[1],如圖1所示。第一類是圖像處理 (image manipulation),指通過計(jì)算機(jī)軟件,對數(shù)字圖像完成的所有操作的集合,又叫圖像編輯。第二類是圖像篡改 (image forgery),其是圖像處理的一個(gè)子集,指為了傳遞欺騙性的信息,而對圖像所做的修改。第三類是圖像偽造 (image tampering),是為了在場景中隱藏一個(gè)對象,或者加入一個(gè)新的對象,而改變圖像的一部分。圖像篡改檢測針對的即是圖像篡改,采用主動(dòng)或者被動(dòng)檢測方法,來對圖像的真?zhèn)涡宰龀雠袆e。
圖1:數(shù)字圖像操作分類
經(jīng)過篡改后的圖像會(huì)傳遞錯(cuò)誤的信息。在新聞、法庭取證、科學(xué)研究等特定領(lǐng)域中,這些篡改操作是不被允許的。因此,有必要對圖像篡改進(jìn)行檢測。圖像篡改檢測作為圖像取證 (image forensics)領(lǐng)域的一個(gè)分支[2],很早就受到了關(guān)注。圖像篡改檢測任務(wù)有兩個(gè)不同的目的:一是對圖像是否經(jīng)過篡改進(jìn)行判斷,即對圖像進(jìn)行二分類;二是對篡改區(qū)域進(jìn)行定位,得到篡改區(qū)域的掩膜 (mask)。篡改檢測技術(shù)以實(shí)現(xiàn)第一個(gè)目的為基本要求。對篡改區(qū)域的定位則更為復(fù)雜,根據(jù)所采用的算法和針對的篡改操作類型不同,一部分算法可以實(shí)現(xiàn)篡改區(qū)域的定位。
已有的圖像篡改檢測方法,可以分為主動(dòng)方法和被動(dòng)方法。主動(dòng)方法需要事先向圖像中插入額外的信息,如數(shù)字水印和數(shù)字簽名。在篡改檢測時(shí),需要通過這些額外的信息來判斷圖像是否經(jīng)過了修改。由于網(wǎng)絡(luò)上圖片數(shù)目巨大,很難要求所有的圖像都添加這些額外的信息,因此主動(dòng)方法應(yīng)用的范圍受到了限制。在無法接觸到原始圖片的情況下,研究者提出了被動(dòng)檢測方法。被動(dòng)方法區(qū)別于主動(dòng)方法,是在僅有一張圖像的前提下,通過對圖像的特征進(jìn)行分析,判斷該張圖像是否經(jīng)過了篡改。由于被動(dòng)方法不依賴于額外添加到圖片中的信息,因此又被叫做盲檢測 (blind detection)。雖然經(jīng)過篡改后的圖片有可能在視覺上沒有明顯的篡改痕跡,但是在圖像的統(tǒng)計(jì)指標(biāo)上還是會(huì)產(chǎn)生異常[3]。被動(dòng)方法即利用圖像篡改操作留下的線索來對圖像真?zhèn)涡赃M(jìn)行檢測。圖像篡改檢測技術(shù)分類如圖2所示。
圖2:圖像篡改檢測技術(shù)分類
由于圖像篡改檢測問題的復(fù)雜性,早期的檢測算法并不是通用的,一般只能適用于某一特定的篡改類型。研究較多的篡改類型是復(fù)制粘貼篡改 (copy-move forgery) 和拼接篡改 (splicing forgery)。復(fù)制粘貼篡改是指把圖像中的一部分內(nèi)容復(fù)制,并粘貼到同一張圖像中。拼接篡改新生成的圖像由兩張圖像組合而成,是把一張圖像中的內(nèi)容復(fù)制,并粘貼到另外一張圖像里。兩種篡改方式示例如圖3所示。兩種篡改類型都可以包含適當(dāng)?shù)暮筇幚聿僮?(post-processing),目的是為了隱藏篡改痕跡,使得篡改圖片視覺上更為自然,常用的后處理操作有:旋轉(zhuǎn)、縮放、模糊、對比度調(diào)整等。在圖像篡改檢測領(lǐng)域中,針對這兩種常見的篡改方法的特點(diǎn),進(jìn)行了針對性的研究。
圖3:復(fù)制粘貼篡改(左)和拼接篡改(右)
在傳統(tǒng)的方法中,主要根據(jù)復(fù)制粘貼篡改和拼接篡改的特點(diǎn)手動(dòng)選取特征,來對圖像的真?zhèn)涡赃M(jìn)行判斷。利用傳統(tǒng)方法來進(jìn)行復(fù)制粘貼篡改檢測和拼接篡改檢測的研究領(lǐng)域非常活躍,已經(jīng)有了大量的研究。近幾年,隨著深度學(xué)習(xí)的發(fā)展,特別是深度學(xué)習(xí)在計(jì)算機(jī)視覺領(lǐng)域取得的成功,使得研究者開始關(guān)注基于深度學(xué)習(xí)的圖像篡改檢測。
復(fù)制粘貼篡改檢測是該領(lǐng)域中最早受到關(guān)注的,主要是因?yàn)槠溆忻鞔_的檢測思路。復(fù)制粘貼操作把圖像中一部分復(fù)制并粘貼到圖像的另一個(gè)區(qū)域中,最終的篡改圖像內(nèi)一定含有重復(fù)區(qū)域。根據(jù)這一特點(diǎn),復(fù)制粘貼篡改檢測問題可以轉(zhuǎn)變?yōu)閳D像中的重復(fù)區(qū)域檢測問題[4]。把圖像分成不重疊的圖像塊,在圖像塊之間進(jìn)行匹配,即是早期算法的檢測思路。但是檢測難點(diǎn)在于復(fù)制粘貼篡改并不是圖像內(nèi)容的完全復(fù)制粘貼,而是伴隨著后處理操作。經(jīng)過后處理,篡改圖像更為真實(shí),但是也使得圖像中的重復(fù)區(qū)域在像素值上并不是完全的一致。簡單的像素值匹配算法無法在存在后處理操作的情況下進(jìn)行檢測。為了提高檢測算法對后處理操作的魯棒性,已經(jīng)提出了基于不同圖像特征的檢測算法。
復(fù)制粘貼篡改檢測算法的流程如圖4所示。Christlein 等人[5]提出把已有的算法分成基于塊的方法和基于關(guān)鍵點(diǎn)的方法,基于塊的方法會(huì)把圖像分塊,以每個(gè)圖像塊為單位提取特征向量;基于關(guān)鍵點(diǎn)的方法會(huì)在圖像內(nèi)高熵區(qū)域內(nèi)提取關(guān)鍵點(diǎn)。在匹配階段,會(huì)對提取到的特征向量檢測相似度,檢測到高相似度的特征向量可以看作圖像中存在重復(fù)區(qū)域。過濾在于移除錯(cuò)誤匹配,例如移除錯(cuò)誤匹配的在空間上接近的圖像塊。
圖4:復(fù)制粘貼篡改檢測的流程
早在2003年,F(xiàn)ridric 等人[4]提出通過滑動(dòng)窗口方法和DCT 來對圖像中重復(fù)區(qū)域進(jìn)行檢測。該方法首先把圖像分成不重疊的圖像塊;然后對每一個(gè)圖像塊進(jìn)行離散余弦變化;接下來對量化后的DCT 因子進(jìn)行排序,以找到相似的圖像塊。之后的基于塊的檢測算法大致延續(xù)了這個(gè)思路,改進(jìn)主要集中在塊的特征提取和特征匹配步驟。在論文[1]中,把基于塊的方法所提取的特征分成了6 大類,分別是圖像塊的像素值、統(tǒng)計(jì)指標(biāo)、頻率域因子、不變矩、圖像局部特征、PCA 與SVD。
基于關(guān)鍵點(diǎn)的檢測算法主要是為了解決滑動(dòng)窗口方法計(jì)算量大和對后處理魯棒性差的問題。尺度不變特征變換 (scale invariant feature transform, SIFT) 和加速穩(wěn)健特征 (speeded up robust feature,SURF) 是基于關(guān)鍵點(diǎn)方法中常用的特征。Pan 等人[6]提出用 SIFT算法,提取了圖像中的關(guān)鍵點(diǎn)并實(shí)現(xiàn)對篡改區(qū)域的定位。Xu 等人[7]提出使用SURF 特征的圖像復(fù)制粘貼篡改檢測算法,其對于旋轉(zhuǎn)、縮放、模糊等后處理操作具有魯棒性。基于關(guān)鍵點(diǎn)的算法主要缺點(diǎn)在于無法在光滑的區(qū)域提取關(guān)鍵點(diǎn)。
在拼接篡改的圖像中,被篡改區(qū)域的內(nèi)容來自于另一幅圖像。由于圖像不存在重復(fù)的區(qū)域,無法使用與復(fù)制粘貼篡改檢測相同的方法。拼接篡改檢測主要利用的是圖像中篡改區(qū)域和未篡改區(qū)域來源不同,所導(dǎo)致的圖像統(tǒng)計(jì)特征上存在的差別。因此對圖像的統(tǒng)計(jì)特征進(jìn)行建模,檢測肉眼不可見的篡改痕跡,是拼接篡改檢測的主要方法。常用的篡改痕跡有邊緣不一致、雙重JPEG 壓縮效應(yīng)、光線不一致、與相機(jī)成像過程有關(guān)的不一致。
當(dāng)圖像的格式是 JPEG,并且篡改后的也存儲(chǔ)為JPEG,那么篡改圖像會(huì)出現(xiàn)雙重量化效應(yīng) (double quantization, DQ)。Popescu 等人[8]開發(fā)了識(shí)別雙重壓縮圖像的工具。由于篡改區(qū)域來自于另一幅圖像,有可能與未篡改部分的光線方向不一致。Johnson 等人[9]通過估計(jì)圖像中對象的光線方向來進(jìn)行檢測,如果有對象的光線方法有差異,就認(rèn)為存在圖像篡改。與相機(jī)成像過程有關(guān)的不一致主要利用的有:相機(jī)響應(yīng)函數(shù) (camera response function, CRF),色彩濾波陣列 (color filter array, CFA) 和光響應(yīng)非均勻性(photo response non-uniformity, PRNU)。
傳統(tǒng)的圖像篡改檢測方法針對的是單一的篡改操作和特定的后處理操作,因此局限性主要是魯棒性差。復(fù)制粘貼篡改檢測需要在經(jīng)過后處理的圖像中檢測重復(fù)區(qū)域,但是目前算法針對的后處理操作有限,無法應(yīng)對復(fù)雜的后處理情況。拼接篡改檢測方法有較強(qiáng)的假設(shè)和前提條件,在現(xiàn)實(shí)的應(yīng)用場合中,無法提前預(yù)知待檢測的圖像是否滿足這些算法的基本假設(shè)。如何處理現(xiàn)實(shí)場景中的復(fù)雜情況,是傳統(tǒng)方法面臨的問題。
由于深度學(xué)習(xí)在其他領(lǐng)域取得的成功,圖像篡改檢測領(lǐng)域也開始關(guān)注篡改檢測技術(shù)與深度學(xué)習(xí)技術(shù)的結(jié)合。深度學(xué)習(xí)模型在訓(xùn)練時(shí),可以自動(dòng)學(xué)習(xí)復(fù)雜的特征,從而一定程度上避免了手工選取特征適應(yīng)范圍小、魯棒性差的問題。和傳統(tǒng)檢測方法不同,基于深度學(xué)習(xí)的檢測方法,直接在擁有多種篡改類型、多種后處理操作的訓(xùn)練集上進(jìn)行訓(xùn)練。在基于深度學(xué)習(xí)的篡改檢測算法發(fā)展過程中,卷積神經(jīng)網(wǎng)絡(luò) (convolutional neural network, CNN) 尤其受到關(guān)注。通過利用 CNN 來自動(dòng)提取特征,可以實(shí)現(xiàn)通用的篡改檢測算法。
Zhang 等人[10]為了解決傳統(tǒng)的圖像篡改檢測方法魯棒性差的問題,提出了二階段的層次特征學(xué)習(xí)方法。該算法可同時(shí)對復(fù)制粘貼操作和圖像拼接操作進(jìn)行檢測,并且有一定的篡改區(qū)域定位能力。其首先把圖像分成 32×32 的不重疊塊,對每一個(gè)圖像塊進(jìn)行小波變換,獲得圖像塊的基本特征作為原始輸入。在第一階段中,利用棧式自動(dòng)編碼器對每個(gè)原始輸入的復(fù)雜特征進(jìn)行學(xué)習(xí);在第二階段,結(jié)合了相鄰塊的信息,來計(jì)算每個(gè)塊的最終檢測結(jié)果。其在 CASIA數(shù)據(jù)集上制作了訓(xùn)練集和測試集,在測試集對塊進(jìn)行分類的準(zhǔn)確度達(dá)到了91.09%。但是該方法是對整個(gè)圖像塊進(jìn)行分類,方法得到的定位結(jié)果和實(shí)際的篡改區(qū)域有較大的差距。
Bayer 等人[11]提出了一種基于CNN 的通用的圖像操作檢測算法。算法檢測的圖像操作包括:中值濾波、高斯模糊、加性高斯白噪聲、重采樣。其創(chuàng)新點(diǎn)在于對 CNN 模型進(jìn)行了修改。CNN 傾向于學(xué)習(xí)表示圖像的內(nèi)容特征,而不是與檢測圖像操作有關(guān)的特征。因此他們參考了已有的圖像取證方面的研究,對第一個(gè)卷積層的濾波器添加了額外的約束。對第一層的12 個(gè)濾波器添加的約束為:中心值為-1, 四周的所有值之和為1。其實(shí)驗(yàn)結(jié)果顯示該算法可以對多種圖像操作進(jìn)行檢測,平均準(zhǔn)確度達(dá)到了99.1%。
Rao 等人[12]提出用 CNN 來檢測拼接篡改和復(fù)制粘貼篡改。其提出的算法步驟較多。該算法用 CNN 提取尺寸為128×128×3 的圖像塊的層次化特征,差異在于CNN 的參數(shù)并沒有全部采用隨機(jī)初始化的方法,而是把第一層初始化為30 個(gè)高通濾波器,以計(jì)算殘差。接著對圖像應(yīng)用滑動(dòng)窗口方法并經(jīng)特征融合步驟得到整個(gè)圖像上的特征。最后需要應(yīng)用SVM 分類器來對整張圖像的特征進(jìn)行分類,以判斷整張圖像是否經(jīng)過篡改。算法在CASIA v1.0 的準(zhǔn)確度達(dá)到了98.04%,在CASIA v2.0 數(shù)據(jù)集上的準(zhǔn)確度達(dá)到了97.83%。雖然準(zhǔn)確度較高,并且可以同時(shí)實(shí)現(xiàn)復(fù)制粘貼、拼接篡改檢測,但是無法實(shí)現(xiàn)篡改區(qū)域的定位。
Bondi 等人[13]提出用CNN 提取圖像塊中與相機(jī)型號(hào)有關(guān)的特征,以實(shí)現(xiàn)拼接篡改檢測與定位。如果一個(gè)圖像中檢測出了兩種相機(jī)型號(hào),說明圖像經(jīng)過了拼接篡改。該算法把圖像分成不重疊的64×64 大小的圖像塊,利用CNN 得到圖像塊對應(yīng)的相機(jī)模型特征。接著在整張圖像上進(jìn)行 K-means 聚類,得到篡改區(qū)域的掩膜估計(jì)。其在測試集中,不僅有CNN 訓(xùn)練過程中使用到的相機(jī)型號(hào),而且還額外添加了 8 個(gè)沒有在訓(xùn)練時(shí)使用過的相機(jī)型號(hào),以測試方法對未知相機(jī)型號(hào)的魯棒性。該方法利用相機(jī)型號(hào)來進(jìn)行拼接篡改檢測,證明 CNN 可以得到圖像塊的相機(jī)型號(hào)特征,而且對未知的相機(jī)型號(hào)也有檢測能力。
Marra 等人[14]提出了端到端的圖像篡改檢測方法。該方法直接把整幅圖片輸入到卷積神經(jīng)網(wǎng)絡(luò)中,進(jìn)行端到端的訓(xùn)練。其目的一方面是為了避免圖像塊尺度上的低錯(cuò)誤率導(dǎo)致的整張圖像上的高錯(cuò)誤率,另一方面是為了讓 CNN 在整張圖像上進(jìn)行學(xué)習(xí)。其和已有的算法在多個(gè)數(shù)據(jù)集上進(jìn)行了對比實(shí)驗(yàn),選取的指標(biāo)為 AUC。其實(shí)驗(yàn)結(jié)果中,端到端方法在每個(gè)數(shù)據(jù)集上都取得了比其它方法更好的結(jié)果。
無論是傳統(tǒng)方法,還是基于深度學(xué)習(xí)的方法,都離不開圖像篡改數(shù)據(jù)集。數(shù)據(jù)集一方面提供了所需要的篡改圖像,另一方面也使得不同算法之間的比較更為方便。在圖像篡改檢測領(lǐng)域中,有不少常用的數(shù)據(jù)集,但是由于這些數(shù)據(jù)集發(fā)布的時(shí)間不同并且創(chuàng)建目的不同,也存在著不少的差異性。例如在圖像尺寸、格式、數(shù)量、篡改操作、后處理操作等方面,各個(gè)數(shù)據(jù)集不盡相同。
早期的數(shù)據(jù)集針對的是傳統(tǒng)檢測方法,往往圖像數(shù)量少,尺寸小,也沒有后處理操作。隨著對檢測算法魯棒性的關(guān)注,數(shù)據(jù)集中開始包含不同格式、不同后處理操作的圖像。為了實(shí)現(xiàn)篡改區(qū)域的定位,有的數(shù)據(jù)集還會(huì)包含篡改區(qū)域的掩膜。詳細(xì)的圖像篡改檢測數(shù)據(jù)集信息見表1。
表1:圖像篡改檢測數(shù)據(jù)集
圖像篡改檢測在近幾年受到了越來越多的關(guān)注,也有大量的篡改檢測方法提出。本文總結(jié)了圖像篡改檢測的分類,對傳統(tǒng)方法中的復(fù)制粘貼篡改檢測和拼接篡改檢測做了介紹,并分析了目前基于深度學(xué)習(xí)的檢測方法。
傳統(tǒng)方法利用手工提取的特征進(jìn)行檢測,算法魯棒性差?;谏疃葘W(xué)習(xí)的方法借鑒并進(jìn)一步發(fā)展了傳統(tǒng)方法,例如對CNN 的卷積層設(shè)置為受限的高通濾波器;利用CNN 學(xué)習(xí)圖像塊的相機(jī)型號(hào)特征。這些方法已經(jīng)取得了一定的進(jìn)展。但是基于深度學(xué)習(xí)的圖像篡改檢測方法還是需要利用圖像塊來實(shí)現(xiàn)篡改區(qū)域的定位,篡改區(qū)域定位算法還需要進(jìn)一步的發(fā)展。