1. 程式人生 > >影象隱寫術分析論文筆記:Deep learning for steganalysis via convolutional neural networks

影象隱寫術分析論文筆記:Deep learning for steganalysis via convolutional neural networks

好久沒有寫論文筆記了,這裡開始一個新任務,即影象的steganalysis任務的深度網路模型。現在是論文閱讀階段,會陸續分享一些相關論文,以及基礎知識,以及傳統方法的思路,以資借鑑。

這一篇是Media Watermarking, Security, and Forensics 2015上的,應該是我能找到的最早的用dl做steganalysis的文章。

和其他影象任務一樣,傳統的演算法都是兩步法,先提特徵,再分類。而dl方法的好處就是可以用分類結果來作為提特徵的guidance,從而實現自動的特徵提取,抓取更有效的特徵。

 Usually, this task is formulated as a binary classification problem to distinguish between cover and stego objects. 實際上是二分類問題。cover就是載體,stego就是祕密資訊。傳統的方法手工設計特徵提取方式,由於自然影象沒有一個general的準確模型,因此導致這個任務只能用一些heuristic的方法來解決。 The most reliable feature design paradigm starts with computing a noise residual and then models the residual using conditional or joint probability distributions of adjacent elements.  In recent years,
researchers utilize more kinds of noise residuals to obtain rich image representations.

總之,說明了特徵提取在steganalysis中的重要作用。然後classification階段就用SVM或者ensemble的分類器進行分類。

Gaussian-Neuron CNN (GNCNN)是本文提出的模型名稱。基本特徵如下:

先做一個影象預處理:用KV核進行卷積,KV核函式如下所示:

作者還對比了傳統方法和CNN方法的workflow的對應關係:

可以看出,KV kernel就是提取residual的過程,相當於消去低頻展示高頻。傳統的通過co-occurrence和直方圖提取特徵的方法可以被CNN自動提取kernel 的過程代替,而最後的SVM用softmax取代。

傳統方法很多是利用這樣一個思路,即:由於影象的in-camera processing過程造成了影象中的相鄰pixel的噪聲之間具有複雜的依賴關係,因此可以用鄰域預測該點的value,然後與true value相減,得到prediction error,這個error反應的其實就是這個點的畫素值有沒有被人為地改變。本方法認為CNN實際上就起到了把initial noise通過hierarchical的操作獲取到dependency的過程。

另外,這個網路的activation用的是高斯分佈的函式:

原因在於,如前所述,作者希望網路capture的特徵是prediction error,那麼從分類的角度來說,希望prediction error為0的那些資料,也就是所謂的cover signal,無stego加入的那些,在activation之後,能夠和那些有stego 的訊號輸出差異更大。那麼Gaussian function就是一個很好的選擇,因為它只有在0附近取值較大,對應於cover,其他取值較小。

pooling階段,用了avg pool 而不是 max pool,因為作者認為max pool只提取了最重要的feature,因此會丟失資訊,而steganalysis任務訊號比較弱,可能受影響,因此用了avg pool。

整個網路結構如圖:

用了dropout,最後是softmax,min -log y_t

其他細節:前兩層和最後一層conv用的是5×5,其他都是3×3,fc前兩層用的是ReLU。