李西明, 蔡河鑫, 陳志浩, 馬 莎, 杜治國, 呂紅英
1(華南農(nóng)業(yè)大學(xué) 數(shù)學(xué)與信息學(xué)院, 廣州 510642)
2(華南農(nóng)業(yè)大學(xué) 電子工程學(xué)院, 廣州 510642)
隨著科學(xué)技術(shù)的發(fā)展, 數(shù)字媒體已經(jīng)得到廣泛應(yīng)用, 越來越多的數(shù)字產(chǎn)品在網(wǎng)絡(luò)中傳播, 但是, 科技給人們帶來便利的同時, 也給數(shù)字產(chǎn)品的信息安全和版權(quán)保護(hù)帶來了日益嚴(yán)峻的問題. 為了保護(hù)數(shù)字信息的安全問題以及版權(quán)問題, 研究人員提出了數(shù)字水印[1-3].數(shù)字水印技術(shù)是一種安全可靠的方案, 同時也是信息安全領(lǐng)域研究的一個熱點(diǎn). 然而在當(dāng)時, 傳統(tǒng)數(shù)字水印算法存在算法透明性和魯棒性之間矛盾的問題, 原因有二: 透明性意味著需要嵌入較弱的水印信號; 而更強(qiáng)的水印信號則可以提高算法的魯棒性. 為了解決這個問題, 溫泉等人[4]提出了零水印的概念, 零水印的思想是利用原始載體圖像的內(nèi)部特征進(jìn)行構(gòu)造水印, 而不需要修改載體圖像的信息, 這保證了原始載體圖像的完整性. 零水印被提出來后, 也成為了研究的熱點(diǎn)之一.郝世博[5]結(jié)合了離散小波變換和奇異值分解, 通過比較特征矩陣的每一個系數(shù)與特征矩陣均值的大小關(guān)系來構(gòu)造零水印信息, 然而該算法對于旋轉(zhuǎn)攻擊的魯棒性較差. 張海濤等人[6]提出的基于超混沌的圖像零水印算法解決了零水印魯棒性不高的問題, 但是對于噪聲攻擊的魯棒性較差. 為了解決該問題, 文獻(xiàn)[7]和文獻(xiàn)[8]都提出了相應(yīng)的解決方案, 文獻(xiàn)[7]結(jié)合離散小波變換和奇異值分解來構(gòu)造特征矩陣; 文獻(xiàn)[8]則結(jié)合張量展開、奇異值分解和離散余弦變換來構(gòu)造圖像的特征矩陣. 以上的工作都是使用傳統(tǒng)的人工方法進(jìn)行提取特征, 而且提取的是圖像的幾何特征, 然而神經(jīng)網(wǎng)絡(luò)卻可以模擬人類視覺機(jī)制, 從而提取到圖像的視覺特征. 此外, 若算法需要改進(jìn), 傳統(tǒng)方法可能需要付出更多的努力去探索更優(yōu)化的方法, 基于神經(jīng)網(wǎng)絡(luò)的方法則只需要對神經(jīng)網(wǎng)絡(luò)的結(jié)構(gòu)參數(shù)進(jìn)行修改并進(jìn)行重新訓(xùn)練.然而, 目前對于利用神經(jīng)網(wǎng)絡(luò)進(jìn)行圖像特征提取的零水印方案并沒有得到廣泛的研究. Fierro-Radilla等人[9]提出利用卷積神經(jīng)網(wǎng)絡(luò)(convolutional neural network,CNN)提取的特征來構(gòu)造特征矩陣, 雖然該算法可以抵抗多種攻擊和常見的圖像處理, 然而卷積神經(jīng)網(wǎng)絡(luò)本身也存在缺陷: 一是對于傳統(tǒng)CNN來說, 圖像中的權(quán)值都是一樣的; 二是圖像中可能存在的干擾會影響卷積神經(jīng)網(wǎng)絡(luò)的分類結(jié)果, 這是通過影響卷積神經(jīng)網(wǎng)絡(luò)對特征的提取所致, 這也是卷積神經(jīng)網(wǎng)絡(luò)容易受到對抗樣本攻擊的可能原因. 目前, 提高模型穩(wěn)健性的方法有3類: 對抗訓(xùn)練、修改模型和添加模型. 基于對抗訓(xùn)練[10]的防御方法在訓(xùn)練過程中加入新的對抗樣本, 使得神經(jīng)網(wǎng)絡(luò)能夠更好地了解對抗樣本的特征, 提高了模型的魯棒性.
人類視覺注意力機(jī)制可以幫助人們快速聚焦目標(biāo)物體的關(guān)鍵特征, 而忽略次要特征[11-14], 引入注意力機(jī)制理論上也能使神經(jīng)網(wǎng)絡(luò)在圖像關(guān)鍵區(qū)域投入更多的注意力. 受以上思想的啟發(fā), 本文提出了一種基于注意力機(jī)制和卷積自編碼器的零水印算法, 利用卷積自編碼器重構(gòu)數(shù)據(jù)的能力來提取圖像特征, 并結(jié)合注意力機(jī)制實(shí)現(xiàn)對關(guān)鍵特征的穩(wěn)健提取, 訓(xùn)練過程中采用對抗訓(xùn)練, 增強(qiáng)了模型的魯棒性, 實(shí)驗(yàn)表明, 本文算法在受到多種已知攻擊的情況下仍能提取圖像的穩(wěn)健特征.
傳統(tǒng)自編碼器的概念最開始是由Rumelhart等人[15]提出的, 隨后, Bourlard等人[16]對自編碼進(jìn)行了詳細(xì)的解釋. 早期, 關(guān)于新型自編碼器提出的進(jìn)展還比較緩慢, 并且該編碼器還只是單層, 到了2010年, Vincent等人[17]又提出了深度去噪自編碼器. 緊接著, 卷積自編碼器[18]、變分自編碼器[19]、循環(huán)自編碼器[20]相繼被提出.
自編碼器是一種無監(jiān)督學(xué)習(xí)的人工神經(jīng)網(wǎng)絡(luò), 主要應(yīng)用于數(shù)據(jù)降維和特征學(xué)習(xí). 它可以給出比原始數(shù)據(jù)更好的特征描述, 此外, 它具有較強(qiáng)的特征學(xué)習(xí)能力.自編碼器包括兩部分: 一個是編碼器, 一個是解碼器.編碼器從原始輸入數(shù)據(jù)提取特征, 而解碼器則從特征信息中重建原始輸入數(shù)據(jù), 并且使得構(gòu)建的數(shù)據(jù)盡可能的等于原始數(shù)據(jù).
典型的3層自編碼器如圖1所示, 它由輸入層、輸出層和一個隱藏層組成. 輸入層用于原始數(shù)據(jù)的輸入, 輸出層用于輸出特征數(shù)據(jù)經(jīng)重構(gòu)后的數(shù)據(jù), 而隱藏層用于特征提取. 輸入層和輸出層的神經(jīng)元個數(shù)相等,隱藏層的神經(jīng)元個數(shù)少于輸入層和輸出層神經(jīng)元個數(shù).自編碼器通過簡單的學(xué)習(xí)能夠使得輸出盡可能復(fù)制輸入, 但重構(gòu)后的數(shù)據(jù)與原始數(shù)據(jù)存在一定的誤差. 要使得輸出盡可能地等于輸入, 則要求隱藏層提取的原始數(shù)據(jù)特征要更具代表性.
圖1 典型3層自編碼器
設(shè)編碼器函數(shù)用encoder表示, 解碼器函數(shù)用decoder表示, 編碼器函數(shù)提取到的數(shù)據(jù)特征為feature,即數(shù)據(jù)特征, 輸入數(shù)據(jù)用x表示, 輸出數(shù)據(jù)用 x′表示. 編碼器的作用是將輸入數(shù)據(jù)x變換成數(shù)據(jù)特征feature,而解碼器是將feature轉(zhuǎn)換成輸出數(shù)據(jù) x′, 整個編碼器訓(xùn)練過程就是不斷調(diào)整參數(shù), 使得 x′盡可能接近x. 自編碼器可以用圖2表示.
圖2 自編碼器工作圖
注意力機(jī)制是模擬人類視覺而提出的, 它不僅能告訴網(wǎng)絡(luò)模型需要注意什么特征, 而且也能增強(qiáng)特定區(qū)域的表征, 過濾不重要的信息. 本算法使用的注意力模塊基于卷積注意力模塊(convolutional block attention module, CBAM), 是由Woo等人[21]首次提出的, 該方案不同于通道注意力機(jī)制[22], 能顯著提升模型的特征表達(dá)能力.
如圖3所示, 給定一個中間特征圖F作為輸入,CBAM依次經(jīng)過通道注意力模塊和空間注意力模塊.首先是通道注意力模塊. 將中間特征圖F對每個通道進(jìn)行最大池化和平均池化得到最大池化特征 Fmax和平均池化特征Favg. 然后將二者分別輸入到含有一個隱藏層的多層感知機(jī)(multilayer perceptron, MLP)中, 使用元素求和法來合并輸入的特征向量, 最后經(jīng)過激活函數(shù)得到通道注意力 Mc(F). 通道注意力的計(jì)算過程如式(1):池化特征圖:∈R1×H×w和∈R1×H×w. 然后這兩個特征圖通過一個標(biāo)準(zhǔn)的卷積層和Sigmoid函數(shù)后生成二維空間注意力圖 Ms(F′). 空間注意力計(jì)算過程可以用式(2)進(jìn)行表示:
圖3 卷積注意力模塊
最后, 進(jìn)入空間注意力模塊. 先沿著通道軸應(yīng)用平均池化和最大池化操作, 生成平均池化特征圖和最大
其中, AvgPool(F)表示平均池化, MaxPool(F)表示最大池化, σ表示Sigmoid函數(shù), f7×7表示卷積核尺寸為7×7的卷積運(yùn)算. 整個卷積注意力模塊的過程可以用式(3)來進(jìn)行概括:
其中, ?表示按元素計(jì)算的乘法.
本節(jié)介紹了基于注意力機(jī)制和自編碼器的網(wǎng)絡(luò)架構(gòu)的詳細(xì)設(shè)計(jì), 同時說明了訓(xùn)練過程.
本實(shí)驗(yàn)的目標(biāo)是設(shè)計(jì)一個能夠提取穩(wěn)健圖像特征的網(wǎng)絡(luò)架構(gòu), 這也意味著我們設(shè)計(jì)的網(wǎng)絡(luò)需要具備抵抗噪聲干擾等的能力, 該網(wǎng)絡(luò)架構(gòu)是基于自編碼器提出的. 自編碼器具有重構(gòu)數(shù)據(jù)的能力, 能夠很好地提取數(shù)據(jù)的特征, 此外, 相對于傳統(tǒng)的圖像特征提取的方法,卷積神經(jīng)網(wǎng)絡(luò)可以更好地提取圖像的特征, 所以本實(shí)驗(yàn)用卷積層和池化層代替了傳統(tǒng)自編碼器的全連接層,而由于加了干擾的圖片會影響卷積神經(jīng)網(wǎng)絡(luò)的特征提取, 再加上卷積神經(jīng)網(wǎng)絡(luò)也無法聚焦在圖片的關(guān)鍵特征上, 所以我們需要讓卷積自編碼器能夠?qū)⒆⒁饬Ω嗟仃P(guān)注于關(guān)鍵特征, 從而保證算法的穩(wěn)健性. 綜上,我們在卷積自編碼的基礎(chǔ)上加入注意力機(jī)制, 這可以讓網(wǎng)絡(luò)過多關(guān)注圖片的關(guān)鍵特征, 而忽視圖片上存在的類似于噪聲的無關(guān)特征.
網(wǎng)絡(luò)的架構(gòu)圖如圖4所示, 分為注意力機(jī)制編碼器和注意力機(jī)制解碼器兩部分.
圖4 網(wǎng)絡(luò)架構(gòu)圖
注意力機(jī)制編碼器: 將大小為 (N,C,H,W)的數(shù)據(jù)input輸入到編碼器中, 首先是經(jīng)過一個包含卷積核大小為( 3,3)的卷積層Conv1, 然后將其輸入到注意力模塊中, 輸出具有顯著特征的掩膜圖像 T1, 大小為(N,32,112,112), 緊接著再經(jīng)過3層卷積層和最大池化層, 分別是Conv2、Maxpool1、Conv2、Maxpool1、Conv2、Maxpool1, 變?yōu)?( N,16,56,56)的 張量T 2. 最后將T 2輸入到解碼器.
注意力機(jī)制解碼器: T 2先經(jīng)過采用了最近鄰算法的上采樣Upsample1和卷積核大小為 ( 3,3)的卷積層Conv5得到大小為( N,16,112,112)的 張量T 3, 再經(jīng)過采用了最近鄰算法的上采樣Upsample1和卷積核大小為(3,3) 的 卷積層Conv6得到大小為( N,16,224,224)的張量 T4 , 最后經(jīng)過一層卷積核大小為( 3,3)的卷積層Conv7實(shí)現(xiàn)數(shù)據(jù)的復(fù)原, 得到output. 網(wǎng)絡(luò)的結(jié)構(gòu)參數(shù)如表1.
表1 網(wǎng)絡(luò)參數(shù)表
為了提高網(wǎng)絡(luò)模型的魯棒性, 我們在訓(xùn)練網(wǎng)絡(luò)的時候借鑒了對抗訓(xùn)練的思想, 目標(biāo)是使用隨機(jī)初始化的權(quán)重來訓(xùn)練一個具有魯棒性的網(wǎng)絡(luò)模型, 實(shí)驗(yàn)中添加的擾動權(quán)重值在0-1之間隨機(jī)選取, 添加擾動后的圖像樣本如圖5所示, 訓(xùn)練集由原始數(shù)據(jù)集和添加擾動的數(shù)據(jù)集組成, 并且隨著迭代次數(shù)的增加, 擾動數(shù)據(jù)集數(shù)量也會隨之增加.
圖5 擾動樣本生成圖
網(wǎng)絡(luò)訓(xùn)練的最終目的是使輸入無限接近于輸出,詳細(xì)的訓(xùn)練過程如下: 訓(xùn)練集合D上的數(shù)據(jù)x, y為模型的輸出, 網(wǎng)絡(luò)的損失函數(shù)為 L (x,y,θ), 本實(shí)驗(yàn)使用的是交叉熵函數(shù), θ為網(wǎng)絡(luò)模型的參數(shù), Δ x為擾動. 訓(xùn)練的前將擾動 Δ x 加入到部分?jǐn)?shù)據(jù) x中, 并隨著迭代次數(shù)的增加, 添加擾動的數(shù)據(jù)比例會上升, 其目標(biāo)是使得L(x+Δx,y,θ)越來越大, 也就是說該擾動盡可能讓神經(jīng)網(wǎng)絡(luò)重構(gòu)后的數(shù)據(jù)與訓(xùn)練集數(shù)據(jù)差別越來越大. 在利用原始樣本都構(gòu)造出 x +Δx擾動樣本后, 訓(xùn)練的目標(biāo)就是利用梯度下降法來找到能夠最小化網(wǎng)絡(luò)輸出和輸入差E(x,y)~D[L(x,y,θ)]的合適參數(shù).在不斷的迭代過程中,持續(xù)地優(yōu)化參數(shù), 整個優(yōu)化過程中是最大化和最小化交替執(zhí)行, 詳細(xì)公式如式(4). 此過程類似于生成式對抗網(wǎng)絡(luò)(generative adversarial networks, GAN), 然而也不同于GAN, 因?yàn)樵撚?xùn)練過程的輸入擾動過程為最大化過程, 調(diào)整參數(shù)為最小化過程.
該模型是在ImageNet數(shù)據(jù)集上進(jìn)行訓(xùn)練, 迭代次數(shù)為100次, 訓(xùn)練步長為0.001, 該網(wǎng)絡(luò)訓(xùn)練的損失值變化如圖6所示, 可見隨著訓(xùn)練迭代次數(shù)的增加, 損失值逐漸下降, 并在迭代次數(shù)大于20后, 趨于穩(wěn)定, 可以見得本方案的模型訓(xùn)練速度很快, 很快就達(dá)到擬合狀態(tài).
圖6 損失值變化圖
其中, Ω為擾動空間.
本節(jié)給出基于注意力機(jī)制和自編碼器的零水印算法的詳細(xì)說明.
自編碼器的零水印算法分為零水印的構(gòu)造和水印的提取兩部分. 水印構(gòu)造包括3個步驟, 分別是提取圖像特征、獲取二值矩陣、構(gòu)造零水印. 水印提取包括3個步驟, 分別是獲取待測圖像特征、獲取二值矩陣、恢復(fù)水印.
3.1.1 水印構(gòu)造
該部分從宿主照片提取特征構(gòu)造零水印, 如圖7(a)所示, 包括以下步驟, 如算法1所示.
算法1. 零水印構(gòu)造算法1)提取圖像特征(3,224,224)(16,56,56)(56,56) (224,224)A當(dāng)基于注意力機(jī)制的卷積自編碼器訓(xùn)練好后, 該網(wǎng)絡(luò)便能夠提取圖像的穩(wěn)定特征, 我們利用編碼器的輸出來構(gòu)造圖像的特征, 將一張需要提取特征的大小為 的圖像輸入到編碼器, 從網(wǎng)絡(luò)架構(gòu)圖中可以看出, 編碼器的輸出大小為 , 也就是16張大小為的特征圖, 再將這16張?zhí)卣鲌D融合成大小為 的特征圖 , 如圖8(a), 融合策略如下:(56,56)(224,224) F1,F2,F3,F4 A首先將特征圖標(biāo)號為1, 2, …, 6, 然后每4張大小為 特征圖拼接成大小為 的特征子圖 , 最后利用式(5)進(jìn)行加權(quán)融合得到最終的特征圖.
A=4∑i=1 1 4Fi (5)2)獲取二值矩陣A Ax,y A T C利用矩陣 的每個元素的值 與矩陣 的均值 的大小關(guān)系構(gòu)造二值矩陣 , 如式(6)所示.Cx,y=■■■■■■■■■1, ifA′x,y>T 0, otherwise (6)3)構(gòu)造零水印C W M M M將矩陣 與水印圖像矩陣 進(jìn)行異或運(yùn)算得到零水印 , 緊接著, 零水印 在知識產(chǎn)權(quán)信息數(shù)據(jù)庫進(jìn)行注冊, 使版權(quán)信息得到保存. 一般認(rèn)為, 一旦零水印得到注冊, 也意味著該載體圖像處于水印技術(shù)的保護(hù)中, 當(dāng)發(fā)現(xiàn)有侵權(quán)現(xiàn)象時, 可取出零水印進(jìn)行版權(quán)認(rèn)證, 從而實(shí)現(xiàn)對自己的圖像所有權(quán)的保護(hù). 的計(jì)算方法如式(7)所示:M=XOR(C,W)(7)
3.1.2 水印提取
水印的提取即為水印構(gòu)造的逆過程, 如圖7(b)所示, 包括以下步驟, 如算法2所示.
圖7 零水印算法圖
算法2. 零水印提取算法1)獲得待測圖像特征A′將待檢測載體圖片作為自編碼器輸入, 然后取編碼器輸出構(gòu)造載體圖片特征矩陣 .2)獲取二值矩陣A′ A′x,y A′ T′C′利用矩陣 的每個元素的值 與矩陣 的均值 的大小關(guān)系構(gòu)造二值矩陣 , 如式(8)所示.Cx,y=■■■■■■■■■1, if A′x,y>T 0, otherwise (8)3)恢復(fù)水印C′ M W′將矩陣 與零水印 進(jìn)行異或運(yùn)算得到所恢復(fù)的水印圖像 , 如式(9)所示.W′=XOR(C′,M)(9)
本文實(shí)驗(yàn)是在PyCharm實(shí)驗(yàn)平臺上進(jìn)行仿真, 并利用PyTorch框架進(jìn)行編碼實(shí)現(xiàn). 在本文的零水印算法中,引入歸一化相關(guān)系數(shù)NC, 它是衡量提取到的水印圖像與原始水印圖像之間相近程度的一個度量工具, NC 值的范圍在0到1之間, 該值越接近于1, 表明提取出來的水印越接近原始水印, NC值的計(jì)算方法如式(10)所示.
其中, W 是指原始水印圖, W′指的是從待測載體圖像上提取出來的水印圖像.
本實(shí)驗(yàn)使用的水印圖片和載體圖片如圖8(b)與圖8(c)所示.
圖8 特征圖、水印圖和載體圖
3.2.1 魯棒性分析
本文分別對載體圖像進(jìn)行不同種類和不同強(qiáng)度的攻擊, 攻擊樣例圖如圖9, 并計(jì)算不同的NC值, 實(shí)驗(yàn)結(jié)果如表2所示.
圖9 攻擊樣例圖
從表2可知, 載體圖片不管是受到幾何攻擊還是非幾何攻擊, 提取出的水印的NC值均超過0.9, 由此可見, 該算法能很好地抵抗多種攻擊, 具有良好的魯棒性.
表2 待測圖像攻擊后提取出的水印的NC值
3.2.2 實(shí)驗(yàn)對比分析
(1)神經(jīng)網(wǎng)絡(luò)實(shí)驗(yàn)對比分析
為了驗(yàn)證本模型的有效性, 我們做了3組對比實(shí)驗(yàn). 分別是: 對抗訓(xùn)練與正常訓(xùn)練情況下的對比, 訓(xùn)練集減半情況下的對比, 添加注意力機(jī)制與不添加注意力機(jī)制的對比, 實(shí)驗(yàn)所得的NC值分別對應(yīng)于表3中的NC1、NC2和NC3.
表3 NC 值對比
從實(shí)驗(yàn)結(jié)果來看, 不加注意力機(jī)制和不進(jìn)行對抗訓(xùn)練的模型在抵抗攻擊的時候并沒本論文提出的模型表現(xiàn)得好, 這也體現(xiàn)出本實(shí)驗(yàn)提出的模型的有效性, 此外, 減半數(shù)據(jù)集后的實(shí)驗(yàn)結(jié)果相較于完整數(shù)據(jù)集的結(jié)果, NC值相差在0.01以內(nèi), 這也說明了本方案小數(shù)據(jù)集上, 也可以得到良好的零水印.
(2)零水印算法實(shí)驗(yàn)結(jié)果對比
本文結(jié)合注意力機(jī)制和編碼器的輸出來構(gòu)造特征矩陣, 文獻(xiàn)[23]在小波變換域提取的低頻區(qū)域進(jìn)行分塊的奇異值分解, 再利用分塊的最大奇異值來構(gòu)造特征矩陣, 文獻(xiàn)[24]則是選擇在時域上使用非均勻NURP來進(jìn)行特征矩陣的構(gòu)造, 不同方法的實(shí)驗(yàn)結(jié)果如表4所示.
從表4可知, 在抵抗噪聲攻擊方面, 文獻(xiàn)[23,24]的性能明顯比本文實(shí)驗(yàn)差, 尤其是在抵抗高斯噪聲方面, 本實(shí)驗(yàn)比文獻(xiàn)[24]的NC值高了近0.1. 此外, 從整體來看, 本文實(shí)驗(yàn)的NC值普遍都要比文獻(xiàn)[23,24]的高, 而且均在0.9以上, 通過對比實(shí)驗(yàn)可以得出本文算法的魯棒性更強(qiáng).
表4 不同文獻(xiàn)NC 值對比
結(jié)合卷積注意力模塊和卷積編碼器, 提出了一種用于構(gòu)造零水印的深度注意自編碼器模型, 該算法利用卷積自編碼器重構(gòu)數(shù)據(jù)的能力對圖像特征進(jìn)行提取,并結(jié)合注意力機(jī)制, 對關(guān)鍵位置給予更多的關(guān)注, 忽視了類似于噪聲等攻擊的無關(guān)特征. 在訓(xùn)練的過程中, 結(jié)合對抗訓(xùn)練, 進(jìn)一步提高了模型的魯棒性, 從而保證了圖像特征的穩(wěn)定提取. 實(shí)驗(yàn)結(jié)果表明, 在載體圖片受到幾何攻擊和非幾何攻擊下所提取出的水印NC值均在0.9以上, 該算法具有很好的魯棒性. 是否添加注意力機(jī)制、是否減半數(shù)據(jù)集和是否進(jìn)行對抗訓(xùn)練等3個不同的對比實(shí)驗(yàn)可以證明提出的自編碼器模型的有效性,從與傳統(tǒng)方法的實(shí)驗(yàn)結(jié)果對比, 可以發(fā)現(xiàn), 相較于傳統(tǒng)方法, 該算法魯棒性更好.