黄 平,郑金存,庞 毅
(1.广西大学 计算机与电子信息学院,广西南宁 530004;2.玉林师范学院物理与电信工程学院智能信息与通信技术研究中心,广西玉林 537000)
传统利用机器视觉研究鱼类摄食状态的方法主要通过鱼类的运动特征、图像纹理特征等方式对摄食状态进行量化[1-7]。此类方法易受光照、水质条件的限制,图像特征提取过程繁琐、识别效率低。神经网络模型通过自主学习实现了对图像特征的自动提取和识别,提高了识别的效率[8],但其识别效果仍受到图像预处理质量的影响。为此,采用了结构复杂的网络模型[9-10]来提高模型识别精度,解决导致模型训练、部署困难的问题。因此该文利用深度相机及基于距离特征的算法克服环境因素的影响,提高图像预处理的质量,简化了识别模型的结构,解决了模型训练困难的问题。
采用微软公司Azure Kinect DK 深度相机为前期图像处理设备。相机基于光子时间飞跃(Time of Light,TOF)技术,通过测量调制光信号在相机和物体之间的飞行时间来测量距离信息[12],其距离计算公式如式(1):
式中,D是深度相机到被测物的距离,c为光在空气中传播速度,Δφ为发射光信号与接收信号的相位差,f为光的频率。
将深度相机放置于养育池正上方中心并向下俯拍,调节深度相机与养育池的水面距离为50 cm,使得深度相机的视野范围覆盖整个养育池水面。游泳型鱼类(如鲤鱼)摄食区域通常为距离水面深度15 cm的区域[13]。故设置深度相机水下有效测量范围为0~15 cm,仅聚集在鱼群摄食区域,排除了其他未进入摄食区域鱼的干扰。鲤鱼摄食阶段的明显特征是上浮水面抢食,使得鱼群在水体表面深度图的像素分布增大,水体表面的目标分布可直观反映鱼类的摄食情况,通过编写的C#程序对获取的深度图像的像素点g(x,y)的取值作如下处理:
式中,z(x,y)表示深度图中坐标为(x,y)点的深度值,深度相机使用16 位二进制形式表示深度图中像素点的值,深度相机理论测量距离为0~65 535 mm,z(x,y)的取值范围为深度相机有效测量范围即500~3 860 mm。根据式(2),当像素点的深度值在距离深度相机平面500~650 mm 范围内时,此像素点的值设为1,其灰度值为255(颜色为白色);超出此范围的像素点,其灰度值为0(颜色为黑色),因此深度图可用黑白色图来表示。故水面摄食鱼群和饲料颗粒的深度图计算如式(3)所示:
式中,g(x,y,t)表示t时刻深度图中坐标点(x,y)的像素值,其取值按式(2)处理,取0 或1,深度图像大小为640×576,故坐标点g(x,y,t)中x和y的取值分别为0~640 和0~576。通过C#程序设定循环累加求和,f(k,t) 的值即表示在t时刻水面活动的鱼群和饲料颗粒的像素点的总和,表征的是鱼群的轮廓特征。
当鱼群在距离水面15 cm 范围内活动时,鱼群的摄食活动被近红外相机捕捉。由于近红外成像不受照明光线的影响,即使在浑浊的水体、昏暗的光照环境,深度相机对于活动于水体表面附近的鱼群也可清晰成像。如图1 中(a1)、(b1)、(c1)、(d1)分别为水质较为清澈的条件、夜间无光条件、水质较为浑浊的条件、水质清澈条件获取的RGB 图,图1 中(a2)、(b2)、(c2)、(d2)为其对应的深度图;通过对比这四种类型的深度图与RGB 图可知,深度图不受拍摄光线和水质浑浊度的影响,呈现摄食鱼群白色特征轮廓与黑色背景的特点,而未进入摄食区的鱼群深度图仅为黑色背景图像,相比于RGB 图更容易区别开来,可排除更多的环境因素干扰。
图1 不同环境条件下深度图与RGB图
深度图中鱼群图像均包含深度信息,鱼群在摄食区域的深度信息有助于提高对鱼类摄食状态的判断准确度,但其深度信息读取不易。为了实现将鱼群深度信息用颜色表示出来,将鱼群的深度距离信息线性转换为HSV 颜色模型的Hue 值,如下式:
式(4)中的z(x,y)表示按式(2)预处理后深度图像素点的深度值,z0、z1分别为500 与650,γ是衰减因子,取值为0.67,则鱼群在距离水面0~15 cm 的深度运动时,对应的色调Hue 值的取值范围是0~0.67;利用C#开发平台的颜色模型转换函数将HSV 模型转换为RGB 模型,其方法如下[14]:
式中,S、V的取值为1,因此得到基于距离信息的32 位伪彩色图。其颜色按照蓝绿红三种颜色演变,蓝色表示鱼群目标贴近水面,如图2 中的A 所示;绿色表示较为接近于水面,如图2 中的B;红色表示鱼在较深水体的运动,如图2 中的C。伪彩色图可反映鱼群立体空间位置信息。
图2 深度伪彩色图
该次实验收集了452 组鱼群摄食行为图像,鱼群摄食图像标注参考文献[15]所提出的分类标准,分别为强摄食、中等摄食、弱摄食、无摄食。构成了鱼群摄食状态数据集,训练集图像44 964 张,验证集11 242张,测试集2 068 张。
卷积神经网络(Convolutional Neural Networks,CNN)在目标检测、图像分类等领域得到广泛应用,针对不同领域开发了多种网络结构的模型。使用CNN 对于鱼类摄食行为图像识别,模型的识别精度、轻量化、检测速度成为关注的指标。由于鱼类摄食深度图像的预处理效果较好,该文设计一简单CNN模型对鱼类摄食数据集进行训练和识别,其结构如图3 所示。
图3 SimpleCNN模型结构
其中,网络输入层为维度为3,大小为224×224的深度图,输入层后为三个隐藏层,其均使用大小为5×5,步长为1 的二维卷积核,均采用Relu 激活函数,卷积核个数分别为32、64、128。每个卷积层后面均使用步长为2 的MaxPooling 层进行下采样处理,其间使用丢弃率为0.2 的Dropout 层来防止网络过拟合,最后使用一个平均全局池化层来降低计算参数量,并连接一个四分类的输出层,其中,输出层使用Softmax 分类函数预测类别概率,并使交叉熵损失函数优化训练,其式如下所示:
式(6)中,Pi为类别i的最终预测概率,zi为分类模型对类别为i的原始预算输出;zj为分类模型对类别为j的原始预算输出,c为类别总数。式(7)中Loss 为交叉熵损失函数,yi为类别i对应的标签。
该实验使用准确率(Accuracy)、精确率(Precision)、召回率(Recall)、F1 得分(F1 score)作为评价模型的指标,如式(8)-(11):
式中,TP 为真实值为正且预测也为正的样本数量;FP 为真实值为负但预测为正的样本数量;FN 为真实值为正但预测为负的样本数量;TN 为真实值为负且预测也为负的样本数量。
该实验使用VGG19、Resnet50、Mobilenet、Densenet201模型对鱼群摄食数据集进行迁移学习训练[16],SimpleCNN 模型采用传统重新学习的方式。上述各模型参数统一设置如下:使用随机梯度下降优化[17-19]方法;学习率为0.000 1;batch size 设置为2,进行100轮次的训练。经过100 轮次训练后各模型的准确率曲线图、损失值曲线图如图4 所示。
图4 各模型的准确率、损失值曲线
由图4 可知,在模型收敛速度方面[20-21],由于训练数据充足,复杂网络模型使用迁移学习的方法可以加速模型的训练,在经过40 轮次左右各模型接近收敛,SimpleCNN 模型在训练40 轮左右收敛,模型能较快地完成训练。经过100 轮次的训练后,各模型的性能及参数如表1 所示。
表1 100轮次后各个模型性能及参数
由表1 可知,SimpleCNN 模型在训练集准确率为99.78%,损失值为0.001,表现优于其他模型。Simple CNN 模型使用三个隐藏层来减少模型的复杂度和参数量,使得模型的每轮训练用时最短、权重空间最小、网络层数最小,可移植性好。
使用测试集测试的各模型识别效果如表2所示。
表2 不同模型的识别效果对比
由表2 可知,该研究提出的模型,在准确率、精确率、召回率、F1 得分等各项评价指标值均优于文献[8]方法,也优于其他模型。其原因主要是深度图预处理效果较好、特征提取容易,SimpleCNN 模型各个网络层的结构设置较为合理。其网络第三卷积层特征提取的可视化结果如图5 所示。
图5 深度图特征提取
由图5 可知,模型的第三层网络能很好提取图像的特征,说明模型针对此类数据集的特征提取效果较好。使用迁移学习方式训练的VGG19、Resnet50、Densenet201 模型对鱼类的数据集识别效果表现不佳,其原因为该次鱼类分类任务的数据集与上述模型的源域训练数据集相似性不高、差异较大。其次迁移学习主要通过预训练的网络来对新数据集进行学习和训练,通常预训练的骨干网络处于被冻结状态,无法根据新数据集的特点进行微调,导致模型的特征提取效果不理想。因此针对不同识别任务要求,设计结构合理的识别模型方可达到最佳的识别效果。
该文研究了一种基于距离特征的图像预处理方法,该方法可克服复杂养殖环境中不良因素对图像成像质量的影响,为识别模型提供良好的训练素材。利用颜色表征鱼类空间深度信息的方法,实现了对鱼群空间深度位置的有效定位,获得了一种二维图像表征空间信息的方法,为研究鱼类摄食状态变化规律提供更多的技术支持。针对鱼类摄食行为识别任务,设计一种结构简单、高效的卷积神经网络模型,探索了轻量化网络模型在鱼类摄食行为识别中的应用。