基于改进卷积神经网络的藻类分类与识别方法
2021-09-04叶司琪龙晓尹伟石
叶司琪,龙晓,尹伟石
(长春理工大学 理学院,长春 130022)
国内水域面积占地27万平方公里,占领土面积的3%左右。近年来,由于湖泊、水库与近海缓流地区水体的富营养化导致水中藻类生长迅速,出现“赤潮”[1]、“水华”[2]等自然灾害,对国家的水质影响巨大且造成了巨大的经济损失。因此在藻类泛滥之前对其提前预测、预防成为主要问题。现如今在藻类识别研究中,传统的藻类检测流程一般有置式显微镜法和荧光检测法[3];显微检测是对产生污染环境的水域进行样本采集、沉淀和蒸馏等过程,将样品放在显微镜下人眼观察,人为鉴定是否达到污染的程度;荧光检测法是将样本经荧光处理得到荧光图像,再利用图像调色板阈值分割达到藻类计数[4]的目的;但两者方法都存在局限性,显微检测过程大多依靠人工,会产生效率低、容易产生视觉疲劳且不易保存等问题对研究人员要求较高;对于荧光检测在压片时会出现分层现象,不同层面荧光点不同;因此两种方法识别出来的准确率也随误差因素的影响而变化。
现今深度学习、目标检测计数和图像识别的发展,国内外在对于藻类图像的识别与分类研究方面发展迅速。A.Verikas等人[5]基于相位一致性和随机优化确定识别圆形藻,但该方法只适用于极小圆形浮游植物;Andrea C.Monaldi等人[6]基于数字全息显微镜和图像处理来评估微藻生物量;李伟伟[7]提出通过SIFT算法针对藻类图像提取,PCA降维,用KNN进行识别检索;谢杰镇等人[8]提出基于流式图像的赤潮藻类监测方法,基于灰度不变共生矩阵的纹理特征,采用向量机进行训练识别;张松等人[9]将词包模型方法用于藻类分类识别,利用K-means聚类得到图像的特征词包模型,用于SVM分类器训练,但没有经过特征筛选和编码,会影响聚类效果。
如今深度学习促进了模式识别、机器学习的发展,由卷积神经网络发展而来的目标检测框架[10],以及深度学习的误差反向传播算法[11],基于识别的目标定位计数提供了基础。此研究运用卷积神经网络的学习反馈机制及利用目标检测模型对藻类进行检测识别,由于藻类图像部分密集、叠层、体积较小等特点,影响识别效果。此次研究是在卷积神经网络与目标检测模型的基础上进行改进,对卷积层中的激活函数、学习速率改进,对网络结构参数进行微调,使用最大池化算法,得到准确率较高的藻类分类识别模型,减少人力输出。
1 CNN模型原理
卷积神经网络(CNN)是一种具有高性能的深度学习模型。卷积神经网络相对于全连接网络使用的参数量较少预测精度和回归拟合度均高于传统模型。CNN模型的性能远高于具有与CNN模型相同的网络训练方法的BP神经网络,卷积神经网络可以通过用梯度下降法损失函数最小,对参数逐层进行反向调节,不停的迭代训练提高精度。
1.1 卷积层
卷积层的作用就是提取特征的,通过各个窗口得到特征,并且使用参数量减少。在图像处理中,一个卷积核卷积一次图像得到一次特征,再由若干个卷积核卷积,卷积核提取特征是权值共享的,通过提取输入的不同特征进行压缩提纯,每一次卷积提取出的特征为特征映射,通过一个激活函数,得到输出特征映射,每一层可以使用多个不同的特征映射,卷积公式由公式(1)表示:
其中,Mj表示输入映射的总和;代表第l-1层第j个特征图的输入;f(⋅)为激活函数;l为层数;k为卷积核;⊗代表卷积操作;为偏置;为第l层第j个特征图。特征图公式(2):
计算偏置的梯度值,公式(3)为:
利用 ΔWl=-η∂E/∂Wl更新参数。
1.2 池化层
池化层是对卷积层输出的特征图进一步特征抽样,如果没有池化层直接去放入Softmax分类,其中会出现维度过高,发生过拟合的现象,为了防止过拟合,提高精确度,通常池化使用最大池化和平均池化,池化的最大作用是将卷积过后的特征图的大小压缩进行降维,且具有位移不变性,池化过程可用公式(4)表示:
1.3 全连接层
全连接层本质上也是卷积层,一般位于模型的最后几层,将神经元全连接起来。全连接层最后是经过分类的,由于卷积神经网络输出的特征图是三维张量,做分类的话是要将之前特征图压平,最后再由一个传统的全连接层连接起来,数学表达式为:
其中,上式中神经元的输入是x;神经元的输出是hW,b(x);连接权重是WT;偏置是b。
1.4 Softmax输出层
Softmax输出层是为了分类回归,将全连接层的特征图输入到Softmax输出层后,每一个神经元节点的激励函数输出一个概率,所有的节点的概率之和等于1。将待分类的图片放入Soft⁃max分类器中,输出的最大概率值所对应的标签为最后的分类结果。如公式(6)表示概率归一化:
其中,σi(x)表示第i个节点的激励函数输出的概率;m为类别数;代表参量。
2 改进卷积神经网络的藻类分类
运用改进卷积神经网络,对藻类图像进行识别,通过数字化处理对藻类样本图进行特征提取,再结合卷积神经网络(CNN)模型分析水体中的藻类解决人工识别的主观性与劳动强度大等问题。
为了提高模型的鲁棒性与稳定性,利用改进卷积神经网络与RCNN来实现高效、便捷的藻类分类识别的目的。实现减少人工输出,对藻类实时监测,预防藻类污染,增加水域面积,减少由藻类污染带来的巨大经济损失。
2.1 改进算法描述
该算法根据预设训练与预设网络模型对藻类样本图片进行训练,得到藻类分类训练模型,来确定待分类藻类图片所对应的藻类类别,得到藻类分类模型。通过采用卷积神经网络的方式来进行海藻图像的处理,其中模型由卷积层和池化层交叉组合构成,与最后由全连接层连接。将其输出发送至Softmax层,对其进行调整,看反向传播调整网络权值,判断是否达到训练次数或者小于训练误差,反复调整最小误差得到藻类的分类模型,网络使用激活函数Relu且对卷积得到的图像进行局部归一化,调整网络学习率,对网络结构参数进行微调,提高训练准确度。训练完成后将测试样本输入到分类模型中得到分类结果,提高藻类分辨性与鲁棒性,如图1所示。
图1 藻类分类模型
2.2 构建改进卷积神经网络模型
卷积层使用卷积核进行特征提取和特征映射,将预处理完成的图像输入到第一个卷积层,由64个3x3的卷积核(3通道)且步长均为1,扩充边界得到卷积后的图像与原图尺寸一致;第二层为池化层,采用最大池化,选择幅步为2,3x3的最大池化,进行lru操作对局部模块归一化;第二个卷积层,由16个3x3的卷积核(16通道),得到的卷积图像与原图尺寸一致;第二个最大池化层进行降维,池化步长为2,3x3的最大池化;传入全连接层进行重新拟合,全连接层由128个神经元连接,将上一层池化层的输出重新组合成一行;调用激活函数ReLU,其作用是增加了神经网络各层之间的非线性关系,由于采用sigmoid等函数,计算量大,在反向传播时,很容易就出现梯度消失的情况,而采用Relu激活函数,整个过程的计算量节省很多,Relu函数会使一部分神经元的输出为0,增加网络的稀疏性,并且减少参数的相互依存关系,缓解过拟合问题的发生,再上一层参数为0.8输入dropout层,缓解过拟合问题;最后将前面的卷积池化全连接层打包分装至Softmax层,做线性回归,对其进行调整、计算,得到所述的藻类分类模型。
3 实验与分析
实验所用的藻类来自吉林省长春市南湖公园,实验通过采集藻类样本,利用光学电子显微镜拍照,得到包含藻类样本照片,在同一光源、同一放大倍数下对水体藻类进行观察与拍摄海藻图片,得到1 100张海藻图像,如图2所示。
图2 拍摄海藻图像
3.1 藻类图像的采集与预处理
对原始海藻图片预处理,将它分为几种不同种类的海藻图片集,由于藻的种类较多,大部分藻数量较少,试验选取数量最多的两种藻(桥湾藻和针型藻)作为研究对象,如图3、图4所示。
图3 桥湾藻样本图像
图4 针型藻样本图像
对藻类图片进行筛选,每个海藻图片集对应一种藻类,每个海藻图片集中的每个海藻图片中均包括该类海藻,每一个样本集包含2 000~ 3 000张单种藻类图像;为了防止出现过拟合现象,通过对图像随机旋转、缩放、反转及变化角度对样本集进行扩充到11 130张,选取总样本集的80%作为训练集(8 904张),剩下的作为测试集。
将样本集的图像与利用图像标注软件进行人工标注,如图5所示,用于卷积神经网络对每个样本集图像进行训练与测试。
图5 人工label Img标注藻类示例图
3.2 评价指标
本文以准确率(Accuracy)衡量模型的准确性,准确率公式为:
其中,n为藻类识别正确的数量;N为总样本数。
用损失函数(Loss)确定藻类训练集和测试集的鲁棒性。如果损失函数越小则说明鲁棒性越好。损失函数如下:
其中,N代表样本数;pi是第i个样本预测的概率;yi为第i个样本的标签,正类为1,负类为0。
3.3 训练与测试
实验利用RCNN、目标检测模型与改进卷积神经网络作为特征提取网络,为实现整个网络的端到端训练。设置参数为batch=20,总共迭代3 000次,每隔50步输出一次损失值以及精确度,每隔100次保存一次训练好的模型。
实验将8 904张藻类图像用于训练,由于藻类体积较小,部分藻类密集,藻类压片分层等因素影响识别效果,利用卷积神经网络模型进行训练。
保持卷积核大小为3*3,用Relu为激活函数情况下,经过迭代1 000次,首先通过对学习率的修改,针对不同学习率下的CNN模型学习率与准确率之间的关系图如图7所示。
图6 学习率与准确率的关系图
可知,学习率并不是越小越好,不存在唯一性,应该根据实际情况选择合适的学习率。
同样在迭代1 000次情况下将其中在学习率为0.000 1和0.001 0下的识别所得平均损失结果
的对比,如表1、表2所示。
表1 在学习率为0.000 1的CNN模型下
表2 在学习率为0.001 0的CNN模型下
由表1可知在迭代1 000次过后,学习率为0.000 1的CNN模型下准确率大约在89.9%,学习率为0.001 0的CNN模型下准确率在95.02%。
并对测试集进行识别结果的测试,由表2可知学习率在0.001 0下,藻类图像识别最优。
所以在测试集的识别中选取学习率为0.001 0,迭代3 000次过后,其识别结果如表3所示。
表3 测试集的识别结果(学习率为0.001 0)
由表3可知,loss值越小,效果越好。
4 结论
本文基于传统藻类检测的工作繁琐影响识别精确度的问题,在藻类识别中改进卷积神经网络和目标检测模型对藻类图像的大小形态进行特征提取。实验结果表明,在对于藻类识别的平均准确率达到95.02%,有效避免了过拟合的现象,克服了藻类图像密集、叠层、体积小等因素,减少人力输出,提高工作效率。此外,输入图像和网络的拓扑结构能很好的吻合;特征提取和模式分类同时进行;卷积神经网路权值共享可以减少网络的训练参数,使神经网络结构变得更简单,适应性更强。在训练模型中将分类和识别结合,简化了模型结构。与此同时,研究也存在不足,在训练过程中往往需要对一些参数进行人为的调整,所以适合范围有一定的限制。卷积层提取图像特征时对藻类边缘信息提取有待提高,数据在网络传递过程中存在部分信息损失与消耗,降低识别准确度。