APP下载

基于改进YOLOv5的水产养殖细菌性鱼病病原细菌检测算法

2022-06-06许竞翔欧阳建邢博闻

渔业现代化 2022年2期
关键词:鱼病聚类精度

许竞翔,欧阳建,邱 懿,邢博闻

(上海海洋大学工程学院,上海 201306)

近年来,中国水产养殖业得到快速发展,现已成为世界第一大水产养殖国。随着中国社会经济的不断发展,越来越多的人员投入到水产养殖中[1]。细菌性鱼病作为水产养殖的主要病害之一,具有暴发范围大、流行季节长以及死亡率高等特点,对渔业养殖户造成严重的经济损失[2-3]。例如肠型点状气单胞菌、豚鼠气单胞菌等会造成鱼肠充血发炎,肛门红肿等[4];弧菌等会造成对虾急性肝胰腺坏死病等[5-6]。因此,监测养殖池中鱼病病原细菌质量浓度对预防细菌性鱼病具有十分重要的意义。

养殖池中鱼病细菌的检测需要通过取水样、病原菌分离、细菌培养、显微镜观察和人工计数等步骤确定鱼病细菌的种类和数量,传统的细菌计数方法分为间接培养计数法和直接计数法[7],都需要利用人工进行观察和统计数量,而细菌都具有目标小、数量多等特点,在进行人工计数时存在工作量大、效率低、误差大,结果受主观影响等问题[8]。借助深度学习来检测和计数该类目标的方法不受主观因素的影响,并且具有效率高、错误率小等优点,逐渐发展为小目标检测和计数的热门研究领域。在深度学习模型中,YOLO (You Only Look Once)系列属于端到端的网络,因具有检测速度快的特点而被广泛使用。谭润旭等[9]针对血细胞数据的特点,基于YOLOv3设计了一种低密度血细胞计数方法,平均准确率均值较其他检测方法均提高了7%以上;燕江云等[10]利用YOLOv3网络检测脑脊液中分枝杆菌,识别结果接近人工识别的水平,识别精确率达到88.0%;侯建平等[11]基于YOLOv3设计了YOLOv3-tiny算法,并与Resnet50模型相结合,对白带显微镜中的白细胞等检测效果较好,检测精确率达到95.94%;Wang等[12]应用SSD(Single Shot MultiBox Detector)和YOLO两种目标检测方法对白细胞进行识别和检测,平均精度为90.09%;YOLOv3和YOLOv4模型对细胞这类小目标的检测具有较好的精度,但是由于模型参数量和计算量较大,不适用应用在嵌入式或移动式设备上。对此王静等[13]提出一种基于YOLOv5的白细胞检测算法,通过增加160×160的检测层,使用四尺度特征检测,添加坐标注意力机制等方法使得平均精度均值较YOLOv5算法提升了3.8%。

以上研究所针对的小目标都是生物学细胞,对于鱼病病原细菌检测的研究很少,本研究将深度学习引入到水产养殖领域中,对鱼病病原细菌这类小目标进行检测,实现鱼病病原细菌数量的自动化统计,解决了人工计数鱼病病原细菌时效率低、误差大等问题。虽然YOLOv5在模型参数量和训练速度上优于YOLO系列的其他网络,但是对于细菌这类小目标的检测效果并不是很理想,漏检率和错检率较高。本研究提出了一种改进YOLOv5的鱼病病原细菌检测算法YOLOv5_final,通过增大输入鱼病病原细菌图像的尺寸、添加空间和通道注意力机制、添加检测层与主干特征提取网络进行特征融合以及增加多尺度检测等方法,提升对鱼病病原细菌这种小目标的检测精度。由于鱼虾卵等小目标的特征与鱼病病原细菌十分相似,该方法可以扩展应用在鱼虾卵的检测和计数上,根据计数结果合理投放饲料和供应氧气等[14]。

1 网络模型

1.1 YOLOv5

随着不断发展和改进,YOLO系列已经更新到了YOLOv5,YOLOv5在准确率和检测速度上都得到了提升。而YOLOv5s在YOLOv5系列中深度最小、识别速度最快,但是相对而言,平均精度AP是最低的。因此选取YOLOv5s作为本研究的基础模型[15-16],下文简称YOLOv5。

