張 凱,張 珣
(杭州電子科技大學(xué)電子信息學(xué)院,浙江杭州 310018)
通過數(shù)碼相機(jī)、手機(jī)、打印機(jī)等設(shè)備可獲取數(shù)字圖像,且隨著Photoshop 等圖像處理軟件的優(yōu)化與普及,人們可以輕松改動(dòng)原圖,制作出任何想要的新圖像[1]。在知識產(chǎn)權(quán)、法庭取證和學(xué)術(shù)研究等領(lǐng)域,隨意篡改圖像可能會引發(fā)一系列惡劣的社會問題。因此,鑒別圖像內(nèi)容的真實(shí)性尤為重要,在這一背景下,數(shù)字圖像取證技術(shù)應(yīng)運(yùn)而生。
數(shù)字圖像取證技術(shù)是通過各種手段分析數(shù)字圖像統(tǒng)計(jì)信息,包括真實(shí)性、完整性、原創(chuàng)性息,進(jìn)而判斷圖像是否經(jīng)過篡改或偽造的一種技術(shù)[2-4],可分為主動(dòng)取證[5-6]和被動(dòng)取證[7]兩種。主動(dòng)取證包括數(shù)字水印和數(shù)字簽名,被動(dòng)取證包括圖像源辨識[8]、圖像篡改檢測[9]、圖像真實(shí)性鑒定。主動(dòng)取證技術(shù)是在圖像中預(yù)先加入水印或簽名信息,若圖像經(jīng)過篡改,預(yù)先嵌入的信息就會被破壞。被動(dòng)取證技術(shù)只需要檢測數(shù)字圖像的內(nèi)在統(tǒng)計(jì)特性,應(yīng)用范圍廣泛。
圖像源辨識是數(shù)字圖像被動(dòng)取證的重要研究方向,其可根據(jù)待測圖像確定成像設(shè)備來源。在數(shù)字成像過程中,光信號在經(jīng)過鏡頭、成像傳感器時(shí)會引入噪聲,在后期數(shù)字信號處理階段也會引入一系列噪聲,可根據(jù)這些噪聲性質(zhì)判斷設(shè)備來源。針對相機(jī)源識別,相關(guān)學(xué)者已經(jīng)進(jìn)行了大量研究。Roy 等[10]采用離散余弦變換方法提取特征,基于隨機(jī)森林的AdaBoost 集成分類器進(jìn)行相機(jī)源識別;Jaro?slaw 等[11]基于鏡頭漸暈現(xiàn)象會使圖像邊緣光強(qiáng)較弱的依據(jù),提出采用照片邊緣光強(qiáng)值進(jìn)行相機(jī)識別的方法;Li等[12]提出利用鏡頭畸變現(xiàn)象計(jì)算圖像畸變系數(shù)以識別相機(jī),但該方法受環(huán)境影響較大,失真參數(shù)會隨著物體距離、焦距和視角的變化而變化。
近年來,深度學(xué)習(xí)在圖像識別領(lǐng)域廣泛應(yīng)用[13-14]。深度學(xué)習(xí)能自動(dòng)學(xué)習(xí)圖像特征,其提取的特征比人工設(shè)計(jì)的特征有更強(qiáng)的表達(dá)能力和穩(wěn)定性,因此深度學(xué)習(xí)可獲得更為本質(zhì)的圖像深層特征。深度學(xué)習(xí)領(lǐng)域具有代表性的卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network,CNN)通過卷積核提取圖像特征,而卷積核的本質(zhì)是特征提取的濾波器,可根據(jù)提取特征性質(zhì)選擇不同卷積核。本文以相機(jī)噪聲頻率域特征為研究對象,結(jié)合CNN 進(jìn)行特征提取與分類,通過對圖像進(jìn)行加噪、裁剪成不同圖像塊處理,對該算法的可靠性和魯棒性進(jìn)行研究。
數(shù)碼相機(jī)成像原理[15]如圖1 所示。當(dāng)數(shù)碼相機(jī)拍攝照片時(shí),自然場景的反射光信號通過鏡頭,通過彩色濾波陣列分解成不同顏色的光,然后通過成像傳感器將光信號轉(zhuǎn)換為電信號,電信號經(jīng)過顏色插值、白平衡[16]、伽馬矯正[17]、對比度增強(qiáng)、圖像壓縮等處理后被轉(zhuǎn)化為數(shù)字圖像,最終保存在存儲器中。
Fig.1 Camera imaging process圖1 相機(jī)成像過程
相機(jī)噪聲分為很多種,如經(jīng)過光電轉(zhuǎn)換的數(shù)字圖像會引入噪聲;自然場景的光經(jīng)過鏡頭時(shí)會因鏡頭灰塵、鏡頭畸變現(xiàn)象引入噪聲;由于生產(chǎn)工藝限制,成像傳感器會引入暗電流噪聲和PRNU 噪聲[18-19];在后期圖像處理階段會引入熱噪聲、散粒噪聲等隨機(jī)噪聲。
傳感器噪聲在數(shù)碼相機(jī)生產(chǎn)過程中便已產(chǎn)生,不同生產(chǎn)商的傳感器噪聲不同,即使是同一生產(chǎn)商的同一型號相機(jī),其傳感器噪聲也不同,因此傳感器噪聲可被視為相機(jī)的“固有指紋”。光響應(yīng)非均勻性(PRNU)噪聲是較為普遍的傳感器噪聲,由于成像傳感器各部分對光線敏感度不同,使得光子在傳感器表面分布不均,表現(xiàn)在數(shù)字圖像上即為像素值不同。這種噪聲與傳感器材料、制造工藝等物理特性相關(guān),幾乎是無法消除的。
Lukas 等[20]最早提出了基于PRNU 的圖像源辨識算法,其首先對成像傳感器輸出建模,通過最大似然估計(jì)法從多張參考圖像中估計(jì)PRNU 特征,之后又通過平均多幅參考圖像的噪聲殘差,得到該相機(jī)的參考模式噪聲,具體公式如下。
由原圖減去濾波器處理后的圖像得到噪聲殘差:
噪聲殘差求平均值得到PRNU 信號:
式中,Wk為圖像k的噪聲殘差,Ik為原始圖像k,F(xiàn)(Ik)為對圖像k做濾波處理。
使用噪聲殘留測試圖像(n)與相機(jī)參考PRNU 圖像(P)之間的歸一化相關(guān)系數(shù)確定特定圖像是否由相機(jī)(C)拍攝。該歸一化相關(guān)統(tǒng)計(jì)檢驗(yàn)可用于確定源相機(jī)識別中基于濾波的PRNU 噪聲殘差與相機(jī)參考PRNU 圖像之間的相關(guān)度,計(jì)算公式為:
PRNU 噪聲中通常還有一種非唯一偽像噪聲(NUA),主要由傳感器、彩色濾波陣列和鏡頭等器件引起。由于圖像信號的內(nèi)容信息主要分布在低頻區(qū)域,噪聲信息分布在高頻區(qū)域,因此可以使用以下高通濾波器提取圖片高頻分量。
提取出的噪聲信號包含PRNU 噪聲和NUA 噪聲,對PRNU 噪聲圖像作自相關(guān)處理,能夠體現(xiàn)信號周期性。
以Huawei-P9 為例,圖2 展示了其噪聲圖、自相關(guān)圖像與傅里葉幅值圖像。噪聲圖像的自相關(guān)圖像有周期性網(wǎng)格特征,在經(jīng)過傅里葉變換后具有周期性亮點(diǎn),高亮度表示該頻率的特征更加明顯。
Fig.2 Processing image of noise signal圖2 噪聲信號處理圖像
CNN 結(jié)構(gòu)模型[21-22]如圖3 所示,包含輸入層、卷積層、池化層、全連接層和Softmax 回歸分類層。卷積層和池化層可用于提取圖像特征,以下主要介紹卷積層、池化層和Softmax 回歸分類層。
Fig.3 Basic structure of convolutional neural network圖3 CNN 基本結(jié)構(gòu)
卷積層又稱為特征提取層,用于學(xué)習(xí)輸入數(shù)據(jù)的局部特征,通常使用多層卷積得到更深層次的特征圖。卷積運(yùn)算可提取圖像邊緣、線條等特性,但不會改變圖像大小。
池化層又稱為特征映射層,通常位于卷積層后,為對輸入圖像進(jìn)行下采樣得到的層。池化層的主要作用為降維數(shù)據(jù)、去除冗余信息、壓縮特征、簡化網(wǎng)絡(luò)復(fù)雜度、減少計(jì)算量、減小內(nèi)存消耗,同時(shí)實(shí)現(xiàn)平移不變性、旋轉(zhuǎn)不變性和尺度不變性。
池化方法包括一般池化、重疊池化和空金字塔池化。一般池化通常包括平均池化和最大池化,其中平均池化是計(jì)算圖像區(qū)域的平均值作為該區(qū)域池化后的值,最大池化是選擇圖像區(qū)域的最大值作為該區(qū)域池化后的值。重疊池化即相鄰池化窗口間有重疊區(qū)域。空間金字塔池化是將一個(gè)池化變成多個(gè)尺度的池化,用不同大小池化窗口作用于上層卷積特征。
CNN 分類層如圖4 所示。全連接層將權(quán)重矩陣與輸入向量相乘再加上偏置,將n 個(gè)(-∞,+∞)的實(shí)數(shù)映射為K 個(gè)(-∞,+∞)的實(shí)數(shù)。Softmax 將K 個(gè)(-∞,+∞)的實(shí)數(shù)映射為K 個(gè)(0,1)的概率,同時(shí)保證它們之和為1。具體可表示為:
Fig.4 Softmax classification layer圖4 Softmax 分類層
式中,x 為全連接層的輸入,Wn×K為權(quán)重,b 為偏置項(xiàng),為Softmax 輸出的概率。Softmax 計(jì)算方式為:
拆成每個(gè)類別的概率如下:
式中,wj為圖4 中的權(quán)重系數(shù),最終分類結(jié)果取其最大值。
深度學(xué)習(xí)需要大量數(shù)據(jù)運(yùn)算,對硬件有一定要求,本實(shí)驗(yàn)使用的計(jì)算機(jī)軟硬件配置如表1 所示。系統(tǒng)為Win?dows10,實(shí)現(xiàn)訓(xùn)練的代碼均在PyTorch 框架下使用Python 語言編程。
Table 1 Experimental equipment表1 實(shí)驗(yàn)設(shè)備
使用Dresden 數(shù)據(jù)集,其是基于相機(jī)數(shù)字取證技術(shù)開發(fā)與基準(zhǔn)測試而構(gòu)建的數(shù)據(jù)集。在環(huán)境可控的條件下,使用25 種不同型號的73 臺相機(jī)共拍攝了14 000 張室內(nèi)和室外場景圖像,有助于嚴(yán)格分析制造商、模型、設(shè)備相關(guān)特性及其與其他影響因素的關(guān)系。以下實(shí)驗(yàn)共使用5 種型號的相機(jī)進(jìn)行實(shí)驗(yàn)。
實(shí)驗(yàn)設(shè)計(jì)方案如圖5 所示,主要包括圖像預(yù)處理、提取噪聲信號、CNN 實(shí)現(xiàn)圖像分類3 個(gè)部分。
Fig.5 Experimental flow圖5 實(shí)驗(yàn)流程
在圖像預(yù)處理過程中,在原始圖像中加上高斯噪聲、椒鹽噪聲進(jìn)行模糊處理,并與不加噪聲的圖像進(jìn)行比較,驗(yàn)證噪聲對算法魯棒性的影響。將原始圖像裁剪成不同圖像塊,以破壞其周期性信息,驗(yàn)證尺寸對算法魯棒性的影響。
PyTorch 框架中torchvision 模塊下有torchvision.datas?ets、torchvision.models、torchvision.transforms 3 個(gè)子包。torchvision.models 中包含常用的Alexnet、Densenet、Incep?tion、Resnet、Squeezenet、VGG 等網(wǎng)絡(luò)結(jié)構(gòu),并且提供了預(yù)訓(xùn)練模型,本實(shí)驗(yàn)使用該模塊下的VGG16 網(wǎng)絡(luò)結(jié)構(gòu)模型。
實(shí)驗(yàn)衡量標(biāo)準(zhǔn)與以下4 個(gè)指標(biāo)相關(guān):①True Positive(真正,TP):將正類預(yù)測為正類數(shù);②True Negative(真負(fù),TN):將負(fù)類預(yù)測為負(fù)類數(shù);③False Positive(假正,F(xiàn)P):將負(fù)類預(yù)測為正類數(shù)誤報(bào);④False Negative(假負(fù),F(xiàn)N):將正類預(yù)測為負(fù)類數(shù)。
僅用精確度或召回率無法全面評估模型優(yōu)劣,因此可將精確度與召回率結(jié)合起來,得到F1 評分作為模型評價(jià)準(zhǔn)則。在多分類問題中,F(xiàn)1 為精確度與召回率的調(diào)和平均,表示為:
另一個(gè)流行的度量標(biāo)準(zhǔn)為馬修斯相關(guān)系數(shù)(MCC),即決策圖與基本事實(shí)之間的互相關(guān)系數(shù),其計(jì)算方式對不平衡類具有魯棒性,公式如下:
選取5 類相機(jī)的原始圖像,分別裁剪成56×56、128×128、256×256 大小的圖像塊進(jìn)行實(shí)驗(yàn),分析不同尺寸圖像塊對NUA 信號周期性的影響。
如表2 所示,基于噪聲頻域的處理算法有較好的分類準(zhǔn)確率,可達(dá)95%以上,并且同一型號相機(jī)不同尺寸圖像的分類準(zhǔn)確率相差較小。FinePixJ50 型相機(jī)受尺寸影響最小,在128×128 尺寸下分類準(zhǔn)確率最高,為98.9%,在56×56尺寸下分類準(zhǔn)確率最低,為97.6%,相差1.3%。DSC-H50型相機(jī)受尺寸影響最大,在128×128 尺寸下分類準(zhǔn)確率最高,為98.7%,在56×56 尺寸下分類準(zhǔn)確率最低,為95.9%,相差2.8%。由此可見,圖像尺寸大小對算法影響并不大,最多相差2.8%。
Table 2 Classification accuracy of image blocks in different sizes表2 不同尺寸圖像塊分類準(zhǔn)確率 (%)
表3 為256×256 尺寸下的圖像分類混淆矩陣,表4 為256×256 尺寸下的圖像分類報(bào)告。
Table 3 Confusion matrix of 256×256 size表3 256×256 尺寸下的混淆矩陣 (%)
Table 4 Classification report of 256×256 size表4 256×256 尺寸下的分類報(bào)告
圖像塊尺寸統(tǒng)一采用256×256,分別在不加噪聲、加上高斯噪聲、加上椒鹽噪聲3 種情況下進(jìn)行實(shí)驗(yàn),分析噪聲對算法的影響,其中初始高斯噪聲均值為0,方差為0.01,椒鹽噪聲密度為0.05。由表5 可知,在給圖像加上高斯或椒鹽噪聲后,相機(jī)識別準(zhǔn)確率會有一定下降,但均在90%以上。
Table 5 Classification accuracy after noise processing表5 加噪處理下的分類準(zhǔn)確率 (%)
為進(jìn)一步研究噪聲對識別準(zhǔn)確率的影響,以下實(shí)驗(yàn)分別增加高斯噪聲和椒鹽噪聲的密度。由圖6 可知,隨著噪聲密度不斷增大,圖像內(nèi)容信息以及“指紋信息”會被噪聲信號掩蓋,準(zhǔn)確率降低。但在噪聲密度達(dá)到一定值后,識別準(zhǔn)確率受噪聲影響的敏感度降低,由此可見本文算法具有一定抗噪聲干擾能力,魯棒性較好。
Fig.6 Classification accuracy under different noise densities圖6 不同噪聲密度下的分類準(zhǔn)確率
本文針對相機(jī)源識別算法的魯棒性進(jìn)行了研究,以相機(jī)噪聲頻域信號為研究對象,通過對圖像進(jìn)行切割、加噪處理,證明了該算法的魯棒性。后續(xù)工作可以考慮使用不同神經(jīng)網(wǎng)絡(luò)或分類器進(jìn)行實(shí)驗(yàn),探究分類器對算法的影響。同時(shí)可通過切割圖像塊的方式對圖像進(jìn)行篡改檢測,即檢測篡改區(qū)域位于哪個(gè)圖像塊,并精確定位到原圖中。