朱瑞金,张 涛,扎西顿珠
(西藏农牧学院电气工程学院,西藏 林芝 860000)
我国养殖技术飞快发展,水产养殖规模在不断扩大,但是水产养殖场依然采用传统的机器或人工投喂方式,无法精准判断鱼类摄食时间及规律,造成过度投喂或投喂不足。过度投喂会影响水质,养殖成本上升;而投喂不足则会影响鱼类的生长。基于鱼类的摄食行为及规律进行研究,设计精准投喂具有十分重要的意义。
设计利用图像处理技术来实现对鱼群摄食行为的特征提取,利用BP神经网络算法对鱼群摄食行为进行分类与识别,从而建立起一套完整的基于图像处理及人工智能算法的鱼群摄食行为研究系统。具体思路为:利用摄像头实时获取养殖水厂的鱼群视频数据,通过对视频数据分帧处理,提取鱼群图像的LBP直方图特征数据,将特征数据送入BP神经网络模型,进行鱼群摄食行为的分类识别。
搭建了鱼群养殖系统,利用其获取实验研究用的视频数据。搭建的具体养殖系统如图1所示,高清摄像机架设在养殖池正上方约1 m处,高清摄像机会实时拍摄记录鱼群的运动情况视频。利用实时拍摄到的视频数据进行分帧处理,所得到的图像数据如图2所示。将视频分帧获取到的图像帧保存为bmp格式的图像数据集,该数据集将作为BP神经网络训练及验证的数据集。基于以上获取到的系列图像数据进行鱼群摄食行为研究。
图1 鱼群活动分析实验材料获取示意图Fig.1 Schematic diagram of acquisition of experimental materials for fish activity analysis
图2 鱼群活动状态图像Fig.2 Image of shoal activity
利用鱼群摄食行为的图像进行LBP特征提取,将提取好的特征数据送入设计好的BP神经网络模型中,利用神经网络模型对特征数据进行训练学习,利用训练好的模型对鱼群摄食行为图像数据进行分类识别。具体算法流程如图3所示。
图3 本文整体算法流程图Fig.3 Overall algorithm flow chart
LBP(Local Binary Pattern)特征由Ojala等人提出,是一种图像局部纹理特征的描述算子,该特征具有良好的抗旋转、光照分布不均匀及灰度不变性等特征。LBP算子的算法本质是将当前需要计算的中心点像素灰度值作为阈值,与邻域像素点的灰度值进行比较,形成一串为0或1的二进制码表来作为特征描述。
作为一种描述图像局部特征的LBP算子可以较好地描述每个像素与邻域像素之间的关系,LBP具体的数学表达式为式(1):
(1)
式(1)中的(xc,yc)为中心像素点的位置,该中心像素点的灰度值为in,该中心点的8邻域像素点的灰度值为ic。式中的ψ函数为二值比较函数,具体的数学表达式为式(2)所示:
(2)
原始的LBP特征算子是将图像分为多个3×3的子窗口,分别计算每个子区域的特征,具体的计算过程为分别比较当前3×3子窗口的中心像素点灰度值与其相邻的8个邻域像素点的灰度值,若中心点的灰度值小于该邻域点的灰度值则该节点比较结果为1,否则比较结果为0,按照以上流程绕着中心点顺时针比较8次以后就会计算出8个0或1的二进制码表,将该二进制码表转为十进制后就形成了该子窗口的LBP局部特征值。原始的LBP特征计算示意图如图4所示。
图4 基本LBP 算法示意图Fig.4 Schematic diagram of basic LBP algorithm
由于以上原始LBP特征算子只能计算一个固定区域的局部子图,而无法满足不同频率纹理的需要,因此Ojala等人对原始LBP特征算子进行优化,提出了圆形LBP,圆形LBP对计算区域没有限制,可以随意进行扩展,同时抛弃了方形子窗口,利用圆形区域进行计算。圆形LBP算子可以在半径R范围内计算任意多个像素点。图5所示为三个圆形LBP算子示意图。
图5 邻域的圆形LBPFig.5 Circular LBP in neighborhood
圆形LBP算子的本质是利用当前图像区域的联合概率分布作为图像的局部纹理信息分布,具体的像素点的灰度值联合概率分布如式(3)所示:
M=m(pc,p0,…pn-1)
(3)
上式中,pc为该圆形子窗口的中心像素点的灰度值。p0,…pn-1分别为该圆形窗口上的位于圆周位置的各像素点的灰度值。圆形LBP算子的数学表达式如式(4)所示:
(4)
利用圆形LBP算子对鱼群活动图像进行纹理特征计算以后,由于LBP特征只是图像局部纹理特征的一种表达,不能对鱼群活动图像的整体特征进行表达,因此利用LBP特征进行转换,计算它的LBP特征直方图的序列。利用圆形LBP计算出来的纹理特征及相应的LBP特征直方图序列如图6所示。
1986年,BP神经网络由Rumelhart和McCelland等科学家提出,它是一种多层状的前馈神经网络网络模型。BP神经网络模型是信号既有的前向传递,同时也有误差按照反向传播来调节神经网络参数的双向流动模型。BP神经网络模型一般分为输入层、隐藏层、输出层,这3层之间是按照全连接方式进行数据传递,其本质工作流程为通过给模型输入数据及期望的数据,输入数据通过前向传递分别经过输入层、隐藏层及输出层,在前向传递过程中,当前的神经元的输出状态只能传递到下一层相邻的神经元,当经过输出层的数据与期望数据不符合时,输出层的数据与期望数据之间的误差值进行反向传播,从而通过反向的误差传播来调整网络模型的权值及阈值,通过梯度下降策略来不断使该模型的输出数据与期望数据达到趋近。BP神经网络模型图如图7所示。
图7 BP神经网络模型Fig.7 BP neural network model
BP神经网络模型中的每一个节点是一个神经网络元感知器,这些神经网络元感知器对输入数据进行线性组合计算,当线性组合计算出来的值大于设定的阈值时,输出为1,否则为-1。采用的激活函数为sigmod函数,该激活函数的优点是可以将输出值进行压缩,使神经网络模型可以快速收敛,sigmod函数如式(5)所示:
(5)
BP神经网络模型的前向传播及误差反向传播的具体流程步骤如下:(1)将神经网络模型的各项权值及阈值进行随机初始化。(2)根据公式(6)分别计算中间层及输出层的输出值:
bj=f(wijai-θj)
ct=f(vjtbj-rt)
(6)
上式中,bj为中间层的网络神经元的输出,wij代表输入层到中间层的网络神经元之间的连接权值,ct表示输出层的网络神经元的输出,vjt代表中间层到输出层的网络神经元之间的连接权值。
(1)进行步骤(2)的下一次迭代,直至神经网路模型的输出与期望值达到要求为止。
程序实现及仿真的硬件配置为:Intel(R)Core(TM)i7-7700HQ CPU@2.80GHz 2.81 GHz,安装内存RAM为8GB,笔记本操作系统为win10。
设计的BP神经网络模型为3层模型,其中输入层接收LBP直方图序列数据的输入,中间层即为隐藏层为30个神经单元,输出层为2个神经元。神经网络训练的最大迭代次数为500次,隐藏层的激活函数设置为sigmod函数,训练的截止精度为1×10-4,当BP神经网络在训练过程中的误差小于截止误差时训练结束。图8所示为BP神经网络模型在训练过程中的训练性能图,其中横轴代表迭代次数,纵轴代表训练过程中的均方误差。
图8 BP神经网络训练性能图Fig.8 BP neural network training performance diagram
由图8可以看到神经网络模型经过246次迭代后模型误差达到了要求范围内的误差,因此系统可以快速收敛并精确地对鱼群摄食行为进行分类识别。
利用训练好的BP神经网络模型准备了鱼群活动的批量测试数据来进行BP神经网络模型的鱼群摄食行为的分类识别测试,具体的分类识别结果如表1所示。从表1可知,利用BP神经网络模型的鱼群摄食行为的识别准确率为97.23%。
表1 BP神经网络分类识别结果Tab.1 BP neural network classification and recognition results
提出了一种基于LBP特征的BP神经网络算法的鱼类摄食行为识别模型算法。利用对鱼群的摄食活动图像及未摄食活动图像数据,分别进行滤波等预处理及LBP特征提取,将特征纹理数据送入BP神经网络模型进行训练,利用训练好的神经网络模型进行鱼类摄食行为的分类识别。经过实验仿真,由实验结果可得,设计的算法对鱼类摄食行为的识别准确率可达到97.23%。