图像隐写术分析论文笔记: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。

posted @ 2018-10-31 21:48  毛利小九郎  阅读(360)  评论(0编辑  收藏  举报