基于深度学习的水下声纳图像分类方法研究

本文是哈尔滨工程大学2018年的一篇硕士论文,作者是焦佳。

摘要
结合水下声纳图像的特点,研究深度学习相关理论与研究方法后,为水下声纳图像的分类构建深度信念网络(Deep Belief Network, DBN)和卷积神经网络(Convolutional Neural Network, CNN),并进行相应的分类实验。实验结果表明,CNN 的分类效果优于 DBN,但 CNN 中滤波器权值矩阵初始化的随机性会影响最终分类精度。针对 CNN 中滤波器权值矩阵初始化的随机性问题,结合水下声纳图像的特点和 DBN 内部网络结构,提出一种基于深度学习的自适应权值卷积神经网络(Adaptive Weights, AW-CNN)来完成对水下声纳图像的分类。利用 DBN 迅速得到良好特征提取矩阵的优势来自适应调整 CNN 滤波器权值矩阵的分布,即将 DBN 训练学习得到的权值矩阵来代替 CNN 中随机生成的滤波器权值矩阵。AW-CNN 可以解决 CNN中滤波器权值初始化的随机问题,避免陷入局部最优,提高分类正确率。在完成 AW-CNN 分类后,为了进一步提高水下声纳图像分类正确率,对原始声纳图像数据集进行预处理(AW-CNN with preprocessed dataset),最终完成对水下声纳图像的分类。

研究背景及意义
水下环境复杂,噪声较多,海底环境难以探测,主要是通过声纳设备拍摄到的水下声纳图像来对海底环境进行探索。水下声纳图像主要由三部分组成,包括目标区域,阴影区域和背景区域。目标区域是由声纳设备的声波碰触到目标物反射回来形成的图像,阴影区域是声纳设备的声波碰触到目标物的背面而形成的图像,背景区域即是海底的大环境。由于水下声纳图像对比度低、边缘模糊、弱纹理,图像质量不理想,这将严重影响水下声纳图像的分类,使其成为一个难题。
目前水下声纳图像的分类方法主要是通过不同方法提取水下声纳图像的纹理特征,通过特征的匹配来完成分类。但由于使用不同的提取特征方法和不同的水下声纳图像用于分类,使水下声纳图像分类方法不能广泛应用。而深度学习可以自动的对大量数据进行学习训练,得到同一类图像的共同特征,从而训练出一个广泛用于水下声纳图像分类的优秀模型。非监督贪心逐层训练算法和多层自动编码器作为最早的深度学习模型是由Hiton提出的,CNN 作为第一个真正意义上含有多层网络结构的模型被 Lecun 等人提出并利用局部感知和权值共享来减少参数个数的深度学习模型。
深度学习是一种深层的人工神经网络,即含有多个隐含层的人工神经网络。深度学习模型的多层网络结构旨在模拟人脑的复杂结构来对数据进行分析学习,通过训练学习将属于一类图像的特征进行归纳总结,训练好模型后再通过测试集测试模型的好坏。深度学习模型包括多种,DBN 作为无监督学习模型中的代表,不仅可以提取数据特征和对数据进行分类,其本身还是一种生成模型。它通过训练神经元之间的权重来最大概率的生成训练数据。CNN 则是一种有监督训练模型,它通过将训练集进行标签,训练大量数据后,用有标签的测试集进行验证模型的好坏。用深度学习模型方法对水下声纳图像分类,可以自动的提取大量数据中的特征,形成统一的用于分类的模型,解决了传统提取特征方法用于特定水下声纳图像分类存在的应用不广泛问题。

深度信念网络
DBN 是一种以最大概率来生成权重的生成模型,这取决于 DBN 自身的网络结构。
DBN 是由多个 RBM 构成,具有多层的网络结构。顶层两层神经元之间的连接是无向的,其它层与层之间神经元的连接是有向的,而在同一层的神经元之间是互不连接的。DBN 的训练过程是逐层进行训练的,每个 DBN 是由一个可见层和多个隐含层组成,其中第一个 RBM 的可见层即为 DBN 的可见层,由可见层训练的数据传给隐含层。当这个 RBM 单独训练后,连接到下一个 RBM,此时这个 RBM 的隐含层即是下一个 RBM的可见层,它和下一个隐含层构成了第二个 RBM,以此类推,直到最后一个 RBM。在最后一个 RBM 后用 BP 算法对整个 DBN 进行微调,完成数据的生成和分类。
基于深度学习的水下声纳图像分类方法研究_第1张图片
基于深度学习的水下声纳图像分类方法研究_第2张图片
图 2.2 中 DBN 是一个层层训练的网络结构, x表示的是可见层,h1 ,h2 和h3 表示的是隐含层。数据由可见层 x输入,可见层 x将数据传入隐含层1h ,此时可见层 x 和隐含层h1 构成了第一个 RBM。第一个 RBM 训练完之后,h1 作为下一个 RBM 的可见层和隐含层h2 构成下一个 RBM,直到最后一个隐含层(图中h3 )训练完成后,再由 BP 算法从上到下微调整个 DBN。

