李西明, 蔡河鑫, 陳志浩, 馬 莎, 杜治國, 呂紅英
1(華南農業大學 數學與信息學院, 廣州 510642)
2(華南農業大學 電子工程學院, 廣州 510642)
隨著科學技術的發展, 數字媒體已經得到廣泛應用, 越來越多的數字產品在網絡中傳播, 但是, 科技給人們帶來便利的同時, 也給數字產品的信息安全和版權保護帶來了日益嚴峻的問題. 為了保護數字信息的安全問題以及版權問題, 研究人員提出了數字水印[1-3].數字水印技術是一種安全可靠的方案, 同時也是信息安全領域研究的一個熱點. 然而在當時, 傳統數字水印算法存在算法透明性和魯棒性之間矛盾的問題, 原因有二: 透明性意味著需要嵌入較弱的水印信號; 而更強的水印信號則可以提高算法的魯棒性. 為了解決這個問題, 溫泉等人[4]提出了零水印的概念, 零水印的思想是利用原始載體圖像的內部特征進行構造水印, 而不需要修改載體圖像的信息, 這保證了原始載體圖像的完整性. 零水印被提出來后, 也成為了研究的熱點之一.郝世博[5]結合了離散小波變換和奇異值分解, 通過比較特征矩陣的每一個系數與特征矩陣均值的大小關系來構造零水印信息, 然而該算法對于旋轉攻擊的魯棒性較差. 張海濤等人[6]提出的基于超混沌的圖像零水印算法解決了零水印魯棒性不高的問題, 但是對于噪聲攻擊的魯棒性較差. 為了解決該問題, 文獻[7]和文獻[8]都提出了相應的解決方案, 文獻[7]結合離散小波變換和奇異值分解來構造特征矩陣; 文獻[8]則結合張量展開、奇異值分解和離散余弦變換來構造圖像的特征矩陣. 以上的工作都是使用傳統的人工方法進行提取特征, 而且提取的是圖像的幾何特征, 然而神經網絡卻可以模擬人類視覺機制, 從而提取到圖像的視覺特征. 此外, 若算法需要改進, 傳統方法可能需要付出更多的努力去探索更優化的方法, 基于神經網絡的方法則只需要對神經網絡的結構參數進行修改并進行重新訓練.然而, 目前對于利用神經網絡進行圖像特征提取的零水印方案并沒有得到廣泛的研究. Fierro-Radilla等人[9]提出利用卷積神經網絡(convolutional neural network,CNN)提取的特征來構造特征矩陣, 雖然該算法可以抵抗多種攻擊和常見的圖像處理, 然而卷積神經網絡本身也存在缺陷: 一是對于傳統CNN來說, 圖像中的權值都是一樣的; 二是圖像中可能存在的干擾會影響卷積神經網絡的分類結果, 這是通過影響卷積神經網絡對特征的提取所致, 這也是卷積神經網絡容易受到對抗樣本攻擊的可能原因. 目前, 提高模型穩健性的方法有3類: 對抗訓練、修改模型和添加模型. 基于對抗訓練[10]的防御方法在訓練過程中加入新的對抗樣本, 使得神經網絡能夠更好地了解對抗樣本的特征, 提高了模型的魯棒性.
人類視覺注意力機制可以幫助人們快速聚焦目標物體的關鍵特征, 而忽略次要特征[11-14], 引入注意力機制理論上也能使神經網絡在圖像關鍵區域投入更多的注意力. 受以上思想的啟發, 本文提出了一種基于注意力機制和卷積自編碼器的零水印算法, 利用卷積自編碼器重構數據的能力來提取圖像特征, 并結合注意力機制實現對關鍵特征的穩健提取, 訓練過程中采用對抗訓練, 增強了模型的魯棒性, 實驗表明, 本文算法在受到多種已知攻擊的情況下仍能提取圖像的穩健特征.
傳統自編碼器的概念最開始是由Rumelhart等人[15]提出的, 隨后, Bourlard等人[16]對自編碼進行了詳細的解釋. 早期, 關于新型自編碼器提出的進展還比較緩慢, 并且該編碼器還只是單層, 到了2010年, Vincent等人[17]又提出了深度去噪自編碼器. 緊接著, 卷積自編碼器[18]、變分自編碼器[19]、循環自編碼器[20]相繼被提出.
自編碼器是一種無監督學習的人工神經網絡, 主要應用于數據降維和特征學習. 它可以給出比原始數據更好的特征描述, 此外, 它具有較強的特征學習能力.自編碼器包括兩部分: 一個是編碼器, 一個是解碼器.編碼器從原始輸入數據提取特征, 而解碼器則從特征信息中重建原始輸入數據, 并且使得構建的數據盡可能的等于原始數據.
典型的3層自編碼器如圖1所示, 它由輸入層、輸出層和一個隱藏層組成. 輸入層用于原始數據的輸入, 輸出層用于輸出特征數據經重構后的數據, 而隱藏層用于特征提取. 輸入層和輸出層的神經元個數相等,隱藏層的神經元個數少于輸入層和輸出層神經元個數.自編碼器通過簡單的學習能夠使得輸出盡可能復制輸入, 但重構后的數據與原始數據存在一定的誤差. 要使得輸出盡可能地等于輸入, 則要求隱藏層提取的原始數據特征要更具代表性.

