1.一种基于YOLOv5网络对密集遮挡鱼类的检测方法,包括数据集建立与处理部分、模型训练部分和模型测试部分;所述数据集建立与处理部分包括鱼类图片数据的收集、鱼类图片数据标注以及数据划分;所述数据划分是将数据划分为训练集、验证集和测试集;其特征在于,所述鱼类图片,利用改变图片的亮度、对比度、饱和度来扩充训练集中的数据,再输入到YOLOv5网络使用的神经网络模型中进行训练;训练模型时,算法使用mosaic方法进行数据增强,将训练集中选取的4张图片分别进行缩放和裁剪,图片缩放尺寸为原来图片大小的
0.5倍到1.5倍,裁剪范围是图片左边或右边的1/10会被裁剪掉;然后将这4张图片按照左上角、右上角、左下角和右下角的顺序放置,将这4张图片拼接成1张图片,即将这4张图片作为
1张图片输入到网络中进行训练,并把图片尺寸缩放成640×640;
所述数据划分是在数据标注完成之后按照8:1:1的比例将图片划分为训练集、验证集和测试集;
所述模型训练部分通过使用损失函数计算模型输出的训练预算结果,得到训练预算结果的误差,更新模型的神经网络中的参数,以提高模型的精确度;所述损失函数为改进的损失函数,在损失函数中引入改进的排斥力损失函数来增强模型检测相互遮挡鱼类的能力;
所述的改进的排斥力损失函数为LRepGT,LRepGT函数使用的Smoothln和SmoothL1函数使不同鱼类的预测框相互排斥,达到相互远离的效果,减少预测框间的重叠程度,从而减小鱼类漏检数量,提高检测准确率;
所述改进的排斥力损失函数如下所示:
,
P
式中,λ1和λ2是各项函数的权重值, 表示一张图片中的所有正样本的集合;BP P P表示预测框, 表示预测框B 和除B 对应的真值框外与B 有最大交并比的其他目标的真值框;
所述 ,
,
式中, ,={G}表示一张图片中的所有真值框的集合;Smoothln()、SmoothL(1)和IoG()的表达式分别如下所示,其中σ∈[0,1);
,
,
;
所述训练集中的图片输入到神经网络模型,通过模型中的骨干网络提取特征,并将提取后的特征输送到特征金字塔中进行特征融合,然后将融合后的特征输送到检测模块中,检测完成后,会输出在三个不同的尺度上的预测结果,预测结果包括目标的类别,置信度以及在图片中的坐标,可得到模型的预测结果;
得到第一轮训练的预测结果后,利用改进的排斥力损失函数计算训练集上的损失,即预测误差;
当鱼类对象密集遮挡时,得到的不同鱼类对象间的预测框重合度较高,会有较高的误差值,通过使用改进的排斥力损失函数,从而使神经网络针对这一情况在后面的训练中进行不断优化,使得不同鱼类对象间的预测框相互远离,减小预测框间的重合程度,使误差值不断减小;
利用反向传播算法对神经网络中的参数进行迭代更新;
将验证集中的图片输入到神经网络模型中提取特征,得到在验证集上的预测结果,并计算出预测结果和真实结果之间的误差,进一步计算出预测的准确率;
若当前为第一轮训练,则保存当前训练的模型,若不是第一轮训练的模型,则比较当前训练过程中在验证集上的准确率是否比上一轮训练过程中在验证集上计算的准确率高,若高,则保存当前训练过程中训练出的模型,否则,进入下一轮训练;
上述过程为一轮训练,依据设定,此过程重复300次;
最后是模型测试模块:
1)加载测试集中的图片,并将图片大小缩放到640×640;
2)加载在训练过程中保存的模型,该模型在验证集上得到了最高的准确率;
3)将测试集中图片输入到加载的模型中,得到预测结果;
4)将过滤后的预测边界框进行可视化,并计算预测的准确率和计算速度,以检验模型的泛化性能。
2.根据权利要求1所述的基于YOLOv5网络对密集遮挡鱼类的检测方法,其特征在于,所述模型训练部分是将图像数据通过数据加强、图像缩放以及模型后获得预测结果,对预测结果通过损失函数计算损失,更新神经网络中的参数;所述模型包括骨干网络、特征金字塔和检测;
图片数据被输入到模型的骨干网络:
1)首先是输入数据,数据依次经过Focus模块、C3_1x模块、CBS模块和C3_3x模块来初步的提取图片中的特征,并将此时提取出的特征矩阵保存起来,记为特征A1;
2)特征A1继续向下传输,依次经过CBS模块和C3_3x模块进一步的提取特征,并将此时提取矩阵出的特征保存起来,记为特征A2;
3)特征A2继续向下传输,又依次经过CBS模块,SPP模块和C3_3x模块进行提取特征,并将此时提取出的特征矩阵保存起来,记为特征A3。
3.根据权利要求2所述的基于YOLOv5网络对密集遮挡鱼类的检测方法,其特征在于,将特征A1、A2和A3都输入到所述的特征金字塔中,在特征金字塔中,
1)首先特征A3输入到CBS模块中进一步提取特征,保存提取后的特征矩阵,记为特征B1;
2)然后将特征B1进行上采样处理后,再和之前存储的特征A2这两个特征矩阵输入到拼接模块中合并为1个特征矩阵,然后依次输入到C3_1x模块和CBS模块进一步提取特征,保存提取后的特征矩阵,记为特征B2;
3) 将特征B2输入到上采样模块中进行上采样操作,然后与之前存储的特征A1一起输入到拼接模块中合并为1个特征矩阵,然后再输入到C3_1x模块中进一步提取特征,保存提取后的特征矩阵,记为特征B3;
4)特征B3继续输入到CBS模块中进行特征提取操作后,与之前存储的特征B2一起输送到拼接模块中合并为一个特征矩阵,然后再输入到一个C3_1x模块中进一步特征提取,并将输出的特征矩阵保存起来,记为特征B4;
5)特征B4继续流经一个CBS模块后,与之前存储的特征矩阵B1一同输入到一个拼接模块中合并为一个特征矩阵后,再输入到一个C3_1x模块中进一步特征提取,并将输出的特征矩阵保存起来,记为特征B5。
4.根据权利要求3所述的基于YOLOv5网络对密集遮挡鱼类的检测方法,其特征在于,分别将提取出的特征矩阵B3、B4和B5输入到检测模块的3个Conv层中,以识别和检测鱼类对象在图片中的位置,并以数据矩阵的形式输出最终的预测结果。
5.根据权利要求1所述的基于YOLOv5网络对密集遮挡鱼类的检测方法,其特征在于,所述数据集建立与处理部分中图片数据是通过如下方式获得:采集相互遮挡下的密集鱼类图片,然后利用LabelImg标注工具对数据集进行人工标注,并将标注后的数据集转换成COCO数据集的格式;通过LabelImg标注完图片后,鱼类标注框的保存形式为标注框的左上角坐标以及右下角坐标,COCO数据集中标注框的形式为标注框的中心点坐标以及标注框的宽高,并将中心点坐标和标注框的宽高除以图片的宽高,将坐标值的范围限制在0‑1之间,然后将这些坐标值保存到txt文本文档中。
6.根据权利要求1所述的基于YOLOv5网络对密集遮挡鱼类的检测方法,其特征在于,所述检测中,算法分别在提前人工预设的20×20,40×40和80×80这三个不同的尺度上对输入的图片进行预测,并分别在每个尺度的特征图上预设了3种不同尺寸的锚框,以更好的对图片中不同大小和不同形状的物体进行检测;检测完成后,会输出在三个不同的尺度上的预测结果,预测结果包括目标的类别,置信度以及在图片中的坐标。