基于深度学习的水下声纳图像分类方法研究_第3张图片
DBN 通过层层的 RBM 结构调整特征提取矩阵,分别单独的无监督训练每一层 RBM使其特征映射到不同的特征空间,尽可能多的保留特征信息,在模型的最后连接上分类器来完成分类。由于每一层的 RBM 都是单独训练的,这容易使每个 RBM 达到局部最优,不能使整个 DBN 网络达到全局最优,所以需要微调每一层 RBM 的参数,最后用BP 算法接收 RBM 的输出特征向量作为它的输入特征向量,有监督地训练实体关系分类器。微调的过程等同于将整个深层次的网络进行权值矩阵初始化。

数据集的构建
将原始声纳图像经过H、hv、S、V 通道变换,R、G、B 单通道变换,将图像旋转 90°和 180°。对水下声纳图像数据集的变换中,H、S、V 分别表示的是一幅图像中的色调、饱和度和亮度。对图像 H 通道的变换即是忽略饱和度和亮度,着重突出其色调,同样 S 和 V通道变换也是如此。R、G、B 单通道变换即是对图像进行单通道表示。而且海底环境复杂,为了模拟海底噪声多的情况,对图像增加了高斯噪声,并利用均值滤波对图像进行增强,达到去除噪声的目的。构建后的原始声纳图像数据集,经过扩充之后,充分考虑了海底各种可能产生的情况,使其更接近海底真实情况。

基于DBN的水下声纳图像分类
吉布斯采样对RBM进行似然估计
对比散度算法使DBN经过一次吉布斯采样就可以快速收敛
基于深度学习的水下声纳图像分类方法研究_第4张图片
自底向上为输入像素为 100*100 的水下声纳图像,将输入的水下声纳图像输入到第一个 RBM 中。第一个 RBM 中的隐含层即作为第二个RBM 的可见层,以此类推,用省略号来表示。自底向上的权重称为生成权重,自顶向下的为检测权重。DBN 通过层层的 RBM 结构调整特征提取矩阵,分别单独的无监督训练每一层 RBM 使其特征映射到不同的特征空间,尽可能多的保留特征信息,在模型的最后分配上分类器来完成分类。由于每一层的 RBM 都是单独训练的,这容易使每个 RBM达到局部最优,不能使整个 DBN 网络达到全局最优,所以需要用 BP 算法微调每一层RBM 的参数,最后连接上 softmax 分类器,接收 RBM 的输出特征向量作为它的输入特征向量,有监督地训练实体关系分类器。微调的过程等同于将整个深层次的网络进行权值矩阵初始化。
构建的用于水下声纳图像分类的 DBN 模型参数如下:一层可见层,四层隐含层,即四个 RBM,最顶层的分类器为 softmax 分类器,具体参数为(10000, 6000, 1500, 3000, 6)。对比散度算法取 k=1。

基于深度学习的水下声纳图像分类方法研究_第5张图片
具体分类步骤如下:
Step1:将水下声纳图像数据集输入 DBN 中,大小为 100*100;
Step2:设置相关参数,包括可见层和每层隐含层上神经元的个数、学习率的大小和训练最大周期,将可见层和每层隐含层的权重和偏置进行初始化;
Step3:用吉布斯采样对每层的神经元进行采样,通过可见层重构出隐含层,再由重构的隐含层对下一个隐含层进行重构;
Step4:下一个隐含层神经元由 sigmoid 激活函数进行激活;
Step5:使用 sigmoid 激活函数激活此层隐含层的上一层可见层中的所有神经元;
Step6:执行 Step3-Step5,直到达到 DBN 中最大层数;
Step7:采用 CD-1 算法,更新权重和偏置;
Step8:执行 Step3-Step7 一次;
Step9:通过对比数据集的标签来计算 DBN 的损失值,并使用 BP 算法进行微调参数;
Step10:输出分类结果。
基于深度学习的水下声纳图像分类方法研究_第6张图片
从图 3.7 中可以看出,基于 DBN 的水下声纳图像分类正确率较低且波动较大。平均分类正确率在 56%左右。这是由于 DBN 是采用无监督的方式来提取特征的,而水下声纳图像的特点是噪声多,分辨率低,目标轮廓不清晰等,使得 DBN 提取到的有用特征信息较少,对水下声纳图像的分类结果有所影响。