圖1 典型3層自編碼器
設編碼器函數用encoder表示, 解碼器函數用decoder表示, 編碼器函數提取到的數據特征為feature,即數據特征, 輸入數據用x表示, 輸出數據用 x′表示. 編碼器的作用是將輸入數據x變換成數據特征feature,而解碼器是將feature轉換成輸出數據 x′, 整個編碼器訓練過程就是不斷調整參數, 使得 x′盡可能接近x. 自編碼器可以用圖2表示.

圖2 自編碼器工作圖
注意力機制是模擬人類視覺而提出的, 它不僅能告訴網絡模型需要注意什么特征, 而且也能增強特定區域的表征, 過濾不重要的信息. 本算法使用的注意力模塊基于卷積注意力模塊(convolutional block attention module, CBAM), 是由Woo等人[21]首次提出的, 該方案不同于通道注意力機制[22], 能顯著提升模型的特征表達能力.
如圖3所示, 給定一個中間特征圖F作為輸入,CBAM依次經過通道注意力模塊和空間注意力模塊.首先是通道注意力模塊. 將中間特征圖F對每個通道進行最大池化和平均池化得到最大池化特征 Fmax和平均池化特征Favg. 然后將二者分別輸入到含有一個隱藏層的多層感知機(multilayer perceptron, MLP)中, 使用元素求和法來合并輸入的特征向量, 最后經過激活函數得到通道注意力 Mc(F). 通道注意力的計算過程如式(1):池化特征圖:∈R1×H×w和∈R1×H×w. 然后這兩個特征圖通過一個標準的卷積層和Sigmoid函數后生成二維空間注意力圖 Ms(F′). 空間注意力計算過程可以用式(2)進行表示:


圖3 卷積注意力模塊
最后, 進入空間注意力模塊. 先沿著通道軸應用平均池化和最大池化操作, 生成平均池化特征圖和最大

其中, AvgPool(F)表示平均池化, MaxPool(F)表示最大池化, σ表示Sigmoid函數, f7×7表示卷積核尺寸為7×7的卷積運算. 整個卷積注意力模塊的過程可以用式(3)來進行概括:

其中, ?表示按元素計算的乘法.
本節介紹了基于注意力機制和自編碼器的網絡架構的詳細設計, 同時說明了訓練過程.
本實驗的目標是設計一個能夠提取穩健圖像特征的網絡架構, 這也意味著我們設計的網絡需要具備抵抗噪聲干擾等的能力, 該網絡架構是基于自編碼器提出的. 自編碼器具有重構數據的能力, 能夠很好地提取數據的特征, 此外, 相對于傳統的圖像特征提取的方法,卷積神經網絡可以更好地提取圖像的特征, 所以本實驗用卷積層和池化層代替了傳統自編碼器的全連接層,而由于加了干擾的圖片會影響卷積神經網絡的特征提取, 再加上卷積神經網絡也無法聚焦在圖片的關鍵特征上, 所以我們需要讓卷積自編碼器能夠將注意力更多地關注于關鍵特征, 從而保證算法的穩健性. 綜上,我們在卷積自編碼的基礎上加入注意力機制, 這可以讓網絡過多關注圖片的關鍵特征, 而忽視圖片上存在的類似于噪聲的無關特征.
網絡的架構圖如圖4所示, 分為注意力機制編碼器和注意力機制解碼器兩部分.

圖4 網絡架構圖
注意力機制編碼器: 將大小為 (N,C,H,W)的數據input輸入到編碼器中, 首先是經過一個包含卷積核大小為( 3,3)的卷積層Conv1, 然后將其輸入到注意力模塊中, 輸出具有顯著特征的掩膜圖像 T1, 大小為(N,32,112,112), 緊接著再經過3層卷積層和最大池化層, 分別是Conv2、Maxpool1、Conv2、Maxpool1、Conv2、Maxpool1, 變為 ( N,16,56,56)的 張量T 2. 最后將T 2輸入到解碼器.
注意力機制解碼器: T 2先經過采用了最近鄰算法的上采樣Upsample1和卷積核大小為 ( 3,3)的卷積層Conv5得到大小為( N,16,112,112)的 張量T 3, 再經過采用了最近鄰算法的上采樣Upsample1和卷積核大小為(3,3) 的 卷積層Conv6得到大小為( N,16,224,224)的張量 T4 , 最后經過一層卷積核大小為( 3,3)的卷積層Conv7實現數據的復原, 得到output. 網絡的結構參數如表1.

