陈丽娟, 林 菡, 邢婷婷, 陆宝林
福州工商学院, 福建 福州 350700
在动物界中,昆虫种类最多、数量最大,对农业生产、海关和森林病虫害防治部门等会造成重大影响[1]。以前的昆虫分类、鉴定工作主要是依靠昆虫分类专家来完成的,但是每个专家的工作都比较局限,范围仅限一个目、一个科甚至一个属的昆虫,这样就出现了对昆虫识别需求的增多与昆虫鉴定专家相对较少的局面[2]。将计算机视觉技术应用到农业生产以及昆虫识别中改善了这一状况,但是昆虫识别率较低,如何有效地减少昆虫识别中一些繁重的工作,改进识别系统,优化识别算法模型,提高昆虫识别效率,是当前有待解决的问题[1]。
传统的昆虫识别方法目前已经被昆虫图像识别技术代替。常用的昆虫识别技术有生物光子检测法、图像识别法、取样检测法、声测法和近红外及高光谱法等。近几年,人工智能应用到农业生产中,已经有很多研究人员将深度学习技术应用于昆虫的图像识别[3],例如周爱明 等[4]提出基于 CaffeNet 的蝴蝶自动识别算法,该算法效果远好于支持向量机;袁哲明 等[5]提出基于深度学习的轻量化田间昆虫识别及分类模型,可以应用到田间昆虫识别,解决复杂的环境带来的影响;刘姝珺 等[3]提出基于卷积神经网络和Tensorflow的昆虫图像识别研究,结果表明采用不同的优化器可以提高识别准确率。因此本文提出了基于深度脉冲神经网络的昆虫识别系统,分析了深度卷积神经网络(deep convolutional neural networks,DCNN)和脉冲神经网络(spiking neural networks,SNN)的局限性,结合了两者的优势,利用PyCharm和Pytorch搭建了深度脉冲神经网络模型,应用到昆虫识别系统中,提高昆虫识别率,为病虫害识别问题提供新的思路。
DCNN是一种由多层神经元组成的深度学习模型,解决很多计算机视觉上的问题。该模型主要是由池化、卷积、激活函数等部分组成,其核心是卷积层,可以很好地处理图像倾斜、扭曲、平移等操作。该模型是将多个神经元聚集起来并含有分层结构,其对应的公式如下。
(1)
卷积层的计算方法就是根据公式:conv=σ(imgMat。W+b),式中:b为偏置值,W为卷积核,σ为激活函数, 。为卷积操作,imgMat为灰度图像矩阵[6]。本文采用的深度卷积神经网络模型主要是由输入层、卷积层、池化层、全连接层和Softmax 分类器构成。
SNN相对于传统的人工神经网络,主要特点是使用尖脉冲作为信息传输的基本要素,不需要环境的先验知识,更加接近现实的性能,其神经元模型主要采用累积放电模型(I&F模型),神经元i的膜电位ui(t)对应的积分点火方程如下。
(2)
神经元的放电速率可以根据以下公式计算,式中:t为时间变量,T为时间周期,F为放电速率。
(3)
神经元的膜电压与产生的相应脉冲序列随时间变化的关系如图1所示。图像的像素表示神经元的输入,根据公式将像素转换为相应的电流,然后再由电流转换为相应的脉冲序列。
图1 膜电压与脉冲序列关系图
结合2种神经网络的特点搭建的深度脉冲神经网络可以降低深度模型的功耗,提高模型的泛化能力,具有编码为脉冲序列的深度学习能力。根据2种神经网络神经元模型特点,对DSNN 神经元进行转换,转换的主要原因是IAF(integrate and fire)神经元不含任何泄漏项和不应期[7]。转换方法是将对等的积分点火IAF神经元由带有ReLu激活函数的传统神经网络的神经元代替,ReLu神经元的输出公式如下所示[6]。
(4)
式中:wi表示神经元i的权重,xi表示输入。
IAF神经元是一种特殊的神经元,该神经元只追踪膜潜能值的变化,当膜潜能值超过设定的阈值时则产生脉冲,随后膜潜能值会被重置为0。IAF神经元关于时间t的函数如下所示。
(5)
式中:t为放电时间,ui表示神经元i的膜电位,wi表示突触前与突触后神经元i之间的连接值,xi表示输入。
因为该部分并没有引入神经元动力学中的任何泄漏项,所以神经元的输出脉冲就依赖于阈值的设置。为了实现近无损的转换,DSNN需要找到一种合适的阈值设定方法,因为ReLu函数的性质是当突触前与突触后神经元之间的连接为负值时,积分点火神经元会把所有输出活动的神经元的膜潜能重置为 0[7]。
转换过程中还要考虑传统神经网络到SNN的转换,因为该过程中有一个很关键的操作就是对偏置项的处理。在传统的神经网络中偏置项可以调整神经元的输出,帮助神经元更快地学习,更好地拟合数据,优化参数空间,帮助神经网络处理不平衡的数据集等。而 SNN在实际应用中并不存在偏置项,因此在转换过程中,为了确保能够实现对等神经元的转换,对于偏置项最简单的处理方式就是直接把传统神经网络中的偏置项b设为0[7]。
构建昆虫物种图像数据集,采集昆虫图像,标注样本的类别和目标位置,用于训练算法模型;进行昆虫图像预处理,通过图像倾斜校正、灰度增强、图像去噪等方法对昆虫图像进行预处理;对处理后的图像利用SNN进行边缘特征提取,将昆虫对象与背景分割出来,定位昆虫对象;采用适合昆虫图像的特征提取方法,获取其形态特征数据,如颜色、纹理、游程长度、灰度共生矩阵和形状不变矩等,这些综合特征提取有利于昆虫图像的识别;结合深度神经网络和脉冲神经网络的特点,搭建深度脉冲神经网络模型,进行昆虫图像的训练和测试。利用PyCharm和PyTorch搭建的昆虫识别系统的框架,可以为算法提供接口,支持其他模型的部署和测试。系统流程如图2所示。
图2 昆虫识别系统流程
本文主要利用脉冲神经网络模型对昆虫图像进行边缘特征提取,定位昆虫对象。该模型结构如图3所示。利用感受野和脉冲神经元进行边缘特征提取,模型主要有3层。
图3 脉冲神经网络模型
第1层输入层。1个光感接受器对应图像的1个像素。
第2层中间层。有4种类型的神经元(N1、N2、N3、N4)对应4种不同方向的感受野,在突触连接中的X代表兴奋性突触,Δ代表抑制性突触,其中突触权重矩阵相当于在感受野RFrept中检测边缘的一个滤波器。神经元N1有突触权重矩阵Wup,能够响应上边缘;神经元N2有突触权重矩阵Wdown,能够响应下边缘;神经元N3有突触权重矩阵Wleft,能够响应左边缘;神经元N4有突触权重矩阵Wright,能够响应右边缘。
第3层输出层。每一个神经元(x′,y′)累积来自中间层的4个神经元矩阵的输出,然后响应位于感受野RFrept任意方向的边缘。通过绘制输出层的脉冲频率图,就可以得到对应输入图像的边缘图[8]。
利用PyCharm和PyTorch框架搭建了深度脉冲神经网络模型,首先进行模型训练,实例化模型、损失函数和优化器等,在控制台的输出结果中,可以看到随着迭代次数的增加,损失值在不断地降低,精确性也在提高。模型训练如图4所示。
图4 模型训练图
加载训练好的模型进行测试识别,对1 000张昆虫图像进行识别,在不同的迭代次数下本系统的识别率不同,确定最佳的迭代次数,有958张可以成功识别,42张错误识别,可以得出本系统的最佳识别率为95.8%,误识率为4.2%。分析误识率的原因可能是图像背景太复杂、数据集不够全面、特征提取分析不够全面精准、模型训练不够等。由于深度脉冲神经网络模型只是训练已知的物种,不能对未知的类别进行识别和检测,因此遇到数据集中不存在的昆虫物种,也没办法识别出来。
本文主要介绍了基于深度脉冲神经网络的昆虫识别系统,分别对昆虫对象定位和深度脉冲神经网络模型训练及测试进行了详细的分析。该识别技术具有广泛的应用前景,可以应用于植物病虫害预测预报及其防治,帮助农业工作者进行昆虫识别,从而实现病虫害的及时发现,也能够帮助昆虫学家更快、更好地判别昆虫种类,从而实现植物病虫害的及时防治。由于客观条件和时间的限制,本文提出的系统目前所能识别的昆虫种类仍然非常有限,有很多方面需要进一步提高。