基于CNN的水下声纳图像分类
对不同的优化算法、激活函数等进行比较,后续实验选择的优化算法是Adam算法,激活函数用的是ReLU激活函数,minibatch为64.
基于深度学习的水下声纳图像分类方法研究_第7张图片
基于 CNN 的水下声纳图像分类步骤如下:
Step1:将水下声纳图像数据集输入 CNN,图像大小为 100100;
Step2:用 Matlab 程序对水下声纳图像数据集进行批处理,按照 3:1 的比例分为训练集和测试集。设置相关参数:m 为 CNN 训练的迭代次数,mini_batch 为每次训练的最小批次;
Step3:输入的图像进入卷积层,64 个滤波器(大小为 5
5)与输入图像做卷积操作,移动步长为 1,经过卷积操作得到输入图像提取特征后的特征图;
Step4:使用 init()函数随机初始化权值矩阵,输入图像每个像素点都随机初始化一个权值,随着每次迭代训练,权值矩阵也逐渐被训练好;
Step5:使用 gradients 函数梯度下降求最小损失值;
Step6:Adam 优化函数用来动态调整每个像素点的学习率,由每个像素点的不同状态来为每个像素点设置不同的学习率;
Step7:save()函数用来对参数进行保存;
Step8:每一层池化层的池化步长设置为 2,对输入特征图进行最大池化,图像大小变为原来一半;
Step9:将卷积层数与 CNN 最大卷积层数 4 进行比较,如果相等,则执行 Step10,否则,执行 Step3-Step8;
Step10:所有卷积层和池化层完成操作后,将所有特征图都输入到全连接层,形成一维特征向量;
Step11:softmax 函数作为分类器对数据集进行分类。

基于深度学习的水下声纳图像分类方法研究_第8张图片
分类实验结果平均为 78.5%左右且波动不大。分类正确率远好于 DBN,这是由于 CNN 内部网络结构,在卷积和池化提取特征时,能够避免受到水下声纳图像中噪声的干扰。同时 CNN 又因其参数共享和稀疏矩阵的原因,使得它所需存储的参数量相对 DBN 较少,能够得到较好的分类结果。

自适应权值卷积神经网络

实现过程:
(1)维数转换:利用增维函数(extend_dims)完成 CNN 张量与 DBN 向量之间的维数转换问题,实现两种深度学习模型维数不同的输入。
(2)模型融合
(3)归一化处理

基于深度学习的水下声纳图像分类方法研究_第9张图片
基于深度学习的水下声纳图像分类方法研究_第10张图片
基于 AW-CNN 的水下声纳图像分类步骤如下:
Step1:将水下声纳图像数据集输入 CNN,图像大小为 100100;
Step2:用 Matlab 程序对水下声纳图像数据集进行批处理,按照 3:1 的比例分为训练集和测试集。设置相关参数:m 为 CNN 训练的迭代次数,mini_batch 为每次训练的最小批次;
Step3:输入的图像进入卷积层,64 个滤波器(大小为 5
5)与输入图像做卷积操作,移动步长为 1,经过卷积操作得到输入图像提取特征后的特征图;
Step4:水下声纳图像被随机剪裁为 55 即滤波器大小;
Step5:DBN 模型最顶层的分类器为 softmax 分类器,具体参数为(10000, 6000, 1500, 3000, 6),5
5(滤波器大小)和 3(通道数)是最后两层节点数;
Step6:将裁剪为 5*5 大小的水下声纳图像输入 DBN;
Step7:DBN 最后两层之间的二维参数矩阵 W 在训练后被得到;
Step8:二维参数矩阵 W 通过 extend_dims 函数被增加为三维参数矩阵,前两维是滤波器的大小,后一维是颜色通道数;
Step9:继续用 extend_dims 函数对三维参数矩阵 W 进行增加维数,将四维参数矩阵的第一维设置为 1;
Step10:继续使用 extend_dims 函数对四维参数矩阵 W 的第一维进行增维;
Step11:将 W 与滤波器个数比较,如果相等,执行 Step12,否则,执行 Step10;
Step12:用 reshape 方法将四维参数矩阵 W 的第一维与第四维进行交换;
Step13:对四维参数矩阵 W 进行归一化;
Step14:四维参数矩阵 W 的数据类型被改为浮点型,传入到 CNN 第一个卷积层;
Step15:使用 gradients 函数梯度下降求最小损失值;
Step16:Adam 优化函数用来动态调整每个像素点的学习率,由每个像素点的不同状态来为每个像素点设置不同的学习率;
Step17:save()函数用来对参数进行保存;
Step18:每一层池化层的池化步长设置为 2,对输入特征图进行最大池化,图像大小变为原来一半;
Step19:将卷积层数与 CNN 最大卷积层数 4 进行比较,如果相等,则执行 Step10,否则,执行 Step3-Step8;
Step20:所有卷积层和池化层完成操作后,将所有特征图都输入到全连接层,形成一维特征向量;
Step21:softmax 函数作为分类器对数据集进行分类。