表1 網絡參數表
為了提高網絡模型的魯棒性, 我們在訓練網絡的時候借鑒了對抗訓練的思想, 目標是使用隨機初始化的權重來訓練一個具有魯棒性的網絡模型, 實驗中添加的擾動權重值在0-1之間隨機選取, 添加擾動后的圖像樣本如圖5所示, 訓練集由原始數據集和添加擾動的數據集組成, 并且隨著迭代次數的增加, 擾動數據集數量也會隨之增加.

圖5 擾動樣本生成圖
網絡訓練的最終目的是使輸入無限接近于輸出,詳細的訓練過程如下: 訓練集合D上的數據x, y為模型的輸出, 網絡的損失函數為 L (x,y,θ), 本實驗使用的是交叉熵函數, θ為網絡模型的參數, Δ x為擾動. 訓練的前將擾動 Δ x 加入到部分數據 x中, 并隨著迭代次數的增加, 添加擾動的數據比例會上升, 其目標是使得L(x+Δx,y,θ)越來越大, 也就是說該擾動盡可能讓神經網絡重構后的數據與訓練集數據差別越來越大. 在利用原始樣本都構造出 x +Δx擾動樣本后, 訓練的目標就是利用梯度下降法來找到能夠最小化網絡輸出和輸入差E(x,y)~D[L(x,y,θ)]的合適參數.在不斷的迭代過程中,持續地優化參數, 整個優化過程中是最大化和最小化交替執行, 詳細公式如式(4). 此過程類似于生成式對抗網絡(generative adversarial networks, GAN), 然而也不同于GAN, 因為該訓練過程的輸入擾動過程為最大化過程, 調整參數為最小化過程.
該模型是在ImageNet數據集上進行訓練, 迭代次數為100次, 訓練步長為0.001, 該網絡訓練的損失值變化如圖6所示, 可見隨著訓練迭代次數的增加, 損失值逐漸下降, 并在迭代次數大于20后, 趨于穩定, 可以見得本方案的模型訓練速度很快, 很快就達到擬合狀態.

圖6 損失值變化圖

其中, Ω為擾動空間.
本節給出基于注意力機制和自編碼器的零水印算法的詳細說明.
自編碼器的零水印算法分為零水印的構造和水印的提取兩部分. 水印構造包括3個步驟, 分別是提取圖像特征、獲取二值矩陣、構造零水印. 水印提取包括3個步驟, 分別是獲取待測圖像特征、獲取二值矩陣、恢復水印.
3.1.1 水印構造
該部分從宿主照片提取特征構造零水印, 如圖7(a)所示, 包括以下步驟, 如算法1所示.

算法1. 零水印構造算法1)提取圖像特征(3,224,224)(16,56,56)(56,56) (224,224)A當基于注意力機制的卷積自編碼器訓練好后, 該網絡便能夠提取圖像的穩定特征, 我們利用編碼器的輸出來構造圖像的特征, 將一張需要提取特征的大小為 的圖像輸入到編碼器, 從網絡架構圖中可以看出, 編碼器的輸出大小為 , 也就是16張大小為的特征圖, 再將這16張特征圖融合成大小為 的特征圖 , 如圖8(a), 融合策略如下:(56,56)(224,224) F1,F2,F3,F4 A首先將特征圖標號為1, 2, …, 6, 然后每4張大小為 特征圖拼接成大小為 的特征子圖 , 最后利用式(5)進行加權融合得到最終的特征圖.

A=4∑i=1 1 4Fi (5)2)獲取二值矩陣A Ax,y A T C利用矩陣 的每個元素的值 與矩陣 的均值 的大小關系構造二值矩陣 , 如式(6)所示.Cx,y=■■■■■■■■■1, ifA′x,y>T 0, otherwise (6)3)構造零水印C W M M M將矩陣 與水印圖像矩陣 進行異或運算得到零水印 , 緊接著, 零水印 在知識產權信息數據庫進行注冊, 使版權信息得到保存. 一般認為, 一旦零水印得到注冊, 也意味著該載體圖像處于水印技術的保護中, 當發現有侵權現象時, 可取出零水印進行版權認證, 從而實現對自己的圖像所有權的保護. 的計算方法如式(7)所示:M=XOR(C,W)(7)
3.1.2 水印提取
水印的提取即為水印構造的逆過程, 如圖7(b)所示, 包括以下步驟, 如算法2所示.

