基于yolov4的蘑菇裂纹检测分级系统
技术领域
1.本发明涉及ai应用技术领域,特别是一种基于yolov4的蘑菇裂纹检测分级系统。
背景技术:2.蘑菇是高蛋白、低脂肪的营养食品,具有鲜美可口、独特风味的特点。随着人们对健康的重视,越来越多的人开始青睐于食用蘑菇,这使得蘑菇的种植面积和产量日益增长。由于蘑菇的品级与营养成份密切相关,因此不同质量等级的蘑菇有着不同的销售价格,准确高效地对蘑菇进行分级能够给种植者带来利润上的提升、维持蘑菇产业的良好健康发展。根据相关行业标准,蘑菇的品级主要与其菌盖完整程度相关,传统的分级方法主要依靠人工来判断蘑菇表面裂缝的数量多少及裂口的大小,这种方法显然存在作业效率低下、增加了生产方成本,且存在标准受主观因素影响较大不统一等问题,同时对于蘑菇的人工分级,往往会受到光照影响,不同的光线强度将造成图像颜色与真实颜色之间的偏差,因而分级的质量得不到保证,人为分级中,也在一定程度上增加了分级时损伤的比例、降低了蘑菇的售价。
3.随着科技的发展,人工智能技术越来越多的应用到了工业领域,用于对工业产品的质量鉴别,但是现有技术中,还未见基于人工智能的蘑菇分级系统,有鉴于此,提供一种基于人工智能技术,能实现蘑菇自动分级的系统显得尤为必要。
技术实现要素:4.为了克服现有人为方式对蘑菇进行分级存在的如背景所述弊端,本发明提供了基于人工智能技术,应用中在各单元共同作用下,能自动对蘑菇进行分级,减少了分级成本以及蘑菇的损伤,且分级效率更高、分级质量更为精准,为蘑菇产业良性发展起到了有效助力的一种基于yolov4的蘑菇裂纹检测分级系统。
5.本发明解决其技术问题所采用的技术方案是:
6.一种基于yolov4的蘑菇裂纹检测分级系统,其特征在于包括数据采集模块、数据预处理模块、数据训练模块、分级模块;所述分级模块是安装在pc机内的应用软件;蘑菇裂纹检测分级的过程如下,步骤 (1):通过数据采集模块采集经摄像头获得的不同位置、不同形状的蘑菇图像,将采集到的数据集通过数据预处理模块将数据集的70%用作训练模型算法的训练数据,其余的30%用作验证和测试模型算法检测的效果,经数据预处理模块将训练集图像复制成a、b、c、d四份相同的图像集,测试集不用复制。然后对a 图像集每张图片分别进行旋转、翻转、剪裁,对b图像集每张图片分别进行亮度变换、对比度变换以及颜色变换。步骤(2):经数据预处理模块,对c图像集进行mg_crack变换,之后将变换后的a、b、c数据集与未变换的d图像集进行混合,组成新的训练数据集;mg_crack图像变换的具体步骤是,首先,先筛选出真实框面积大于0.3并且真实框数量大于等于3的图片,并从这些图片中不放回的随机抽取三张,在原始蘑菇裂纹数据集中不放回的随机抽取一张,一共四张图片,然后将抽取的三张图片以对角线交点为圆心做圆、随机生成分割点、并分割成四部分,并选取
一张图片的四个部分中平均真实框面积最大的那一个部分,三张图共选出三个部分,最后将这三个部分图片与第四张图片分割好的四个相应部分的某一个拼接合成一张图片备用;步骤(3):通过数据训练模块将步骤(2)获得的新训练数据集输入到骨干网络 cspdarknet53中,然后将提取到的分级的蘑菇特征输入到pan和spp网络中进行特征融合,之后将特征输入到yolov3网络中进行蘑菇裂纹的检测识别;步骤(4)通过数据测试模块将测试集输入到模型中,最后根据模型在测试集上识别的效果来调整相应参数使其达到最佳性能、达到最佳性能后就可交给用户使用;步骤(5):通过分级模块,终端用户经摄像头将需要分级的蘑菇图像数据进行采集,并输入到cspdarknet53 网络中进行特征的提取、将提取到的特征再输入到pan和spp网络中进行特征融合、将融合后的特征输入到yolov3网络中进行识别,将识别后的蘑菇裂纹的坐标信息输进公式中,得出每个蘑菇定量的分级信息,并将所有蘑菇的分级数值从小到大排列划分等级,终端用户就可得到检测的蘑菇质量。
7.进一步地,所述步骤(1)中,对a图像集每张图片分别进行旋转的角度是90度、180度、270度,翻转的模式是上下翻转,左右翻转,剪裁作用是扩充图像数据、增强模型检测的鲁棒性;对b图像集每张图片分别进行亮度、对比度、颜色变换作用是扩充图像数据、同时也增强模型检测的鲁棒性;进一步地,所述步骤(2)中,对c图像集进行mg_crack变换作用是增强模型算法对不同尺度的蘑菇裂纹的识别能力;组成新的训练数据集作用是扩充训练数据集,提升算法模型的鲁棒性与泛化能力。
8.进一步地,所述步骤(3)中,将新的训练数据集输入到骨干网络中作用是更好更充分的提取到蘑菇裂纹图片的特征,进而提升算法模型的准确度,提取的特征输入到pan和spp网络中进行特征融合作用是进一步提升算法模型的性能,特征输入到yolov3网络中进行蘑菇裂纹的检测识别作用是高效的将提取融合之后的特征进行准确的识别。
9.进一步地,所述步骤(2),具体以图片对角线交点为圆心,取蘑菇[真实框宽平均值+真实框高平均值] 的平均值r为半径做圆,再该圆内随机生成分割点、将图片分割成四部分。
[0010]
进一步地,所述步骤(1)中,训练集进行数据增强过程中需要分别旋转90度、180度、270度,并上下翻转、左右翻转、剪裁,亮度、对比度、颜色变换。
[0011]
进一步地,所述步骤(5)中,实际过程中会将模型算法嵌入到互联网设备的app中,具体的嵌入的是训练好的模型,用户可以直接用来分级。
[0012]
进一步地,所述步骤(5)中,所有蘑菇的分级中,用户根据自己的需要来进行划分等级。
[0013]
本发明有益效果是:本发明基于人工智能技术,应用中终端用户将需要分级的蘑菇放在安装了相应应用单元的pc机等的摄像头下,摄像头采集数据后,通过分级模块能自动对蘑菇进行分级,可具体得出检测的蘑菇等级,由于不再需要人为目视检测,减少了分级成本以及对蘑菇的损伤,且提升了对蘑菇分级的效率和分级质量,节省了人工成本,为蘑菇产业良性发展起到了有效助力。综上,本发明具有较好的市场前景。
附图说明
[0014]
附图用来提供对本发明的进一步理解,并且构成说明书的一部分,与本发明的实施例一起用于解释本发明,并不构成对本发明的限制,在附图中:
[0015]
图1是本发明的软件架构框图示意。
[0016]
图2是本发明半径确定示意图。
[0017]
图3是本发明人工标注示意图。
[0018]
图4是本发明圆心确定示意图。
[0019]
图5是本发明分成四部分示意图。
[0020]
图6是发明开发流程框图示意。
[0021]
图7是本发明mg_crack数据增强算法的流程图。
具体实施方式
[0022]
图1、6所示,一种基于yolov4的蘑菇裂纹检测分级系统,包括数据采集模块、数据预处理模块、数据训练模块、分级模块;所述分级模块是安装在pc机内的应用软件。
[0023]
图1、6、7所示,蘑菇裂纹检测分级的过程如下,(1)数据采集模块采集经摄像头获得的不同位置、采集不同位置及不同形状的若干蘑菇图像,将采集到的数据集通过数据预处理模块将获得的数据集的70% (2100张图像)用作训练模型算法的训练数据,其余的30%(900张图像)用作验证和测试模型算法识别的效果,具体的,训练集需要复制成4份,测试集不用。经数据预处理模块将训练集图片复制成a、b、c、 d四份相同的图像集,然后对a图像集每张图片分别进行旋转(具体包括90度、180度、270度),翻转 (具体包括上下翻转、左右翻转),剪裁(旋转、翻转、裁剪的作用是扩充图像数据,使图像数据更加接近真实场景下蘑菇的状态,增强模型检测的鲁棒性;由于旋转、翻转和剪裁分别模拟了在真实环境中因拍摄角度拍摄距离的不同造成的同一株蘑菇在图片中呈现不同的变化,因此在训练集中加入这些经过旋转、翻转、剪裁之后的图片后,使得算法模型能够充分的学习在不同的拍摄角度与拍摄距离下蘑菇的形态,进而在真实场景中能够更好的对同一个蘑菇因拍摄角度,拍摄距离的不同造成不同形态的蘑菇图片进行识别);继之,对b图像集每张图片分别进行亮度变换、对比度变换以及颜色变换(上述三种变换方式作用是扩充图像数据,使图像数据更加接近真实场景下蘑菇的状态,增强模型检测的鲁棒性;因为亮度变换、对比度变换、颜色变换模拟了在不同的自然光下、室内光源下、不同明暗度下,同一株蘑菇在这三种情况下在图片中呈现的不同状态,因此在训练集中加入了经过这三种变化的图片之后,使得算法模型能够充分的学习在不同光照强度不同光线下蘑菇的形态,进而在真实场景中能够更好的对同一个蘑菇因光照强度不同,光线不同造成不同形态的蘑菇图片进行识别);
[0024]
图1、6所示,蘑菇裂纹检测分级的过程,步骤(2):经数据预处理模块,对c图像集进行mg_crack (数据增强)变换(作用是解决在训练集中蘑菇裂纹面积大小分布不平衡或均衡的问题,使得不同大小的蘑菇裂纹数量得到均衡,进而增强模型算法对不同尺度大小的蘑菇裂纹进行识别的能力),之后将变换后的a、b、c图像集与未变换的d图像集进行混合,组成新的训练数据集(作用是扩充训练数据集,提升算法模型的鲁棒性与泛化能力)。需要说明的是,以上操作均是在训练集上完成的,在整个过程中,从开始到结束没有用到测试集,测试集用于评定最终模型性能的好坏。mg_crack图像变换实现的步骤是:首先,先筛选出训练集真实框面积大于0.3(像素单位)并且真实框(人工标注的框)数量大于等于3(蘑菇的三个裂纹)的图片,并从这些图片中不放回(比如一共筛选出了10张,第一次随机抽三张,然后把这三张从那10张中剔除,从剩下的7张中继续随机抽取三张,直到剩余的图片张数不足三
张时,停止抽取) 的随机抽取三张,在原始蘑菇裂纹数据集中不放回的随机抽取一张,一共四张图片,然后以图片对角线交点为圆心,取([真实框宽平均值+真实框高平均值]的平均值)r为半径做圆,再该圆内随机生成分割点,将图片分割成四部分,选取四个部分中平均真实框面积最大的那一个部分(areai=max{ areaai,areabi,areaci,areadi}),以上操作是针对筛选出来的那三张图片的,在原始蘑菇裂纹数据集中随机抽取的那张图片只做分割不做筛选(不选areai)。最后将三张图片的 areai(i=1,2,3)都选出来进行合并,与第四张图片分割好的四个相应部分的某一个拼接,比如,三张图片的三个areai为a,c,d,则相应的将第四张图片的b部分与那三个部分拼接合成一张图片,因为这四张图片分割点都是相同的(圆内随机生成的点的坐标在四张图片中均相同),因此便于合并。
[0025]
图1、6所示,蘑菇裂纹检测分级的过程,(3):通过数据训练模块将步骤(2)获得的新训练数据集输入到骨干网络cspdarknet53网络中(作用是更好更充分的提取到蘑菇裂纹图片的特征,进而提升算法模型的准确度),然后将提取到的特征输入到pan和spp网络中进行特征融合(作用是进一步提取蘑菇裂纹图片的特征,同时将不同尺度的特征层进行充分融合,增强不同特征层的语义信息,进一步提升了算法模型的性能),之后将特征输入到yolov3网络中进行蘑菇裂纹的识别(作用是高效的将提取融合之后的特征进行准确的识别),通过每张蘑菇图片裂纹的数量以及裂口的大小对蘑菇进行分级。
[0026]
图1、6所示,蘑菇裂纹检测分级的过程,步骤(4):通过数据测试模块将测试集输入到模型中,最后根据模型在测试集上识别的效果来调整相应参数使其达到最佳性能、达到最佳性能后就可交给用户使用;实际过程中会将模型算法嵌入到互联网设备的app中,具体的嵌入的是训练好的模型,用户可以直接用来分级。
[0027]
图1、6所示,蘑菇裂纹检测分级的过程,步骤(5):经分级模块,终端用户经摄像头将需要分级的蘑菇图像数据采集好,并输入到cspdarknet53网络中进行特征的提取、将提取到的特征再输入到pan和spp 网络中进行特征融合、将融合后的特征输入到yolov3网络中进行识别,将识别后的蘑菇裂纹的坐标信息输进公式中,得出每个蘑菇定量的分级信息,并将所有蘑菇的分级数值从小到大排列、用户就可得到检验的蘑菇质量;具体的,用户根据自己的需要来进行划分,比如需要分a、b,、c三级,则就将从小到大排列的数值三等分。
[0028]
图1所示,本发明,步骤(2)中,半径的确定的公式是,其中r代表半径,如图 2中的中部圆形;和是抽取的那三张图片,其中,wi代表蘑菇裂纹标注框的宽,纹标注框的宽,hj代表蘑菇裂纹标注框的高,实际应用中,一般在采集完图片之后,会进行人工标注,标注之后才可用于模型的训练,如图3的矩形就是标注框,其中横向的是标注框的宽,纵向的是标注框的高, n代表随机抽取的三张图片中蘑茹裂纹的总数量,该公式主要作用是用三张图片中蘑菇裂纹标注框的平均宽和高的和来作为圆的半径,这样可以更好的确定分割点的范围,使得分割出来的四个部分既不过大也不过小。由于圆心一般为固定值,输入的数据集确定,则圆心就是确定的,圆心标记为(x,y),其中,如图4中间那个点就是圆心(x,y),w
圆
, h
圆
分别代表输入图片的宽
度和高度,图4中,横向为宽度,纵向为高度。具体的x=random(x-r,x+r)、 y=random(y-r,y+r),注:以图4的左上角为圆心,横向为x轴正半轴,纵向为y轴正半轴,大部分算法均是以这种方式建立坐标系。步骤(2)中,在圆内随机建立一点(x,y),抽出来的4张图片建立的随机点是相同的,方便后续的拼接,在圆内随机找一点,而不是有选择的找一点,主要是为了引入随机性,防止人为主观因素的干扰。步骤(2)中,areai=max{areaai,areabi,areaci,areadi} i=1,2,3,具体的,选出3张图片中,每张图片裂纹平均面积最大的部分,其中,areaai,areabi, areaci,areadi分别代表一张图片中被分割的四个部分,i代表是第几张图片,如i=1, areaa1表示第一张的a部分,(x=a,b,c,d i=1,2,3j=1,2,
…
,n)、n代表裂纹数量,areaxi代表每张图片的每个部分裂纹的平均面积、如:x=a,i=1,j=3, areaa
13
则表示为第一张的a部分中的第三个蘑菇裂纹,如图5所示a、b、c、d四个部分。对单个蘑菇裂纹面积的求法中,
[0029]
areax
ij
=(width*height)/2用蘑菇裂纹的标注框的面积的来近似,其中,width是标注框的宽,height 是标注框的高,选取蘑菇裂纹平均面积最大的部分(一共随机抽三张图片,每张图片选出平均面积最大的部分,一共三个平均面积最大的部分,跟第四张图片的相应部分拼接)主要是为了丰富原始图像的背景(蘑菇图像更多了,背景更少了)以及平衡蘑菇小裂纹和大裂纹之间的数量(根据统计分析,在蘑菇中,小裂纹数量往往更多,大裂纹数量相对较少,这样不利于模型对大裂纹的识别,以此来达到提升模型性能的目的)。
[0030]
图1、6所示,本发明,步骤(5)中,蘑菇分级的评定公式如下,图1、6所示,本发明,步骤(5)中,蘑菇分级的评定公式如下,其中,λ为权重因子、n为一张图片中蘑菇裂纹的数量,该公式很好地权衡了裂纹面积与裂纹数量对蘑菇分级评定的影响,使得对蘑菇的分级有了定量化的描述。λ的选取:(几个λ的参数值是通过实验得来的),具体的,裂纹面积小于0.01对蘑菇分级的影响很小则λ=1,0.01《area《0.1之间的,因为面积小,即使一个蘑菇中有很多的介于这个范围的裂纹,由于面积小可能加出的数值还没有一两个或者两三个面积相对较大的裂纹的数值大,但是对分级的影响却大于一两个或者两三个面积相对较大的裂纹,因此将权重因子适当调大,其他的同理,当面积相对较大时,则降低λ值,减小裂纹面积对于分级的影响,具体通过下式表述,
[0031]
if area≤0.01、λ=1;
[0032]
0.01《area《0.1、λ=5;
[0033]
0.1≤area<0.20、λ=2;
[0034]
0.2≤area《0.3、λ=1;
[0035]
0.3≤area《0.5、λ=0.8;
[0036]
area≥0.5、λ=0.5。
[0037]
通过上述,本发明基于人工智能技术,应用中终端用户将需要分级的蘑菇放在安装了相应应用单元的 pc机等的摄像头下,摄像头采集数据后,通过分级模块能自动对蘑菇进行分级,可具体得出检测的蘑菇等级,由于不再需要人为目视检测,减少了分级成本以及蘑菇的损伤,且提升了对蘑菇分级的效率和分级质量,节省了人工成本,为蘑菇产业良性发展起到了有效助力。
[0038]
需要提示的是,尽管已经示出和描述了本发明的实施例,对于本领域的普通技术人员而言,可以理解在不脱离本发明的原理和精神的情况下可以对这些实施例进行多种变化、修改、替换和变型,因而,本发明的范围由所附权利要求及其等同物限定。