1. 引言
细菌计数在环境学科中有广泛应用。在环境污染检测方向,通过对水体、土壤、空气等环境中细菌数量的检测,可以评估环境的卫生状况和水质情况[1]。例如,在水处理厂或污水处理厂中,细菌计数可以帮助监测处理效果和污染物的浓度。通过监测细菌的数量和种类,可以对环境进行污染程度的评估,为环境保护和治理提供科学依据[2]。此外,细菌计数在环境生物多样性的研究中也具有重要作用。通过比较不同环境样品中细菌的数量和组成,可以了解不同环境中的微生物群落结构和生态系统的健康状况[3]。细菌是生态系统中最丰富和多样化的微生物群体之一,其数量和组成变化可以反映环境的变化和生态系统的稳定性[4]。因此,通过细菌计数研究,可以揭示环境中的生物多样性格局、生态过程和生物地球化学循环等重要信息,为环境保护和生态恢复提供科学依据[5]。
传统的细菌计数方法存在许多局限性,例如需要人工采集样品、稀释分离、细菌培养和显微镜观察等步骤,耗时耗力且存在主观因素的影响[6],而利用深度学习网络进行细菌计数可以克服这些问题。深度学习网络,特别是YOLO (You Only Look Once)系列模型,具有快捷的检测速度和较高的准确度,被广泛应用于小目标检测和计数领域。借助深度学习模型,细菌计数过程可以实现自动化、高效化和准确性,减少了人为因素的干扰,并提高了计数的准确性和效率。因此,基于机器学习算法的细菌计数研究对于改善环境质量、保护生态系统和促进可持续发展具有重要的科学意义和应用前景[7] [8]。
针对小目标识别中,模型特征提取能力不足、预测框处理后检测速度变慢,小目标检测漏检等问题,黎学飞等人提出一种基于YOLOv5的改进模型。通过在主干网络中加入CBAM注意力模块,从而增强网络特征提取能力;在颈部网络部分,使用BiFPN结构替换PANet结构,强化底层特征利用[9];在检测头部分,增加高分辨率检测头,改善对于微小目标的检测能力。李娇等人通过在浅层特征图层添加一次Concat操作,引入注意力机制提高了模型对小目标的识别准确度,同时将浅层特征信息结合中间层特征图层作为一个检测头;但是由于模型参数量和计算量较大,对硬件要求较高,不适合应用在嵌入式或移动式设备上[10]。
以上所有的研究方法都是针对如交通标志和细胞等小目标,但是对环境检测方向的细菌检测研究很少,因此,针对实验过程中细菌人工计数效率低、误差大、工作量大等问题[11],本研究将深度学习和YOLOv5框架引入环境检测领域中,对细菌这类小目标进行自动检测,实现了细菌数量的自动化统计。在具体操作中,YOLOv5框架在模型参数和训练速度上具有很大的优越性,但是仍然存在一些问题,如对细菌这种小目标检测漏检和错检率较高。本论文针对这一问题提出一种改进YOLOv5的细菌计数算法,增大对模型输入图像的尺寸、添加小目标检测层、添加协调注意机制,从而提升对细菌这种小目标的检测能力。该模型同样可以迁移到真菌分类和计数任务上。
2. 数据与研究方法
2.1. 试验环境
本论文选用window10,64位操作系统,所有试验均在基于Pytorch的Yolov5框架中进行,显卡型号为NVIDIAGeForceRTX960M,CUDA版本为12.0。数据集来源于实验室分离培养的培养基图片,初始图片分辨率为3000 × 4496,因YOLO模型会对输入图片进行压缩输入,使得小目标更难以检测,故对高分辨率图片进行切割,并通过图像增强、旋转、平移、拼接、转灰度图和增加对比度等技术,将训练集填充到400张高分辨率图像。通过Labelimg对图像进行标注,保存格式为yolo格式,label保存为.txt格式。数据集按照7:2:1划分为训练集、验证集和测试集[12]。
2.2. 数据预处理
我们选取实验室培养基的细菌图像作为试验数据集,设计了一套完整的处理流程来处理这些图像数据。通过图像预处理、分割、特征提取和机器学习算法,可以实现对细菌的准确检测和计数。当输入图像尺寸大小超过640时,yolov5框架会自动压缩图像到640 × 640,原本在高分辨率原图中小目标的图像大于32像素,压缩后位置和特征信息会消失,难以被检测。因而将细菌检测任务转为了小目标优化问题。
小目标检测是计算机视觉领域的一个重要任务,但也面临着一些挑战和难点。小目标通常具有较小的尺寸,甚至可能只有几个像素大小,这导致目标的特征信息非常有限,难以准确地区分目标与背景或其他相似物体;小目标的低分辨率和模糊性也增加了检测的困难;小目标通常具有较低的对比度,使得目标难以从背景中区分出来;小目标常常被其他物体或遮挡物所遮挡,只有部分可见,这增加了目标检测的困难;相比于常规大小目标的数据集,小目标的标注数据更加稀缺和有限。这导致训练模型时的数据不平衡和样本不足问题,限制了模型在小目标检测任务上的性能和泛化能力[13]-[15]。
为了应对目标物较为密集的情况,我们采用较为清晰且具有像素级分辨率的原始图像构建数据集,并将原始图像分割为像素的图片,以便更好地进行目标标注并提高训练速度。使用常见的LabelImg开源软件对这些图片中的细菌逐个进行标注,大约标注了600个细菌目标,标注内容为不同形态细菌的矩形包围框坐标,并将其存储为.txt文本文件,其中包含细菌类别信息。随后,编写了相应的程序,在597张裁剪后的图像上将标注的目标框贴合在目标上,以核查是否有遗漏的目标物并进行补充。之后,按照7:2:1的比例划分已构建好的数据集为训练集、验证集和测试集[16] [17]。
对标签数据进行目标位置和大小的整体分析,得到了标注框在图像中的相对位置分布和目标相对大小图。根据分析结果,可以观察到目标树在图像中分布较为均匀,大多数目标的宽度占据图像宽度的10%以上,而目标的高度大多数占据图像高度的1%到4%之间[18]。因此,可以确保小目标的特征可以被深度神经网络学习到。这样处理能够使细菌的特征信息全部学习,一定程度上提高了小目标的检测精度,也可以避免小目标漏检。样本数据分布如图1所示:
Figure 1. Sample data distribution
图1. 样本数据分布
2.3. 改进YOLOv5的细菌检测计数算法
2.3.1. 添加小目标检测层
改进后的YOLOv5模型在原有的P3/8、P4/16和P5/32检测特征图的基础上,新增了一个160 × 160的检测特征图。这个新的特征图用于检测尺寸为4 × 4以上的目标,这样可以更好地捕捉到小目标的细节信息。通过增加160 × 160的检测特征图,YOLOv5在检测小目标时能够更加精细地定位目标的位置和边界框,从而提高检测的准确性。尽管这样做会增加计算量和检测速度,但它能够显著改善对小目标的检测精度。这一改进对于需要检测小目标的场景非常有意义[19]。
总之,新增的160 × 160的检测特征图在YOLOv5模型中的加入,为小目标的检测提供了更好的性能和精度。这种改进对于在培养皿等场景中对细微菌落进行分类和计数非常有帮助。
2.3.2. 添加注意力机制
针对原YOLOv5s模型在卷积采样的过程中容易丢失小目标特征信息问题,我们在Backbon主干网络的最后一层中引入坐标注意力机制(coordinate attention),提高对小目标的敏感度。CA模块与SE模块不同,专注于同时捕获位置信息和跨通道间信息,扩大全局的感受野。因为分别在水平和垂直两个空间方向上进行特征编码,所以不仅能在空间方向上获取长程依赖关系,同时也能保存精准位置信息。同时,与只关注重新衡量不同通道重要性的通道关注不同,我们的坐标关注块考虑对空间信息进行编码[20] [21]。
2.4. 模型评价指标
本试验选取查准率(precision)、召回率(recall)和平均准确率均值mAP (mean Average Precision)来评价网络模型的训练成果[22];精确率表示所有被预测为正的样本中实际为正的样本的概率;精确率高,意味着分类器要尽量在“更有把握”的情况下才将样本预测为正样本,这意味着精确率能够很好的体现模型对于负样本的区分能力,精确率越高,则模型对负样本区分能力越强。召回率表示在实际为正的样本中预测结果为正例的概率。召回率高,意味着分类器尽可能将有可能为正样本的样本预测为正样本,这意味着召回率能够很好的体现模型对于正样本的区分能力,召回率越高,则模型对正样本的区分能力越强。精确率与召回率是此消彼长的关系,如果分类器只把可能性大的样本预测为正样本,那么会漏掉很多可能性相对不大但依旧满足的正样本,从而导致召回率降低。平均精度均值是对所有类别的aP值求平均得来的,其中aP值是PR曲线与横坐标所围成的面积,交并比为0.95 [23]。
(1)
(2)
(3)
公式中:
是真正例(true positive),即准确预测正类样本为正类,在本试验中表示细菌被正确识别为细菌,
是假正例(false positive),将负类预测为正类数(预测错了),
是假反例(false negative),将负类预测为正类数(预测错了)。FPS代表每秒传输帧数,能够反映模型检测速度的快慢。FPS值越髙表示网络的实时性越好,即深度学习网络检测越流畅。所以本文用传帧数来衡量网络运行的流畅性从而判断是否满足实时性需求。
3. 实验结果和分析
3.1. 结果和分析
3.1.1. 对比实验
首先使用原始的YOLOv5模型对细菌图像进行训练和识别,本实验中我们使用labelimg对图像进行标注,标注为两类c_1和c_2两类目标,送入模型进行训练。标注图像如图2所示。
从识别结果可以看出中心密集处和边缘处漏检率较高。所以对这类密集小目标的泛化能力较差。
3.1.2. 改进YOLOv5算法实验
针对上述细菌漏检问题,对原始的YOLOv5s网络结构进行优化,增加一层小目标检测层,并和第一层conv模块特征融合,加强特征信息的提取。为了能够提高模型的平均检测精度,在Backbone结构中加入基于空间和通道的注意力机制模块CA,将其嵌入至Backbone中的SPPF层之前,使其能更好地对卷积模块Conv提取的特征信息进行细化,并将该网络记为YOLOv5_ca。下图3为YOLOv5_ca的训练结果。
Figure 2. Bacterial labeling images
图2. 细菌标注图像
Figure 3. Training results of YOLOv5_ca
图3. YOLOv5_ca的训练结果
其中box_loss推测为GIoU损失函数均值,越小方框越准。Obj_loss为推测为目标检测loss均值,越小目标检测越准;图中train/obj_loss虽整体趋势是收敛的,但是曲线表现为震荡,原因在于YOLOv5使用样本中心区域的3领域和4领域,当小目标密集时,就相当于把每个目标之间的边界信息丢失,因此obj_loss曲线在震荡。因为图中cls_loss和box_loss是下降的,obj_loss对网络梯度回传只影响框的精度。Cls_loss为推测为分类loss均值,越小分类越准。
3.2. 结果分析对比
图4,图5是对改进算法的精确对与原始YOLOv5的训练损耗进行比较的结果。从图4可以看出,在刚开始的时候,两种模型的精度都有了很大的提高。不过,随着迭代次数的推移,修改过的YOLOv5模型随着迭代次数越大,模型的上升速度就越快,大概训练了50次左右,召回率就达到了0.93,并趋于稳定。而原来的算法,经过37次的训练,就达到了一个相对稳定的水平。从图5可以看出,当训练批次达到1到50时,这两种模型的准确度都有很大的变化。
Figure 4. Comparison of accuracy curves
图4. 精准度曲线对比
Figure 5. Training loss comparison chart
图5. 训练损失对比图
改进后模型的平均精度均值一直高于原YOLOv5算法,在训练40个批次之后,训练损失达到了0.4。说明说明本文所提算法在细菌检测任务中具有更好的鲁棒性,更符合细菌检测这一小目标识别任务。
从图4可以看到,yolov5_Ca网络模型在经过大约60次迭代后准确度值明显高于yolov5,表明其具有更高的检测精度。这是因为CA注意力模块通过进一步细化卷积模块提取到的特征,从而使得改进后算法的输出值和真实值之间接近一致。通过对比这2种网络对细菌小目标的检测效果,证实了通过增加小目标检测层,可以使得改进后的网络YOLOv5_ca在边缘部分有较好的检测效果,如果再次经过注意力机制优化,则最终网络YOLOv5_ca_final甚至能够检测出一些更小的细菌目标,识别准确率更加高。为了进一步量化分析2种网络的检测精度,将2种网络的mAP值、准确率和召回率统计如表1所示:
Table 1. Comparison of detection results of different networks
表1. 不同网络的检测结果对比
模型 |
平均准确率均值 |
精确率 |
召回率 |
YOLOv5 |
55.6% |
87.6% |
61.4% |
YOLOv5_ca |
64.6% |
93.8% |
68.6% |
从表1可以看出,增加检测层后的网络相比于原始网络,其平均准确率提高了9%,精确率和召回率分别上升了6.2%和7.2%。从训练精度和损失值的角度来看,通过增加检测层,网络在训练损失收敛速度上表现最佳,这验证了检测层的有效性。
4. 结论与展望
通过在Backbone的每个CSP模块中提取特征信息,结合Neck结构的上采样和添加小目标检测层,以及在CSP模块前添加注意力机制CA,可以充分利用Backbone主干网络提取的信息来检测微小目标(如细菌) [24]。这种方法在不增加模型的参数量的前提下实现了细化卷积模块提取的特征信息。同时,本实验还对比了不同网络的训练损失、平均精度mAP和检测效果等指标,验证了增加小目标检测层和注意力机制CA的有效性。因此,这种改进算法在细菌等小目标的检测方面表现出很好的效果。通过将深度学习应用于环境中细菌的检测和识别,可以实现对细菌数量统计和质量浓度计算的自动化,解决了人工计数效率低、误差大等问题[25] [26]。
展望未来,基于机器学习算法对细菌计数的研究有以下几个方向可以进一步探索和改进。首先,可以继续改进细菌目标检测算法的性能。虽然当前的研究已经取得了一定的成果,但仍然存在一些挑战。例如,细菌的形态多样性和复杂背景可能导致检测算法的准确性下降。因此,可以尝试引入更加复杂的网络架构或者采用其他先进的计算机视觉技术来提升检测算法的性能。此外,还可以通过数据增强、集成学习等方法来改善模型的泛化能力,使其在不同场景下都能够准确地检测细菌[27]。
其次,可以探索更多的数据采集和预处理技术。细菌计数任务通常需要大量的标注数据来训练模型,但标注细菌数量繁琐且耗时。因此,可以研究如何利用半监督学习、迁移学习或者弱监督学习等方法来减少标注数据的需求[28]。此外,还可以探索如何通过数据增强技术来生成更多多样化的训练样本,以提高模型的鲁棒性和泛化能力。
另外,可以进一步研究细菌计数的自动化方法。目前的研究主要集中在细菌目标的检测和计数,但在实际应用中,还需要进行更深入的分析和统计[29]。例如,可以研究如何利用机器学习算法对细菌形态特征进行分类和识别,以实现对细菌类型的自动化鉴定。此外,还可以结合图像处理和模式识别技术,研究如何自动测量细菌的大小、形状和分布等特征,以实现对细菌群体的定量分析和质量浓度的计算。
综上所述,基于机器学习算法对细菌计数的研究具有广阔的发展前景。通过不断改进算法性能、优化数据处理流程、深化研究应用场景以及与其他学科的交叉融合,我们有望在细菌计数领域取得更加准确、高效和自动化的成果,为相关领域的科学研究和实际应用提供有力支持。
NOTES
*通讯作者。