圖7 零水印算法圖

算法2. 零水印提取算法1)獲得待測圖像特征A′將待檢測載體圖片作為自編碼器輸入, 然后取編碼器輸出構造載體圖片特征矩陣 .2)獲取二值矩陣A′ A′x,y A′ T′C′利用矩陣 的每個元素的值 與矩陣 的均值 的大小關系構造二值矩陣 , 如式(8)所示.Cx,y=■■■■■■■■■1, if A′x,y>T 0, otherwise (8)3)恢復水印C′ M W′將矩陣 與零水印 進行異或運算得到所恢復的水印圖像 , 如式(9)所示.W′=XOR(C′,M)(9)
本文實驗是在PyCharm實驗平臺上進行仿真, 并利用PyTorch框架進行編碼實現. 在本文的零水印算法中,引入歸一化相關系數NC, 它是衡量提取到的水印圖像與原始水印圖像之間相近程度的一個度量工具, NC 值的范圍在0到1之間, 該值越接近于1, 表明提取出來的水印越接近原始水印, NC值的計算方法如式(10)所示.

其中, W 是指原始水印圖, W′指的是從待測載體圖像上提取出來的水印圖像.
本實驗使用的水印圖片和載體圖片如圖8(b)與圖8(c)所示.

圖8 特征圖、水印圖和載體圖
3.2.1 魯棒性分析
本文分別對載體圖像進行不同種類和不同強度的攻擊, 攻擊樣例圖如圖9, 并計算不同的NC值, 實驗結果如表2所示.

圖9 攻擊樣例圖
從表2可知, 載體圖片不管是受到幾何攻擊還是非幾何攻擊, 提取出的水印的NC值均超過0.9, 由此可見, 該算法能很好地抵抗多種攻擊, 具有良好的魯棒性.

表2 待測圖像攻擊后提取出的水印的NC值
3.2.2 實驗對比分析
(1)神經網絡實驗對比分析
為了驗證本模型的有效性, 我們做了3組對比實驗. 分別是: 對抗訓練與正常訓練情況下的對比, 訓練集減半情況下的對比, 添加注意力機制與不添加注意力機制的對比, 實驗所得的NC值分別對應于表3中的NC1、NC2和NC3.

表3 NC 值對比
從實驗結果來看, 不加注意力機制和不進行對抗訓練的模型在抵抗攻擊的時候并沒本論文提出的模型表現得好, 這也體現出本實驗提出的模型的有效性, 此外, 減半數據集后的實驗結果相較于完整數據集的結果, NC值相差在0.01以內, 這也說明了本方案小數據集上, 也可以得到良好的零水印.
(2)零水印算法實驗結果對比
本文結合注意力機制和編碼器的輸出來構造特征矩陣, 文獻[23]在小波變換域提取的低頻區域進行分塊的奇異值分解, 再利用分塊的最大奇異值來構造特征矩陣, 文獻[24]則是選擇在時域上使用非均勻NURP來進行特征矩陣的構造, 不同方法的實驗結果如表4所示.
從表4可知, 在抵抗噪聲攻擊方面, 文獻[23,24]的性能明顯比本文實驗差, 尤其是在抵抗高斯噪聲方面, 本實驗比文獻[24]的NC值高了近0.1. 此外, 從整體來看, 本文實驗的NC值普遍都要比文獻[23,24]的高, 而且均在0.9以上, 通過對比實驗可以得出本文算法的魯棒性更強.

表4 不同文獻NC 值對比
結合卷積注意力模塊和卷積編碼器, 提出了一種用于構造零水印的深度注意自編碼器模型, 該算法利用卷積自編碼器重構數據的能力對圖像特征進行提取,并結合注意力機制, 對關鍵位置給予更多的關注, 忽視了類似于噪聲等攻擊的無關特征. 在訓練的過程中, 結合對抗訓練, 進一步提高了模型的魯棒性, 從而保證了圖像特征的穩定提取. 實驗結果表明, 在載體圖片受到幾何攻擊和非幾何攻擊下所提取出的水印NC值均在0.9以上, 該算法具有很好的魯棒性. 是否添加注意力機制、是否減半數據集和是否進行對抗訓練等3個不同的對比實驗可以證明提出的自編碼器模型的有效性,從與傳統方法的實驗結果對比, 可以發現, 相較于傳統方法, 該算法魯棒性更好.