YOLOv5网络主要由主干特征提取网络(Backbone)、路径聚合网络(Neck)以及预测网络(Prediction)组成。主干特征提取网络主要包括输入层(Input)、切片层(Focus)、卷积层(Conv)、瓶颈层(CSP)以及空间池化层(SPP)[17]。

路径聚合网络主要作用是特征融合,采用一系列上采样和下采样联合的方式进行特征融合,这种方式能对多尺度特征更好地融合[18]。将融合后的特征层传入预测层,通过非极大值抑制的方式消除大量冗余的候选框,得到置信度较高的预测类别,并返回目标的宽高信息和坐标点信息[19-20]。

1.2 Anchors参数

Anchors是提前在图像中预设好的不同大小和宽高比的预选框。Anchors的设置一般都是通过人工计算。目前大部分目标检测算法都采用了先验框方法,如RetinaNet[21]、SSD[22]等。Anchors将不同尺度的目标划分为几个方块,该方法降低了训练难度和学习难度。因此,选取合适的Anchors尺度对模型的训练效果有一定的影响[23]。本研究网络在Neck部分增加了152×152的特征图分支,所以将聚类得到的Anchors数量由9组增加为12组,通过对训练集进行K-means聚类的方法得到和特征图更加匹配的先验框[24],从而提升模型的准确率和召回率[25]。K-means聚类算法的主要思想是:首先在细菌数据集中随机选择K个聚类中心点,计算这K个聚类中心点到其他样本的距离并且按照距离大小划分到不同的类中,最后以每个类的质心作为新的聚类中心点,重复上述过程直到聚类中心的位置保持不变。K-means聚类得到的12组Anchors尺寸分别为(24,28)、(32,23)、(32,31)、(28,42)、(44,27)、(40,35)、(36,50)、(55,33)、(53,49)、(42,72)、(77,50)、(64,80)。

1.3 注意力机制CBAM

注意力机制能够使网络更加关注图像中的目标区域、抑制目标之外的区域,从而能够更好地提取出大量有价值的信息。目前常见的注意力机制有SE Net[26]、CBAM[27]以及Non-local block[28]。本研究选取CBAM模块,该模块是将空间和通道的注意力机制结合起来,对空间和通道两个维度分别依次导出映射特征图,然后将两个特征图分别基于空间和通道做concat操作,并与输入特征做乘法操作得到最终的输出特征[29]。

2 改进YOLOv5的细菌检测算法

由原始YOLOv5网络结构可以知道,在主干特征提取网络Backbone中,有3层CSP结构、4层Conv结构和1层SPP结构,而只有最后2层CSP模块的输出在Neck结构中被利用。如图1红色虚线所示,为了能更好地利用主干特征提取网络提取的特征信息,借鉴Neck结构中的上采样,添加1层上采样并和Backbone结构中的第1层CSP输出的特征图进行特征融合,并且作为1层输出和原来的3层输出构成4个尺度的输出层。为了进一步细化主干特征提取网络的特征,在Backbone中的每一个CSP模块前面添加CBAM注意力机制,强化模型对重要特征通道的敏感性,提取更强有力的特征,对Conv提取的特征更好地利用,如图1中红框所示。

图1 网络结构

由于K-means聚类的初始聚类中心点是通过随机产生的,聚类中心的选择会影响最终的聚类结果。针对这个问题,本研究采用K-means++聚类算法对细菌数据集的先验框进行聚类。K-means++聚类算法能够使初始聚类中心点之间保持一定距离,首先在细菌数据集中随机确定第一个初始聚类中心点,计算剩下所有样本点距离该初始聚类中心点的距离记为D(x),根据公式(1)计算该初始聚类中心点能够作为下一个聚类中心点的概率Px,通过轮盘法选出新的聚类中心点,重复上述步骤直到选出了K个聚类中心点[30]。K-means++聚类算法计算出的结果能更好地减小误差,从而得到更合适的先验框。

(1)