基于深度学习的水下声纳图像分类方法研究_第11张图片
从图 4.4 中可以看出,经过 30 次分类实验,AW-CNN 分类正确率高于 CNN 和 DBN,这是由于 AW-CNN 解决了 CNN 滤波器权值矩阵初始化的随机性,充分利用了滤波器提取的特征,避免陷入局部最优,提高分类正确率。

预处理数据集
在验证 AW-CNN 模型有效性的基础上,为了进一步提高水下声纳图像数据集的分类正确率,采用阶梯初始化水平集轮廓检测灰度共生矩阵的预处理方法来对原始声纳图像数据集进行预处理。用阶梯初始化水平集轮廓检测的方法来对水下声纳图像进行分割,使水下声纳图像目标轮廓和阴影轮廓更加突出。在水下声纳图像进行平滑去噪处理后,用块方式的 k 均值聚类算法确定水下声纳图像的初始分割;判断目标区域和阴影区域的大致位置,自适应初始化零水平集函数;采用自适应窄带水平集来对水下声纳图像进行检测,标注出水下声纳图像的目标区域和阴影区域,使水下声纳图像的目标区域和阴影区域更加的突出。用灰度共生矩阵方法来对水下声纳图像进行特征提取,选择灰度共生矩阵中能量、熵、惯性矩、相关性的均值和标准差作为最终 8 维纹理特征。预处理后的水下声纳图像数据集用来代替原始图像,形成预处理后的数据集。有效的将非深度学习提取特征与自动提取特征结合起来,同时深度学习模型这里对水下声纳图像分类的同时起到了一个二次提取特征的作用,更能抽象提取水下声纳图像深层次的特征,进而提高分类的正确率。

基于深度学习的水下声纳图像分类方法研究_第12张图片
从图 4.13 可以得出,预处理后的数据集分类正确率基本要高于原始声纳数据集。通过以上对比实验,可以得到用于水下声纳图像分类的 AW-CNN 模型分类结果好于原始的 CNN 和 DBN,对原始声纳图像数据集进行阶梯初始化水平集轮廓检测分割图像和灰度共生矩阵提取特征预处理后,进一步提高了 AW-CNN 模型用于水下声纳图像分类的分类正确率。

总结
本文主要做了以下工作:
(1)构建水下声纳图像数据集
(2)做基于DBN的水下声纳图像的分类实验
(3)做基于CNN的水下声纳图像的分类实验
(4)提出基于AW-CNN的水下声纳图像的分类实验

从有效性,收敛性和可视化方面分别对 AW-CNN 进行验证。得到在保证收敛速度的基础上,AW-CNN 的分类正确率更高的实验结果。同时可视化实验直观得到了AW-CNN 可以更好的提取特征的效果。在此基础上,用阶梯初始化水平集和灰度共生矩阵来对数据集进行预处理。实验结果表明,AW-CNN with preprocessed dataset 的分类正确率最高,证明了数据集预处理有利于水下声纳图像分类,也进一步的证明了 AW-CNN的有效性。

你可能感兴趣的:(基于深度学习的水下声纳图像分类方法研究)