探讨BP神经网络的图像Hash算法

时间:2020-08-14 13:09:44 MBA毕业论文 我要投稿

探讨BP神经网络的图像Hash算法

  1 引言
  
  随着计算机和因特网的飞速发展,数字多媒体越来越多地走进人们的生活,它给人们带来了方便,带来了快捷。而与此同时,这也为盗版者能以低廉的成本复制及传播未经授权的数字产品内容提供了机会,使信息的版权,保密等问题变的尤为突出。因此如何对多媒体数据的真实性和完整性进行认证就成为一个亟待解决的问题。
  用传统密码学产生的Hash(哈希)对原始数据的每一个比特都非常敏感,改动一个比特也会因使Hash 发生剧烈变化而使其无法通过认证[1]。所以传统的Hash 函数并不适用于可感知的媒体数据,因此需要一种新的基于图像内容认证的感知Hash 算法。
  近年来图像Hash 引起了广泛的关注,并提出了一系列有效的技术方案,可以粗略的分为四大类[2]:基于图像统计学特性的方法、基于图像关系的方法、基于原始图像特征表述的方法、基于低层图像特征提取的方法。Venkatesan[3]等将图像小波分解的不同子带的统计向量作为特征,他们认为小波分解的DC 子带的均值和细节子带的方差具有基于内容的不变性。于是他们在图像小波域中用互不重叠的矩阵进行伪随机分割,取低频子带各矩阵区域系数的平均值和高频子带矩阵区中系数的方差为特征值,量化后输入Reed-Muller 解码器产生中间Hash,再由线性编码得到最终Hash 值。虽然小波系数统计特性比较鲁棒,却不能很好的反映图像内容,特别是恶意产生的内容,因此抵抗攻击的能力有限。Fridrich[4]等用关键相赖随机模式的DCT 系数的预测来创造数字图像的Hash 摘要。这种Hash 提取方法对于JPEG压缩,噪声叠加,一般的线性锐化和滤波攻击是鲁棒的,但该方法不能抵抗几何攻击,例如平移、旋转和尺度变换。Mihcak[5]等发展了另一种图像Hash 算法,他们用迭代的方法对3级haar 小波分解的DC 子带进行二值化,从而得到图像的特征,其中包括图像的粗略特征,然后用值得到Hash 函数。该方法具有对一般灰度图像操作的不变性。本文提出了一种基于BP 神经网络的Hash 方法,经过BP 网络的训练来产生Hash 值序列。
  
  2 基于BP 神经网络的图像Hash 方法
  
  2.1 BP 神经网络
  BP 神经网络又称为反向传播神经网络,由信息的正向传播和误差的反向传播两个过程组成。输入层各神经元负责接收来自外界的输入信息,并传递给中间层各神经元;中间层是内部信息处理层,负责信息变换,根据信息变化能力的需求,中间层可以设计为单隐层或者多隐层结构;最后一个隐层传递到输出层各神经元的信息,经进一步处理后,完成一次学习的正向传播处理过程,由输出层向外界输出信息处理结果。当实际输出与期望输出不符时,进入误差的反向传播阶段。误差通过输出层,按误差梯度下降的方式修正各层权值,并向隐层、输入层逐层反传。周而复始的信息正向传播和误差反向传播过程,是各层权值不断调整的过程,也是神经网络学习训练的过程,此过程一直进行到网络输出的误差减少到可以接受的程度,或者预先设定的学习次数为止。其模型所示。
  
  2.2 Hash 的产生步骤
  Hash 值的产生过程分为如下几步:
  (1)构建像素函数[6]:假定像素函数为p(i),定义p(i)的公式如下:
  p(i) = i-1-255× floor(i / 255) (1)
  其中1 ≤ i ≤ N , floor()是取实数的整数部分的函数。
  (2)归一化:设灰度图像大小为N×N 的像素矩阵为t ,分别将矩阵p 和t 进行归一化,产生新的矩阵P 和T 。
  (3)创建并训练BP 神经网络:以矩阵T 为输入层,矩阵P 为输出层来组建BP 神经网络。
  由于输入的样本是整幅图像的数据,而输出的样本是一个一维的序列,因此输入和输出的模式相对不同,数据相关性相差较大,这时就需要在输入层和输出层之间加入中间层——隐层,形成数据之间的中间转换,由于处理数据信号的能力是随着层数的增加而增加的,但是过多的'隐层又会造成训练时间的急剧增加, 故在本文的情况下设定2 个隐层来完成BP 神经网络的训练。除此之外,在本文中采用第一个隐层3 个神经元,该层的传递函数采用正切S型传递函数;第二个隐层一个神经元,该层的传递函数采用对数S 型传递函数。整个神经网络的训练函数使用了贝叶斯正则化函数,并设置了目标值0.01 和迭代次数1000 次,其结构所示。