K-means++聚类得到的12组Anchors尺寸分别为(9,8)、(10,12)、(14,9)、(15,13)、(12,17)、(21,13)、(17,17)、(15,23)、(29,14)、(22,21)、(19,32)、(33,21)。K-means++聚类生成的新Anchors尺寸总体偏小并且差异较小,更加符合细菌的真实尺寸,从而能够提升模型检测的准确率。

3 数据处理

3.1 试验环境

选用的操作系统为centos7,64位,所有试验基于Pytorch框架,显卡型号为NVIDIA GeForce RTX 3090,CUDA版本为11.4。数据集为显微镜下的细菌图像,初始细菌图一共200张,通过旋转、平移、翻转、增加对比度等数据扩增方式得到800张细菌数据集,共21 424个细菌目标,label保存为.txt格式。将数据集按照9∶1划分为训练集和测试集。将最小批次设置为16,权重衰减设置为5×10-4,初始学习率设置为0.01,训练轮次设为600次。

3.2 图像预处理

选取共聚焦显微镜下的细菌图作为试验数据集,细菌性鱼病病原细菌主要表现为形状短小,呈杆状或者逗点状。流程图如图2所示。当输入图像大小超过1 080×1 920时,图像中像素点小于37的目标将无法学习特征信息。由图2的输入图可以看出,显微镜下获取的细菌图分辨率过大,并且细菌在图像中的位置偏小,因此对输入细菌图进行处理。由于YOLOv5网络将输入图像规定到了固定尺寸,所以首先扩大原始细菌图像的大小,然后进行100份等份切分,切分后的图像大小为416×416。这样处理能够使细菌的特征信息全部学习,一定程度上提高了小目标的检测精度,也可以避免小目标漏检[31]。

图2 预处理流程图

3.3 模型评价指标

对模型检测效果的评价指标有很多,选取精确率(Precision)、召回率(Recall)以及平均准确率均值mAP(mean Average Precision)[32]来评定网络训练好坏。精确率表示所有被预测为正的样本中实际为正的样本的概率;召回率表示在实际为正的样本中被预测为正样本的概率;平均精度均值是将所有类别的aP值进行平均求得的,而aP值是PR曲线与横坐标所围成的面积,交并比为0.95。

(2)

(3)

(4)

(5)

式中:TP表示细菌被正确识别为细菌;FP表示非细菌被错误识别为细菌;FN表示细菌被错误识别为非细菌;P表示所有被预测为细菌的目标中实际为细菌的目标的概率;R表示在实际为细菌的目标中被预测为细菌的概率;map表示mAP,即平均准确率均值。

4 结果与分析

4.1 对比试验

首先利用原始的YOLOv5模型对细菌图进行训练和识别,识别效果图如图3所示。从图3可以看到,在细菌图的边缘部分存在很多漏检,如图3中红框所示,对细菌这类小目标的检测效果较差。

图3 原始YOLOv5检测效果

针对细菌漏检问题,对原始YOLOv5的路径聚合网络进行优化,增加1层上采样层,并且和主干特征提取网络的第1层CSP模块进行特征融合,加强特征信息的提取,将该网络记为YOLOv5_4layer。为了证明该操作对提高细菌检测精度的有效性,将原始YOLOv5网络和增加上采样后的YOLOv5_4layer网络进行对比,从训练精度Train_Loss和平均精度mAP两个方面来讨论。从图4训练损失对比图可以看到,增加上采样之后的网络训练损失下降得更快,并且一直低于原始YOLOv5网络,说明添加上采样之后的网络输出的预测值和真实值之间的差异最小。

图4 YOLOv5和YOLOv5_4layer的训练损失

为了对比网络模型的训练精度,本文对比两种模型训练过程中平均精度mAP值的变化曲线如图5所示。在训练到120个epoch之前,两个模型的mAP值变化起伏情况旗鼓相当,在120个epoch之后,原始网络的mAP值一直位于增加上采样之后的网络上方,说明训练精度比原始YOLOv5模型较差,因此对其进行进一步改进,提高平均检测精度。

图5 YOLOv5和YOLOv5_4layer的mAP值

