一种基于深度学习的粮食不完善粒识别方法及系统
文献发布时间:2023-06-19 09:49:27
技术领域
本发明涉及智能检测技术领域,具体涉及一种基于深度学习的粮食不完善粒识别方法及系统。
背景技术
随着工业自动化、智能化的普及,粮食不完善粒检测也非常需要实现自动化、智能化,可以较大的节省检测成本,提高检测效率。目前的粮食不完善粒检测,包括以下几种:
非智能粮食不完善粒检测:单纯的机械结构,没有电子控制部分,纯属人工操作,虽然检测的精度高,但是人工成本也十分巨大,检测效率也存在很大的问题。
现有的智能化粮食不完善粒检测:基本能实现粮食不完善粒的检测需求,但是检测精度不够高,检测的效率也不够高。
发明内容
本发明所要解决的技术问题是提供一种基于深度学习的粮食不完善粒识别方法及系统,在确保检测效率的同时可以提高检测精度。
本发明解决上述技术问题的技术方案如下:一种基于深度学习的粮食不完善粒识别方法,包括以下步骤,
从多个角度全方位的获取一颗待识别粮食粒的图像,得到所述待识别粮食粒的图像集,其中,所述图像集中包括所述待识别粮食粒多角度的多幅图像;
利用预先训练好的神经网络模型分别对所述图像集中的每幅图像进行识别,得到所述待识别粮食粒在每幅图像中的识别结果;并将所述待识别粮食粒在所有图像中的识别结果进行差异性比对,取识别结果置信度之和高于预设阈值的识别结果作为所述待识别粮食粒的最终识别结果。
基于上述一种基于深度学习的粮食不完善粒识别方法,本发明还提供一种基于深度学习的粮食不完善粒识别系统。一种基于深度学习的粮食不完善粒识别系统,包括图像获取模块和神经网络模型识别模块,
所述图像获取模块,其用于从多个角度全方位的获取一颗待识别粮食粒的图像,得到所述待识别粮食粒的图像集,其中,所述图像集中包括所述待识别粮食粒多角度的多幅图像;
所述神经网络模型识别模块,其用于利用预先训练好的神经网络模型分别对所述图像集中的每幅图像进行识别,得到所述待识别粮食粒在每幅图像中的识别结果;并将所述待识别粮食粒在所有图像中的识别结果进行差异性比对,取识别结果置信度之和高于预设阈值的识别结果作为所述待识别粮食粒的最终识别结果。
本发明的有益效果是:本发明一种基于深度学习的粮食不完善粒识别方法及系统接入工业级粮食自动出粒设备,采用开源的opencv库从多个角度全方位的获取从粮食自动出粒设备出落的待识别粮食粒的多幅图像,并利用基于Resnet的分类神经网络对多视角的多幅图像分别同时进行识别,其相对于识别单一视角的一幅图像具有更高的容错性能,因而本发明在确保检测效率的同时可以提高检测精度。
附图说明
图1为本发明一种基于深度学习的粮食不完善粒识别方法的流程图;
图2为本发明一种基于深度学习的粮食不完善粒识别系统的结构框图。
具体实施方式
以下结合附图及具体实施例对本发明的原理和特征进行描述,所举实例只用于解释本发明,并非用于限定本发明的范围。
如图1所示,本发明提供一种基于深度学习的粮食不完善粒识别方法,包括以下步骤:从多个角度全方位的获取一颗待识别粮食粒的图像,得到所述待识别粮食粒的图像集,其中,所述图像集中包括所述待识别粮食粒多角度的多幅图像;利用预先训练好的神经网络模型分别对所述图像集中的每幅图像进行识别,得到所述待识别粮食粒在每幅图像中的识别结果;并将所述待识别粮食粒在所有图像中的识别结果进行差异性比对,取识别结果置信度之和高于预设阈值的识别结果作为所述待识别粮食粒的最终识别结果。
在本发明方法中,从多个角度全方位的获取一颗待识别粮食粒的图像的具体方法为:采用分布在多个角度的相机全方位的获取一颗待识别粮食粒的图像。在本具体实施例中,相机设有四个,四个相机处于同一水平面内,且四个相机分别摆放在四个不同的方位,以确保能够360°无死角拍摄到待识别粮食粒(四个相机还会有大面积的视野重合),相邻两个相机之间呈直角摆放(下面的实施例均是以设置的四个相机为例)。取图算法采用开源的opencv库,即通过opencv程序代码,分别获取四个摄像机中的视频流,截取当前时刻的帧图像作为目标图像,即作为所述待识别粮食粒的图像集。最终,四个相机会每隔100ms,分别向神经网络模型输送一张拍摄到的图像。四个角度拍摄到的图像,输入到神经网络模型后,会出现四个结果,通过这四个结果进行差异比对,取置信度最高的类别作为最终结果;例如四张图识别出来的结果分别是完好粒(92)、完好粒(84),完好粒(87),病斑粒(83),括号里面的是置信度,那么我们认为这粒粮食应属于完好粒,所以四个相机拥有比一个相机更好的容错性能。
本发明是通过计算机实现智能化粮食不完善粒检测,程序初始化的时候,加载预先训练好的神经网络模型,并做好相关的参数配置,开启线程池(为后续四幅图像检测的并行化做准备),一切准备妥当后,工业级粮食自动出粒设备开始出粮食,下面就是执行粮食不完善粒检测:首先程序是实时全自动检测,即每一个瞬间,检测程序都在执行,所以我们需要知道当前画面中是否有粮食粒出现,如果没有,则不做任何处理,否则就进行后续的识别任务。因此,在本发明方法中,在获取所述待识别粮食粒的图像之前,还包括以下步骤:检测相机拍摄的当前画面中是否有所述待识别粮食粒存在。
在本具体实施例中,检测相机拍摄的当前画面中是否有所述待识别粮食粒存在,具体包括以下步骤:获取相机拍摄的当前画面图像,并对所述当前画面图像中的每一像素点进行微分处理,得到每一像素点的微分值;若所述当前画面图像中每一像素点的微分值均为零,则判定所述当前画面图像中不存在所述待识别粮食粒;否则获取所述当前画面图像中微分值不为零的像素点的像素信息;将所述当前画面图像中所有微分值不为零的像素点的像素信息分别与预设像素信息进行比较;若微分值不为零的像素点的像素信息与所述预设像素信息之间的差值小于第一预设阈值时,则判定该微分值不为零的像素点不是边缘点;否则判定该微分值不为零的像素点是边缘点;统计所述边缘点的数量,并将所述边缘点的数量与第二预设阈值进行比较;若所述边缘点的数量小于所述第二预设阈值,则判定所述当前画面图像中不存在所述待识别粮食粒;否则判定所述当前画面图像中存在所述待识别粮食粒。
这里有一点需要说明,由于相机是定焦的,所以焦平面之外的物体,距离越远,成像越模糊,所以如果画面中没有粮食粒,整幅画面就是黑色的,也就不存在边缘信息,否则当边缘信息高于某个预定义的阈值,则认为是有粮食存在。
在本发明方法中,在检测到当前画面有粮食粒存在后,还包括以下步骤:对所述待识别粮食粒进行跟踪处理。本具体实施例采用KCF跟踪法对所述待识别粮食粒进行跟踪处理。
当前,已经确定检测到了粮食的存在,但是此时并不应该第一时间去做粮食粒的分类检测,而是先对其进行目标跟踪,因为做分类检测需要一定的时间,而这段时间过去,粮食可能已经远离之前的位置,等检测结果出来,我们还需要对它进行相关的操作,例如检测到一个病斑粒,我们需要控制机械板将其拍向专门存放病斑粒的盒子,这时我们唯一需要的就是此时此刻,这枚病斑粒所在的具体位置。跟踪算法我们采用开源的KCF,该算法稳定性极高,精度也极高,在各个工业领域中被广泛使用,所以直接调用opencv库中集成过来的KCF算法,根据之前检测到的边缘信息,可以计算出粮食所在图像中的位置,即最外边的那层边缘就是粮食的最大包围圈,由此可得到粮食首次进入相机视野时的位置,并以此为依据填写好KCF算法的相关参数,就可以开始跟踪了。
在本发明的方法中,所述神经网络是以ResNet为backbone的分类神经网络;利用预先训练好的神经网络模型分别对所述图像集中的每幅图像进行识别,得到所述待识别粮食粒在每幅图像中的识别结果,具体包括以下步骤:利用所述神经网络模型分别对所述图像集中的每幅图像进行卷积运算、池化和归一化处理,输出所述待识别粮食粒在每幅图像中的识别结果;其中,所述识别结果包括每幅图像中所述待识别粮食粒所属每种类别的权值和置信度;将所述待识别粮食粒在所有图像中的识别结果进行差异性比对,取识别结果置信度之和高于预设阈值的识别结果作为所述待识别粮食粒的最终识别结果,具体包括以下步骤:将每幅图像中所述待识别粮食粒所属每种类别的权值和置信度进行相乘处理,得到每幅图像中所述待识别粮食粒所属每种类别的加权置信度;分别将所有图像中所述待识别粮食粒所属相同类别的加权置信度进行相加处理,得到所述待识别粮食粒所属每种类别的加权置信度之和;取高于预设阈值的所述加权置信度之和所对应的类别作为所述待识别粮食粒的最终识别结果。
在程序运行的时候,线程池已经准备就绪,所以,我们这时会调动四个线程来同时对四幅携带粮食粒的图像进行分类检测,每个线程池的工作内容是:将图像当作矩阵输入由ResNet网络结构模型搭建出的神经网络模型中,经过一系列的卷积运算、池化、归一化等操作,该网络会输出一串数据,里面包含了当前图像表示的粮食粒所属每个分类的置信度,解析这段数据,并取最终置信度进行加权运算后依然高于某个阈值的类别作为该粮食粒的分类结果。下面举例说明:
这里要特别说明一下加权运算:在神经网络模型进行图像检测的过程中,每一个类别都会根据当前的图像产生一个权值,这个权值是一个五维的向量(X1,X2,X3,X4,X5),X1表示属于完好粒的概率,X2表示属于病斑粒的概率,X3表示属于破损粒的概率(即权值),X4表示属于发霉粒的概率,X5表示属于虫蚀粒的概率,初始情况下,这五个元素X1、X2、X3、X4和X5均为0.5,依次执行如下过程可以重置这五个元素的值:第一步,如果当前图像进行边缘提取后得到的图像P进行凸包计算,如果凸包的边长信息,与原来的信息差距很大,说明这个粮食很有可能是破损的,所以可以使X3=0.6(根据凸包的边长信息具体设置),其余的不变,仍然是0.5(X1、X2、X4和X5不变);第二步,对图像P进行短边缘的统计,如果是完好粒,其整个边缘比较完整,碎短的边缘信息数量极少,如果是发霉的,或者病斑的,其边缘细节会很多,如果边缘细节高于某个预定的阈值,则可以设置X2=0.6,X4=0.6(根据边缘细节具体设置),其余的不做变化(不做变化不表示等于0.5,因为在第一步中可能符合破损粒的判定,即这可能是一个破损的病斑粒)。
假设某一帧图像经过网络输出后得到:完好粒(23),病斑粒(97),破损粒(95),发霉粒(79),虫蚀粒(7),则所述待识别粮食粒所属每种类别的加权置信度为:完好粒:23*X1=23*0.5=11.5,病斑粒:97*X2=97*0.6=59.2,破损粒:95*X3=95*0.6=57,发霉粒:71*X4=79*0.6=47.4,虫蚀粒:7*X5=7*0.5=3.5;假设我们预定的阈值为45,那么有两个类别的最终计算结果都超过了这个阈值,分别是病斑粒(59.2)和破损粒(47.4),则我们认为当前帧图像中的粮食粒应属于破损病斑粒。
四个线程进行分类检测计算的同时,并不影响主程序对物理世界中真实存在的粮食粒的跟踪任务,第一步中的目标跟踪还在继续。
获取到四个相机传过来的粮食粒图像后,进行差异性比对(因为这是从四个不同的角度拍摄的,可能检测出的类别相互之间不一样),比对方法如下:取类别置信度总和大于预设阈值的为分类结果。
例如,第一幅图像中,待识别粮食粒属于完好粒的加权置信度为A1,属于病斑粒的加权置信度为B1,属于破损粒的加权置信度为C1,属于发霉粒的加权置信度为D1,属于虫蚀粒的加权置信度为E1;第二幅图像中,待识别粮食粒属于完好粒的加权置信度为A2,属于病斑粒的加权置信度为B2,属于破损粒的加权置信度为C2,属于发霉粒的加权置信度为D2,属于虫蚀粒的加权置信度为E2;第三幅图像中,待识别粮食粒属于完好粒的加权置信度为A3,属于病斑粒的加权置信度为B3,属于破损粒的加权置信度为C3,属于发霉粒的加权置信度为D3,属于虫蚀粒的加权置信度为E3;第四幅图像中,待识别粮食粒属于完好粒的加权置信度为A4,属于病斑粒的加权置信度为B4,属于破损粒的加权置信度为C4,属于发霉粒的加权置信度为D4,属于虫蚀粒的加权置信度为E4。则:待识别粮食粒属于完好粒的加权置信度之和为A=A1+A2+A3+A4,属于病斑粒的加权置信度之和为B=B1+B2+B3+B4,属于破损粒的加权置信度之和为C=C1+C2+C3+C4,属于发霉粒的加权置信度之和为D=D1+D2+D3+D4,属于虫蚀粒的加权置信度之和为E=E1+E2+E3+E4。将A、B、C、D和E分别与预设阈值进行比较,将加权置信度之和高于预设阈值对应的类别作为最终类别;例如,若只有A高于预设阈值,则认为该待识别粮食粒属于完好粒,若是有B和C高于预设阈值,则认为该待识别粮食粒属于病斑破损粒,等等。
比如四张图像对应类别的加权置信度之和(四个角度拍摄到的图片都做一遍上述运算,并将其累加)是:完好粒(105.3)、病斑粒(221.8),破损粒(192.3),生霉粒(83.2),虫蚀粒(21.5),因为每个线程的阈值为45.0,所以四条线程叠加之后,阈值应为45.0*4=180.0,所以这里有两个类别超过了阈值,即病斑粒(221.8)和破损粒(192.3),所以当前物理世界中,从相机处掉落的是一枚破损病斑粒。
在本发明方法中,训练所述神经网络模型的具体步骤为:提供多种不同类别的原始粮食粒样本,从多个角度全方位的获取每一种类别的原始粮食粒样本的图像,得到多个类别的原始粮食粒样本图像集;基于TF-Slim库,将多个类别的所述原始粮食粒样本图像集输入至ResNet网络模型中进行训练,得到所述神经网络模型。
神经网络backbone选用ResNet50,选用它的原因是这个网络被大量使用在工业方面,其效果和稳定性已经得到了证实。分别从多个不同的角度获取原始粮食粒样本的图像,能够确保收集到每一粒粮食的完整的细节信息。
在本发明方法中,所述粮食不完善粒识别方法包括以下步骤:根据所述最终识别结果将所述待识别粮食粒分类至对应类别堆中。
前面已经对待识别粮食粒进行了跟踪处理,待其类别被识别出后,可采用机械装置将其拍入对应的容器中加以存储。
基于上述一种基于深度学习的粮食不完善粒识别方法,本发明还提供一种基于深度学习的粮食不完善粒识别系统。
如图2所示,一种基于深度学习的粮食不完善粒识别系统,包括图像获取模块和神经网络模型识别模块,
所述图像获取模块,其用于从多个角度全方位的获取一颗待识别粮食粒的图像,得到所述待识别粮食粒的图像集,其中,所述图像集中包括所述待识别粮食粒多角度的多幅图像;
所述神经网络模型识别模块,其用于利用预先训练好的神经网络模型分别对所述图像集中的每幅图像进行识别,得到所述待识别粮食粒在每幅图像中的识别结果;并将所述待识别粮食粒在所有图像中的识别结果进行差异性比对,取识别结果置信度之和高于预设阈值的识别结果作为所述待识别粮食粒的最终识别结果。
在本发明的系统中,还包括分拣模块,所述分拣模块用于根据所述待识别粮食粒的最终识别结果将所述待识别粮食分拣至对应的类别堆中。
在本具体实施例中,图像获取模块采用处于同一水平面内的四个相机,且四个相机分别摆放在四个不同的方位,以确保能够360°无死角拍摄到待识别粮食粒(四个相机还会有大面积的视野重合),相邻两个相机之间呈直角摆放。神经网络模型识别模块采用安装有神经网络模型软件程序的计算机。分拣模块具体可以采用机械板,其受控与计算机,计算机发送指令通知机械板进行相关操作,这里采用串口通信,通过串口发送二进制指令通知机械板,机械板收到特定指令后会做出特定动作,比如将粮食粒拍向对应分类的盒子中。
本发明方法和系统接入工业级粮食自动出粒设备,采用开源的opencv库从多个角度全方位的获取从粮食自动出粒设备出落的待识别粮食粒的多幅图像,并利用开源的基于ResNet的分类神经网络模型对多视角的多幅图像分别同时进行识别,其相对于识别单一视角的一幅图像具有更高的容错性能,因而本发明在确保检测效率的同时可以提高检测精度。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
- 一种基于深度学习的粮食不完善粒识别方法及系统
- 一种基于深度学习的粮食水分检测方法及系统