王 杰,王讓定,嚴迪群,林昱臻
(寧波大學信息科學與工程學院,浙江寧波315211)
隨著計算機和信息技術快速發(fā)展,信息隱藏技術受到越來越多的關注與研究。隱寫術是信息隱藏的重要分支,它以公開的數字媒體作為載體,將秘密信息嵌入其中,以達到隱藏秘密消息的目的。隱寫分析是與隱寫術相對抗的技術,它的目的是對可疑的載體進行分析檢測,判斷是否存在秘密信息,進一步破壞甚至提取秘密信息,防止隱寫術的濫用,從而保護數字內容或者網絡通信的安全。
回聲隱藏是一種音頻時域隱寫算法,Bender 等[1]在1996年首次提出傳統(tǒng)回聲隱藏算法,該算法通過在音頻中引入回聲來嵌入秘密信息,相較于其他隱寫算法,回聲隱藏算法具有不增加新的噪聲、難以察覺、隱藏效果較好的優(yōu)點,同時也具有一定的魯棒性。之后,Oh 等[2]、Kim 等[3]對其進行了改進,目前回聲隱藏算法已經廣泛應用于秘密通信和版權保護等方面。在回聲隱藏算法不斷發(fā)展的同時,針對回聲隱藏算法的隱寫分析的研究也得到了研究者的廣泛關注。Zeng等[4]提出一種基于功率倒譜和貝葉斯分類器的隱寫分析方法,通過提取音頻功率倒譜峰值作為特征,使用貝葉斯分類器進行分類。實驗結果表明,該方法針對傳統(tǒng)回聲隱藏算法的檢測率可以達到80%以上。楊榆等[5]提出一種基于倒譜和差分方差統(tǒng)計量(Variants of Difference of Sum of Cepstrum,VDSC)隱寫分析方法,通過構造VDSC 來反映隱寫對自然音頻的影響,并通過不斷變換分段的大小和偏置條件來設定閾值,從而判定是否進行過回聲隱藏隱寫。實驗結果表明,該方法針對傳統(tǒng)回聲隱藏算法檢測率為88%。Xie 等[6]提出一種基于峰位聚集指數(Peak Location Aggregation Index,PLAI)的隱寫分析方法,使用滑動窗記錄倒譜系數峰值出現的位置,如果有很大概率出現在相同位置,則判斷為有隱寫過;但該算法會受到回聲嵌入位置的影響。實驗結果表明,針對不同回聲隱藏算法,該方法的檢測率都在85%左右。王昱潔等[7]提出一種基于功率倒譜統(tǒng)計特征的隱寫分析方法,以平均功率倒譜的差分方差和平坦度作為統(tǒng)計特征,并使用支持向量機進行分類。實驗結果表明,針對三種不同回聲隱藏算法,該方法的準確率有較大的提升。但是在回聲隱藏算法的回聲幅度較低時,以上這些基于手工提取特征的方法的檢測準確率并不理想。
近年來,隨著深度學習的不斷發(fā)展,為音頻信息隱藏領域的研究帶來了新的契機。在音頻取證領域,Chen 等[8]提出一種基于卷積神經網絡(Convolutional Neural Network,CNN)音頻操作檢測方法,設計了一個CNN 框架,并使用音頻改進離散余弦變換(Modified Discrete Cosine Transform,MDCT)系數作為網絡的輸入數據。在音頻隱寫領域,Chen 等[9]提出一種基于CNN 的wav 音頻隱寫分析方法,在他們的CNN 網絡框架中加入了一個固定卷積層用于計算輸入數據殘差,并且使用了Lin等[10]提出的1×1的卷積層方法。Wang等[11]提出一種基于CNN 的mp3 音頻隱寫的檢測方法,使用了mp3 音頻的量化改進離散余弦變換(Quantified Modified Discrete Cosine Transform,QMDCT)系數作為網絡的輸入數據,并使用高通濾波器對數據進行處理。除此之外,還有文獻[12]提出了基于CNN 的高級音頻編碼(Advanced Audio Coding,AAC)檢測方法,文獻[13]提出了基于自編碼器(Autoencoder)的AMR(Adaptive Multi-Rate)雙壓縮檢測方法。以上這些基于深度學習的檢測方法得到的結果與傳統(tǒng)方法相比有了很大的提升。
基于以上的背景,本文提出了基于卷積神經網絡的回聲隱藏隱寫分析方法。首先,使用短時傅里葉變換(Short-Time Fourier Transform,STFT)得到音頻的幅度譜系數矩陣作為分類的淺層特征;然后,在此基礎上構建了一個包含四個卷積模塊以及三層全連接層的CNN 模型用于提取深度特征以及分類;最后,在三種經典的回聲隱藏算法上對提出的方法進行了隱寫分析實驗評估。實驗結果表明,本文方法在三種回聲隱藏算法的檢測性能上與傳統(tǒng)的基于手工特征的方法和基于深度學習的方法相比都有較明顯的提升。
Bender等[1]最早提出了傳統(tǒng)回聲隱藏算法(記作K1)。該算法嵌入密信的方法是:將音頻載體s(n)分段,每段長度從幾毫秒到幾十毫秒,每段用于嵌入1 bit的密信;然后構造2個分別代表密信“0”和“1”的不同回聲核?;芈暫耸腔芈曤[藏算法最重要的部分,傳統(tǒng)回聲核如圖1所示?;芈暫说幕芈暦圈烈话阒等?.6~0.9,用2 個不同的延遲時長d0、d1來代表不同密信比特,一般延遲時長為0.5~2 ms。當密信比特為0 時,該段加上代表“0”的回聲核;密信比特為1 時,該段加上代表“1”的回聲核?;芈暫说幕芈暦刃枰奶暨x:當回聲幅度過小時,會出現提取失敗的問題;但當回聲幅度過大時,又會使隱藏的效果大大降低。
傳統(tǒng)回聲核可表示為:
圖1 傳統(tǒng)回聲核示意圖Fig.1 Schematic diagram of echo hiding with traditional kernel
式中:h(n)表示回聲核,δ(n)表示單位脈沖信號,α 為回聲幅度,d為回聲延遲。
目前對傳統(tǒng)回聲隱藏算法的研究集中在對回聲核的改造,研究的關鍵是如何使回聲核的回聲幅度α 可以盡量選取較小的值,以此達到更好的隱藏效果,同時還要保證準確提取秘密信息。
Oh等[2]在傳統(tǒng)回聲隱藏算法的基礎上提出了雙極性回聲隱藏算法(記作K2),使用初始狀態(tài)不同的正負兩種極性的回聲核,雙極性回聲核如圖2 所示。實驗結果表明K2 增強了隱藏效果,在低頻區(qū)域比原始回聲核表現得更加平滑。
圖2 雙極性回聲核示意圖Fig.2 Schematic diagram of echo hiding with positive and negative kernels
雙極性回聲核可表示為:
式中:α1、d1和α2、d2分別表示兩個初始狀態(tài)相反的正負極性回聲的回聲幅度和延遲時長。
Kim 等[3]在傳統(tǒng)回聲隱藏算法的基礎上提出了雙向回聲隱藏算法(記作K3),雙向回聲核如圖3所示。
圖3 雙向回聲核示意圖Fig.3 Schematic diagram of echo hiding with backward and forward kernels
人耳除了存在時域后掩蔽效應之外,還存在前掩蔽效應。K3就是同時使用這兩種掩蔽效應,在分段后的載體音頻前后分別加入延遲時長相同的回聲,使得密信提取的正確率提高,增強了魯棒性。雙向回聲核可表示為:
式中:αδ(n-d)表示后向回聲,αδ(n+d)表示前向回聲。
在已有的基于手工提取特征的隱寫分析方法中,例如文獻[4-7]都提取了音頻的倒譜系數作為特征進行分類,而音頻提取倒譜系數時首先需要提取音頻的幅度譜系數,再進行相應的操作得到倒譜系數,因此可以認為原始音頻與使用回聲隱藏算法隱寫后的音頻之間在幅度譜系數上已經存在差異。基于此,比較并分析了它們兩者在頻域上的差異。使用STFT將音頻從時域轉換到頻域,并求幅值,得到幅度譜系數矩陣,計算過程如下:
首先對一個音頻樣本x(n)(實驗中每個音頻樣本時長1 s,采樣頻率為16 kHz,每個樣本共16 000幀),選擇以長度為1 024 的幀長進行分幀以保持局部的平穩(wěn)。為了提高時域特性,選擇幀移為512 的漢寧窗進行加窗,得到分幀后的語音信號xi(n),i表示第i幀。然后對每幀語音信號xi(n)進行傅里葉變換的點數N為512的STFT,得到各幀的頻譜系數Xi(k),即:
再分別對第i幀第j個頻率點求其幅值:
最后得到513×33的幅度譜系數矩陣。
隨機選取一個樣本,并對其進行3 種回聲隱藏算法的隱寫。對每個樣本求取頻域系數矩陣,然后求取各頻率點幅值,最后對得到的幅度譜系數矩陣的每個頻率點的所有幀求取平均值,發(fā)現原始音頻與每種回聲核隱寫后的音頻之間存在著細微的差異,如圖4 所示。圖中橫坐標為幅度譜系數矩陣的513 個頻率點,縱坐標為在每個頻率點上的原始音頻與隱寫后音頻的平均幅度差值。可以看到,雖原始音頻與隱寫后音頻的差異在各個頻率點上都有分布,但差異并不明顯。
傳統(tǒng)隱寫分析方法在構造分類器時需要良好的特征提取,與之不同的是深度學習的方法可以從淺層特性中獲取高層抽象的特征,從而替代手工提取。文獻[9]中選擇直接將音頻的原始采樣點作為網絡的輸入,文獻[8]和文獻[11]中根據音頻操作和MP3 的特性選擇將MDCT 系數和QMDCT 系數作為淺層特征輸入到網絡。而在2.1 節(jié)的分析中發(fā)現,原始音頻與進行回聲隱藏隱寫后的音頻在幅度譜系數的每個頻域點的平均值上有所差異,但是差異表現并不突出。因此,本文根據這一回聲隱藏算法的特性,選擇以幅度譜系數矩陣作為淺層特征輸入到卷積神經網絡,并進行深度特征的提取和分類。
圖4 原始音頻與三種回聲核的頻率點均值差值Fig.4 Average difference of audio frequency points between original audio and three kernels
經過實驗與對網絡框架的微調,最后設計并確定了針對回聲隱藏算法的隱寫分析CNN框架如圖5所示。選擇將整個幅度譜系數矩陣(513×33)作為輸入數據,網絡框架中首先包含了4 個卷積模塊,每個模塊的結構為:卷積層—Relu 激活函數—卷積層—批標準化層—Relu激活函數—平均池化層。然后將經過卷積模塊得到的深度特征數據輸入到三層全連接層中,最后以Softmax輸出概率。
圖5 本文提出的CNN框架Fig.5 Proposed CNN framework
2.2.1 卷積層
卷積層是使用卷積核對輸入的數據矩陣進行卷積操作,卷積層具有局部感知和權值共享的特點:局部感知減少了網絡參數的個數,權值共享是指卷積核在卷積過程中權重不會改變。卷積操作的數學表達式為:
2.2.2 池化層
池化層作為一種下采樣的方法通常用于減少特征維數,以保留輸入數據的主要屬性并減少訓練參數。它分為兩種:最大池化和平均池化,其中最大池化適用于保留紋理信息,而平均池化適用于保留平滑信息。在大部分的卷積神經網絡框架中使用了最大池化層,但在實驗結果中發(fā)現針對回聲隱藏算法的檢測,使用平均池化的效果更好。因此本文將平均池化層的內核大小設置為3×3,步長為2。
2.2.3 批標準化層
當網絡框架的層數過深時會導致網絡收斂速度變慢,并且在反向傳播時會出現梯度消失的現象。批標準化[14]的引入一定程度上解決了這兩個問題,對數據進行批標準化后輸出的結果的均值為0、方差為1。除此以外,在網絡框架中加入批標準化后,允許我們設定較高的學習率,減少正則化以及Dropout 的使用。因此,在網絡框架的每個卷積模塊以及全連接層中都加入了一層批標準化層,以防止過擬合。
2.2.4 激活函數
激活函數的引入使得網絡中增加了非線性因素,因此網絡可以逼近非線性函數。本文的網絡框架使用了ReLU[15]激活函數,數學表達為:
ReLU 是一個線性的、非飽和形式的激活函數,能夠節(jié)省計算時間,加快網絡的收斂,在一定程度上可以緩解梯度消失的情況。它會使得輸出小于0的神經元最后的輸出結果為0,這樣的設定使網絡擁有了稀疏性,同時減少參數的相互依存關系,緩解了過擬合問題。
2.2.5 全連接層
在本文的網絡框架中,4 個卷積模塊用于提取特征,而3層全連接層則是實現分類,將所有局部特征重新進行組裝。3層全連接層中第一層有1 024 個神經元,第二層有512 個神經元,第三層有2 個神經元對應于樣本分類數,最后以Softmax輸出分類結果,Softmax的數學表達式為:
其中:z 為原始向量,σ(z)為壓縮后的向量。它將原始向量壓縮到另外一個向量中,并使其中每個元素的范圍都在(0,1)內。
在訓練階段,提取訓練樣本的幅度譜系數矩陣作為CNN模型的輸入數據,并訓練CNN 模型;在測試階段,提取測試樣本的幅度譜系數矩陣輸入到訓練完成的CNN 模型進分類;將CNN 模型的分類結果與已知的正確標簽進行對比,最后得到準確率。隱寫分析方法流程如圖6所示。
圖6 基于CNN的回聲隱藏隱寫分析方法流程Fig.6 Flowchart of echo hiding steganalysis method based on CNN
在TIMIT 語音庫[16]上進行了實驗。首先從TIMIT 語音庫獲取語音段(采樣頻率為16 kHz,脈沖編碼調制(Pulse Code Modulation,PCM)編碼精度為16 位),并將每段語音分割為1 s 長的一段,這樣一共得到15 000 個樣本。對于傳統(tǒng)回聲隱藏(K1)、雙極性回聲隱藏(K2)和雙向回聲隱藏(K3),為了進行對比實驗,參考文獻[7]對嵌入密信時的分段長度、回聲核的延遲時長和回聲幅度進行設置,并用隨機生成的密信嵌入到15 000 個音頻樣本,3 種回聲隱藏的回聲核參數設置如表1所示。
按不同回聲核及不同回聲幅度一共得到了9 個隱寫音頻數據集,并在每個隱寫數據集中加入未隱寫的15 000 個音頻樣本,最后得到的每個數據集中就有30 000個音頻樣本。
本文網絡使用Adam 優(yōu)化器,學習率初始化為0.000 1,以二元交叉熵作為損失函數,批處理大小設置為128。在網絡的訓練過程中,以分類準確率作為評價指標,如果網絡迭代2次準確率也沒有提升時,學習率減少一半。使用早停策略監(jiān)測訓練損失率,如果網絡迭代5 次損失率也沒有優(yōu)化時,停止網絡,保存訓練過程中最優(yōu)模型。
表1 回聲核參數設置Tab.1 Parameter setting of echo kernels
分別使用每個數據集進行實驗,其中24 000 個音頻樣本作為訓練樣本,6 000 個音頻樣本用作驗證與測試樣本,最后得到在測試樣本上的準確率,同時也選擇了文獻[7]和文獻[9]的方法與本文方法進行對比,結果準確率如表2所示。
其中文獻[7]中使用的是基于手工提取特征的隱寫分析方法,文獻[9]方法是目前最先進的wav 音頻隱寫分析檢測框架。從結果中可以看到,針對以上3 種回聲隱藏算法,除了在回聲幅度為0.3 的K3 回聲核的條件下本文方法的結果略差于文獻[7]方法,其余結果普遍優(yōu)于其他兩種方法,并且本文方法的準確率即使在回聲幅度較低的情況下也能達到90%以上。其中回聲幅度為0.1 的K3 回聲核檢測效果最差,低于95%,該條件下的訓練準確率如圖7 所示。其中:橫坐標為Epochs,表示對所有訓練樣本訓練的次數;縱坐標為準確率。從圖7 所示訓練過程可以看到,從第6 個Epoch 開始,在測試集上準確率并沒有明顯的提升,而訓練集中的準確率仍在上升,這說明網絡的訓練已經開始出現了過擬合的情況。我們認為,可能的原因是網絡的輸入數據在原始音頻和隱寫后的音頻差異上的變化還不夠明顯,網絡的訓練到達了瓶頸。
為了得到更優(yōu)化網絡框架以及結果,在實驗中對網絡結構進行了大量的嘗試與調整,例如對網絡深度、激活函數等進行了實驗,實驗結果準確率如表3所示。
表2 三種算法的準確率對比Tab.2 Accuracy comparison of three methods
圖7 回聲幅度0.1的K3核訓練準確率Fig.7 Training accuracy of K3 kernel with echo amplitude of 0.1
表3 不同網絡結構的準確率對比Tab.3 Accuracy comparison of different network structures
3.3.1 增加網絡深度
多層網絡是深度學習的一大特征,但是過度增加網絡深度時可能會出現梯度消失。嘗試增加一個卷積數量為1 024的卷積模塊,在回聲幅度0.1 的K3 核的訓練準確率如圖8 所示??梢钥闯?,在嘗試增加一個卷積數量為1 024的卷積模塊后,不僅準確率有所下降,并且網絡變得不穩(wěn)定,因此4 層卷積模塊已經滿足深度要求。
圖8 增加網絡深度時回聲幅度0.1的K3核訓練準確率Fig.8 Training accuracy of K3 kernel with 0.1 echo amplitude when increasing network depth
3.3.2 修改激活函數
結構中使用的ReLU 激活函數是目前普遍使用的激活函數,而在ReLU 出現之前,Tanh 在網絡結構中使用較多,因此,也對Tanh 進行了考察。從結果可以看到,Tanh 的結果與ReLU相比較差。
3.3.3 移除權重初始化
使用均值為零、標準偏差為0.01 的高斯分布初始化所有權重,這是一種較為常見的初始化方式,權重的初始化對于網絡的訓練很重要,不好的初始化參數會導致梯度傳播問題,降低訓練速度。當去除權重初始化時,結果準確率變低,所以這個條件是必須的。
3.3.4 增大卷積核尺寸
當把卷積核大小增加到7×7 時,網絡的訓練時間增加,不僅如此,從結果可以看到準確率降低。這是因為增大卷積核的尺寸意味著更大的感受野,但也同時增加了更多的參數。
考慮到在實際應用中,隱寫分析者往往不知道隱寫者使用的是回聲隱藏算法的情況下,也不知道回聲核的種類以及相應的回聲幅度,對實驗策略進行了調整。固定一種回聲核的一種回聲幅度的數據集作為訓練集用于訓練網絡,將訓練好的網絡用于檢測其他回聲核或者相同回聲核不同回聲幅度的數據集,即進行交叉實驗,結果如表4 所示(其中不涉及交叉實驗的用“—”表示)。
表4 交叉實驗的準確率對比Tab.4 Accuracy comparison of cross-over testing
從交叉結果中可以得到以下結論:第一,在同種回聲核、不同回聲幅度的情況下,使用回聲幅度較小的數據集進行訓練,網絡會提取更深層次的特征,對回聲幅度較大的數據集進行測試也有較高的準確率;第二,在不同回聲核的情況下,使用K3數據集進行訓練,得到的網絡模型對其他兩種回聲核的檢測也具有一定泛化能力。所以在實際應用中,可以使用K3回聲核,在回聲幅度盡量小的數據集進行訓練,然后對音頻進行隱寫分析。
本文提出了一種基于卷積神經網絡的回聲隱藏隱寫分析方法,提取音頻的幅度譜系數矩陣作為淺層特征,并在這個基礎上設計了一個針對回聲隱藏算法的隱寫分析卷積神經網絡框架,進行深度特征提取與分類。本文方法在對3 種回聲隱藏算法不同回聲幅度的條件下得到的準確率都在93%以上,這樣的結果與傳統(tǒng)手工提取特征的隱寫分析方法相比有了很大的提升。最后,我們調整了實驗的策略,進行了交叉實驗,結果表明以雙向回聲隱藏算法作為訓練數據得到的網絡模型泛化能力較強。
不足的地方是雙向回聲隱藏算法在回聲幅度較低時的檢測準確率與其他兩種回聲隱藏算法檢測準確率相比不夠高。我們認為比較可行的方法是增加類似文獻[9]和文獻[11]的固定卷積層進行殘差的方法。在未來的工作中,我們會針對雙向回聲隱藏算法進行隱寫分析的研究。