高培賢,魏立線,劉 佳,劉明明
(武警工程大學 網(wǎng)絡與信息安全武警部隊重點實驗室, 陜西 西安 710086)
傳統(tǒng)的圖像隱寫分析方法是先提取特征,再利用分類器進行分類,例如富模型(RM)[1]+集成分類器(EC)[2]。隨著深度學習在圖像識別領域的優(yōu)異表現(xiàn),卷積神經(jīng)網(wǎng)絡(CNN)逐漸成為一種重要的圖像隱寫分析方法。Guangshuo Xu等構建了一個5層的CNN模型進行隱寫分析,對S-UNIWARD算法的檢測準確率達到了80.24%[3],但是CNN的缺點是隨著深度的增加,網(wǎng)絡模型會出現(xiàn)退化問題,模型識別準確率會很快達到飽和,然后迅速下降[4,5]。為了解決退化問題,何凱明等提出了深度殘差網(wǎng)絡(DRN),通過捷徑連接改變網(wǎng)絡結構,實現(xiàn)殘差學習。何凱明等構建的152層DRN模型在ImageNet測試集中的識別誤差為3.57%,在2015年的大規(guī)模視覺識別挑戰(zhàn)賽中贏得了第一名[6]。
針對目前圖像隱寫分析效率較低的情況,本文提出了一個基于深度殘差網(wǎng)絡的神經(jīng)網(wǎng)絡模型(S-DRN)進行圖像隱寫分析。實驗結果表明,相比Guanshuo Xu等的構建CNN模型,本文模型識別準確率提高了12.89%。
深度卷積神經(jīng)網(wǎng)絡的提出引發(fā)了圖像分類方法的一系列突破[7-9],通過增加網(wǎng)絡深度可以提取圖像更加抽象的特征,從而提高模型識別準確率。隨著網(wǎng)絡深度的增加,梯度消失/爆炸問題會阻礙網(wǎng)絡的收斂,批量規(guī)范化(BN)的提出使得深度網(wǎng)絡利用隨機梯度下降(SGD)得以收斂。但是,深度網(wǎng)絡在訓練過程中會出現(xiàn)退化問題,即隨著網(wǎng)絡層數(shù)的遞增,網(wǎng)絡識別性能會逐漸達到飽和后并迅速下降。退化問題并不是由于過擬合造成的[6],而是增加網(wǎng)絡的深度會使得訓練誤差增加。退化問題表明了深度網(wǎng)絡在訓練過程中尋找最優(yōu)權重參數(shù)存在很大的困難。
在訓練好的淺層網(wǎng)絡基礎上,通過增加網(wǎng)絡層來擬合恒等映射,這種加深網(wǎng)絡的方法使得訓練誤差不應高于其淺層網(wǎng)絡模型,但退化問題表明利用非線性網(wǎng)絡層去擬合恒等映射在求解上存在困難[6]。在CNN中,H(X)為若干堆疊的非線性網(wǎng)絡層逐漸逼近的目標函數(shù),其中X為網(wǎng)絡的輸入。與CNN不同的是,殘差網(wǎng)絡使用非線性網(wǎng)絡層去擬合殘差函數(shù)
F(X)=H(X)-X
(1)
這里假設輸入與輸出是相同維度。通過捷徑連接,使得網(wǎng)絡的輸出為
H(X)=F(X)+X
(2)
雖然這兩種方法都可以逐漸擬合出目標函數(shù)H(X),但是利用堆疊的非線性網(wǎng)絡層學習殘差值使其逼近于0值相對來說較為容易。因此,相比無參考函數(shù)的網(wǎng)絡,殘差網(wǎng)絡使得網(wǎng)絡進行參數(shù)最優(yōu)化變得更加容易實現(xiàn),且隨著網(wǎng)絡層數(shù)的增加可以獲得更高的識別準確率。
如圖1為1組殘差學習模塊。殘差學習模塊的輸入為X,輸出為
y=F(X,{Wi})+X
(3)
式中:Wi為權重矩陣,F(xiàn)(X,{Wi})為網(wǎng)絡學習到的殘差函數(shù)。當X與F(X,{Wi})維度不同時,通過在捷徑連接上作線性投影Ws來實現(xiàn)輸入輸出之間的加法,即
y=F(X,{Wi})+WsX
(4)
為了簡化符號,在輸出公式中省略了偏差項。殘差模塊中必須至少含有兩層卷積層,若只有一層卷積層,則殘差模塊為線性層,其輸出為y=W1X+X,失去了殘差學習的優(yōu)勢。
圖1 殘差學習模塊
殘差學習使得深度卷積神經(jīng)網(wǎng)絡的訓練得以實現(xiàn),隨著網(wǎng)絡層數(shù)的增加,模型的識別準確率也逐漸增加。在DRN的殘差學習模塊中,捷徑連接特征圖的大小和維度必須與殘差特征圖相同,否則不能實現(xiàn)捷徑連接的輸出與殘差函數(shù)的加法。對于卷積操作帶來的特征圖大小變化,通過采用0元素填充使得特征圖大小不變。當網(wǎng)絡中的特征維度增加時,有兩種方案實現(xiàn)維度相匹配。①對于維度增加帶來的空缺元素補零。②通過線性投影來匹配維數(shù),采用大小為1×1的卷積核來實現(xiàn)。整個網(wǎng)絡仍然可以使用反向傳播算法(BP)進行端到端的訓練,不需修改求解方法,在很大程度上方便了網(wǎng)絡的訓練。
基于何凱明等的研究,本文提出了一個S-DRN模型進行圖像隱寫分析,如圖2所示。在該模型中共有34層卷積層。這些卷積層可分為3類:高通濾波器層(HPF層),特征提取卷積層和殘差學習卷積層,其中參與權重更新的是殘差學習卷積層。
在圖像隱寫分析領域,HPF層的是一種特殊的卷積層。其卷積核大小為5×5,通道數(shù)為1,權重為固定值F,且不隨隨機梯度下降(SGD)而更新。網(wǎng)絡的輸入經(jīng)過HPF層預處理之后再進入特征提取卷積層。HPF層的使用可以加快網(wǎng)絡的收斂速度
特征提取卷積層與CNN中的卷積層相同。該卷積層的卷積核與輸入進行卷積操作,提取出輸入的不同特征,第一層卷積層提取低級特征,更高層的卷積層提取更高級的特征[10]。當網(wǎng)絡深度加深以及訓練樣本數(shù)量有限時,使用擬合好的卷積層可以避免過擬合以及縮短訓練時間,該模型使用了擬合好的兩層卷積層。
每個殘差模塊由兩層殘差學習卷積層組成,并通過捷徑連接將殘差函數(shù)與輸入相加實現(xiàn)殘差學習。當相鄰殘差模塊之間維度相同時,捷徑連接采用恒等映射。當相鄰殘差模塊中卷積核個數(shù)增加時,在捷徑連接中采用大小為1×1的卷積核來實現(xiàn)維度的增加。在殘差模塊中采用了大小為3×3的卷積核,共構建了16組殘差學習模塊。
在殘差學習模塊后采用了兩層輸出為1000維的全連接層和一層損失函數(shù)層,全連接層的神經(jīng)元與上一層網(wǎng)絡的神經(jīng)元全連接,整合出卷積層中可以區(qū)分所屬類別的局部特征。損失函數(shù)層采用的是Softmax損失函數(shù),將輸入分為兩類。具體的分類問題需要考慮具體的損失函數(shù)。由于池化層對分類效果產(chǎn)生不好的影響,因此該模型沒有使用池化層。
圖2 S-DRN框架
Guanshuo Xu等構建了一個5層CNN模型進行隱寫分析,該模型由5組卷積模塊組成,如圖3所示,每組卷積模塊由卷積層和池化層組成。前2組卷積模塊采用TanH激活函數(shù),后3組卷積模塊采用ReLU激活函數(shù)。為了避免模型在訓練過程中陷入局部最優(yōu)化,在激活函數(shù)前都加入了批量正規(guī)化層(batch normalization layer,BN層)。輸出層由一層全連接層和損失函數(shù)層組成。該模型在BOSSBass數(shù)據(jù)庫上檢測S-UNIWARD嵌入算法的準確率達到80.24%。
圖3 Guanshuo Xu等構建的5層CNN模型
相比Guanshuo Xu等構建的CNN模型,S-DRN模型顯著增加了網(wǎng)絡的深度,并且利用殘差學習解決了退化問題,有效提高了圖像隱寫分析效果;對于圖像隱寫分析來說,模型通過識別圖像中嵌入的噪聲進行分類,而池化層會弱化所嵌噪聲,不利于最終的識別效果,因此S-DRN模型取消了池化層;由于殘差網(wǎng)絡的深度,在網(wǎng)絡訓練過程中會出現(xiàn)梯度消失/爆炸問題,導致模型不收斂或者收斂速度極慢。因此,每個模型都在卷積層之后增加了批量正規(guī)化層(BN層),以實現(xiàn)模型的收斂。BN層的使用還可以增加1%左右的識別準確率[11]。
為了更好的評估深度殘差網(wǎng)絡,本文構建了3種網(wǎng)絡進行對比實驗。①淺層卷積神經(jīng)網(wǎng)絡:由兩層卷積層組成,如圖4(左)所示。②深度卷積神經(jīng)網(wǎng)絡:在淺層卷積神經(jīng)網(wǎng)絡的基礎上,直接疊加32層卷積層,如圖4(右)所示。③深度殘差網(wǎng)絡:在淺層卷積神經(jīng)網(wǎng)絡的基礎上增加了16組殘差學習模塊,如圖3所示。3種網(wǎng)絡都使用相同的HPF層、全連接層、softmax層。
圖4 淺層CNN(左)和深度CNN(右)
考慮到訓練時間,將殘差網(wǎng)絡的中的殘差模塊改為如圖5的瓶頸結構。3個網(wǎng)絡層中卷積核大小分別為1×1、3×3和1×1。卷積核大小為1×1的卷積層是用來減少或恢復維度。通過這種結構改變使得卷積核大小為3×3的卷積層的輸入和輸出維度減小。這種結構的使用可以縮短訓練時間,更加經(jīng)濟[6]。
圖5 瓶頸結構
本文使用的圖像庫是目前圖像隱寫分析最常用的BOSSbase圖像庫,由10 000張大小為512×512的pgm格式的灰度圖像組成。為了增加訓練樣本的數(shù)量以及節(jié)約內(nèi)存,實驗中將圖像裁剪為大小為128×128的圖像,將16×104張圖像作為載體圖像,使用S-UNIWARD隱寫算法對載體圖像進行信息嵌入,嵌入后的圖像作為隱寫圖像,嵌入率為0.4 bpp。將載體圖像和隱寫圖像中的3/4作為訓練集,其余的圖像為測試集,訓練集和測試集均為隨機打亂的順序并且不存在交集。殘差網(wǎng)絡同樣使用BP算法進行端到端的訓練,實驗平臺選擇的是基于C++語言的深度學習仿真工具Caffe。
與CNN相同,殘差網(wǎng)絡的訓練使用隨機梯度下降算法(SGD)進行優(yōu)化。學習速率初始值為0.001,學習率變化策略為“inv”,避免了手動調整學習率參數(shù),使學習率隨著迭代次數(shù)的增加自動調整。由于GPU內(nèi)存的限制,訓練時最小批量大小為64,測試時最小批量大小為40。沖量參數(shù)(momentum)為0.9,權值衰減(weight_decay)為0.004。對模型迭代20 000次進行訓練。為了更好地對比CNN和殘差網(wǎng)絡,在訓練過程中網(wǎng)絡都采用相同的參數(shù)。
相比傳統(tǒng)的圖像隱寫分析法,S-DRN模型較大的提高了圖像隱寫分析的檢測準確率和檢測效率;相比XU等[3]構建的5層CNN模型,S-DRN模型提取了更抽象的高級特征,并且解決了網(wǎng)絡退化問題,提高了識別效果。實驗結果見表1。
表1 各模型識別準確率
本文首先構建了兩種CNN模型進行實驗,這兩種模型除卷積層不同外,其余各層以及參數(shù)均相同。實驗結果表明,兩層卷積層的CNN模型的識別效果優(yōu)于一層卷積層的CNN模型,見表2。同時優(yōu)于傳統(tǒng)的隱寫分析算法和XU等構建的5層CNN模型。
表2 淺層CNN模型識別準確率
在擬合好的兩層CNN模型的基礎上,對比了直接疊加的平凡網(wǎng)絡和不同深度的殘差網(wǎng)絡。網(wǎng)絡的深度直接影響識別效果,對于殘差網(wǎng)絡,網(wǎng)絡越深,識別效果越好。但隨著網(wǎng)絡深度增加,網(wǎng)絡參數(shù)急劇增多,需要更大的GPU內(nèi)存以及更多的訓練時間。因此,本文對比了3種不同深度的殘差網(wǎng)絡。結果如圖6所示,殘差網(wǎng)絡的準確率明顯高于淺層CNN和直接堆疊的平凡網(wǎng)絡。
圖6 3種類型的神經(jīng)網(wǎng)絡識別準確率
網(wǎng)絡中池化層會弱化噪聲,不利于最終的識別效果。因此,本文還對池化層對隱寫分析檢測效果的影響做了對比實驗。實驗結果見表3,池化層會降低模型隱寫分析的準確率,因此在模型中取消了池化層。
對于圖像隱寫分析,HPF層極大地提高了模型的收斂速度,表4為S-DRN模型在迭代20 000次時有無使用HPF層的損失值和準確率對比結果,從表中可以看出,當訓練20 000次時,無HPF層的模型損失值仍然沒有收斂,分類結果接近于隨機分類。
網(wǎng)絡訓練的損失值(loss)代表著網(wǎng)絡的擬合程度,圖7表明了平凡網(wǎng)絡的擬合速度慢于殘差網(wǎng)絡,這也證明了神經(jīng)網(wǎng)絡隨著深度的增加會出現(xiàn)退化問題,而殘差網(wǎng)絡可以有效解決退化問題。
表4 有無HPF層的損失值和識別準確率
圖7 平凡網(wǎng)絡和S-DRN模型損失值(loss)
本文構建了一個深度殘差網(wǎng)絡模型進行圖像隱寫分析,增加了網(wǎng)絡模型的深度,解決了退化問題,提高了識別準確率。實驗結果表明,S-DRN在圖像隱寫分析鄰域的表現(xiàn)優(yōu)于淺層卷積神經(jīng)網(wǎng)絡和傳統(tǒng)的圖像隱寫分析算法。但是,深度網(wǎng)絡的訓練相對于淺層網(wǎng)絡比較耗時,下一步研究的方向是增強深度學習在隱寫分析領域的準確性以及提高深度網(wǎng)絡的訓練效率。