为了能够提高模型的平均检测精度,在Backbone结构中加入基于空间和通道的注意力机制模块CBAM,将其嵌入至Backbone中的每个CSP模块之前,使其能更好地对卷积模块Conv提取的特征信息进行细化,并将该网络记为YOLOv5_final。从图6可以看到,YOLOv5_final网络在训练过程中收敛的最快,并且一直处于最低位置,对模型的影响最小。

图6 不同网络的训练损失

为了更好地验证改进模型YOLOv5_final的有效性,对比mAP值的变化如图7所示。

图7 不同网络的mAP值

从图7可以看到,YOLOv5_final网络模型最终所能达到的mAP值最高,具有更好地检测精度。这是因为CBAM模块能够更好地将卷积模块提取到的特征进行进一步细化,使得改进后算法的输出值和真实值之间的差异最小,得到的预测精度达到最高。

4.2 检测结果分析

为了对比3种网络对细菌小目标的检测效果,随机选取一张图片进行效果测试,结果如图8所示。如图8中的红色框所示,增加上采样层后的网络YOLOv5_4layer在边缘部分有较好的检测效果,并且本研究优化后的最终网络YOLOv5_final能够检测出一些更小的细菌目标,识别准确率较高,这证实了注意力机制CBAM的有效性,能够对提取到的特征进行进一步细分。为了进一步量化分析3种网络的检测精度,将3种网络的mAP值、准确率和召回率[33]统计如表1所示。

图8 细菌识别效果对比图

从表1可以看到,增加检测层之后的网络比原始网络的mAP提高了0.56%,精确率和召回率分别提升了2.4%和2.5%。添加注意力机制后,网络的mAP值相比于没有添加注意力机制的网络提升了1.78%,精确率和召回率也有所提升。从训练精度和损失值来看,添加了检测层之后的网络训练损失收敛的最快,加入CBAM模块之后,不管是模型收敛程度还是训练精度都有很明显的提升,边框回归的更加准确。验证了检测层和注意力模块的有效性。

表1 不同网络的检测结果对比

5 结论

针对鱼病病原细菌这种微小目标检测,Backbone中的每个CSP模块都有提取到特征信息,因此借鉴Neck结构的上采样,添加一层上采样,并与Backbone中的第1层CSP模块提取到的特征信息进行Concat融合,该方法能够充分利用Backbone主干特征提取网络提取到的信息。在CSP模块前添加注意力机制CBAM,注意力机制能够对卷积模块提取到的特征信息进一步的细化,并且不会增加模型的参数量。从训练损失Train_Loss、平均精度mAP以及检测效果3个方面来验证增加上采样层和注意力机制CBAM的有效性。通过结果对比能够得知,上采样层和注意力机制都能够有效地检测细菌,准确地回归出预测框,在交并比为0.95的情况下,本研究改进后的YOLOv5算法比原始YOLOv5算法在平均准确率均值上提升2.34%,漏检率和错检率也有所下降。说明本文算法对于鱼病病原细菌这类小目标的检测具有很好的效果。

本研究将深度学习引入鱼病病原细菌的检测和识别上,并达到较好的检测效果,对鱼病病原细菌的数量统计和质量浓度计算等实现自动化,解决了人工计数效率低、误差大等问题。此外,该方法也可以运用到渔业养殖领域,对鱼虾卵进行检测和识别,计算鱼池中鱼虾的浓度,从而进行匹配的饲料供应和氧气输入,这对于渔业养殖户预防细菌性鱼病和鱼类养殖等具有较大意义。

猜你喜欢

鱼病聚类精度
基于不同快速星历的GAMIT解算精度分析
掌握核“芯”科技!全国首家血液诊断鱼病示范店开业,开创血液精准诊断新时代
基于数据降维与聚类的车联网数据分析应用
浅析夏季鱼病增多的原因及防治办法
基于模糊聚类和支持向量回归的成绩预测
近似边界精度信息熵的属性约简
水产养殖户提高鱼病治疗效果的要领
基于密度的自适应搜索增量聚类法
电力系统短期负荷预测方法与预测精度
浅谈ProENGINEER精度设置及应用