基于Mask RCNN的图像分割模型训练方法及粒径检测方法
技术领域
本发明涉及机器视觉分析领域,尤其是涉及基于Mask RCNN的图像分割模型训练方法及粒径检测方法。
背景技术
碎石骨料生产企业通常是采用破碎机对石料进行破碎,用机械筛或者振动筛进行碎石骨料的筛分,来生产出各种规格的碎石骨料成品。生产出来的碎石骨料是否符合标准,是否存在超标(超长料、针状料等),这个检测的工作也非常关键,比如:筛网破损,导致超规大料混入,会影响了成品的规格构成等,如不能及时检出发现异常,会影响产成品的质量,给碎石生产企业带来较大的经济损失。
有色金属冶炼行业在其矿石解离工序中使用多层破碎机对大块矿石进行破碎,破碎后的矿石粒度检测,也存在碎石骨料生产企业面临的类似的状况。
随着机器视觉的发展,国内外的研究机构均投入大量的精力试图用计算机视觉技术对矿石骨料进行检测,现有的采用机器视觉对矿石骨料进行粒度检测的做法中,应用最为广泛的是基于分水岭变换的分割算法,在阈值分割的结果上进行分水岭变换,将矿石骨料图像分割成单个封闭的矿石区域从而进行粒度测量,该算法极易造成过分割和欠分割;后来提出的凹点匹配法解决这两个问题,但由于矿石骨料堆叠的复杂性以及矿石本身形状的复杂性,凹点匹配法的鲁棒性很低,很容易造成二次错分割,这些问题都会造成粒度统计结果产生较大的偏差。
发明内容
为了提高粒度检测的精准度,本申请提供了基于Mask RCNN的图像分割模型训练方法及粒径检测方法。
第一方面,本申请提供一种基于Mask RCNN的图像分割模型训练方法,采用如下的技术方案:
一种基于Mask RCNN的图像分割模型训练方法,包括以下步骤:
获取石子的检测图像和样例图像;
将检测图像输入CNN中,CNN对检测图像进行特征提取,以得到特征图;
通过RPN生成锚框,并根据RPN回归分支的输出结果对锚框进行修正,且选择预定数量的锚框以形成建议窗口;
把建议窗口映射到CNN最后一层的特征图上,通过RoI Align层使每个建议窗口生成固定尺寸的RoI特征图;
利用全连接层对RoI分类与边框回归,通过FCN生成每个RoI的mask,分割得到石子轮廓;计算石子轮廓与样例图像标记的真实轮廓之间的偏移量,根据偏移量对Mask RCNN神经网络的参数进行更新;
判断偏移量是否达标,若否,则重复上述步骤;若是,则完成Mask RCNN模型的训练。
通过采用上述技术方案,利用神经网络对石子的图像进行分割,并将分割得到的石子轮廓与真实轮廓进行对比,然后调整神经网络的参数,并训练得到Mask RCNN模型,使Mask RCNN模型能准确分割并得到的石子轮廓,有效提高了分割的精准度。
可选的,计算石子轮廓与样例图像标记的真实轮廓之间的偏移量,根据偏移量对Mask RCNN神经网络的参数进行更新,包括:
利用损失公式计算石子轮廓相对于真实轮廓的偏移量,损失公式:
式中:Loss为偏移量,n为样本个数,为真实轮廓的坐标轴的坐标,xi为石子轮廓相应的预测坐标;
记录偏移量,绘制偏移量的损失曲线,并根据损失曲线调整学习率;
根据学习率调整偏移量的梯度,利用该梯度对Mask RCNN神经网络的参数进行更新。
通过采用上述技术方案,可以通过Loss计算公式计算出各个预测框的偏移量,并对偏移量求和并求平均,得到最终的偏移量,可得到石子轮廓和真实轮廓之间的误差,根据误差调整神经网络的参数,使得神经网络在下一轮训练时能够得到更准确的结果。
可选的,所述记录偏移量,绘制偏移量的损失曲线,并根据损失曲线调整学习率,包括::
计算损失曲线预定区间内的下降率,若下降率小于预定下降值,则增大学习率;
获取预定区间内的偏移量,计算相邻偏移量的差值,若差值小于预定误差的次数大于预定次数,则减小学习率。
通过采用上述技术方案,根据最终的损失曲线是否平稳判断模型是否收敛或者已经过拟合,从而选择增大或减少训练轮数,便于对神经网络的学习速度进行监控,从而选择增大或减少训练轮数。
可选的,所述根据学习率调整偏移量的梯度,利用该梯度对Mask RCNN神经网络的参数进行更新,包括:
计算学习率与导数的乘积,计算Mask RCNN模型的原参数与该乘积的差值,该差值为Mask RCNN模型更新后的参数。
通过采用上述技术方案,利用梯度下降法及学习率将偏移量的梯度反传回整个网络,让网络更新以便在下一次预测时得到更准确的结果。
可选的,获取检测图像和样例图像,包括:
删除原来保存测试图片的文件夹,重建新的空文件夹;
对检测图像和样例图像进行畸变校准处理,然后再进行直方图均衡化处理。
通过采用上述技术方案,删除原来保存测试图片的文件夹,防止代码在保存输出结果时与原来保存的文件冲突。消除镜头畸变效应的影响,能得到更为准确真实的图像,进行直方图均衡化处理,可有效解决图像过曝或过暗的问题,更利于检测与分割石子。
可选的,所述对检测图像和样例图像进行畸变校准处理,然后再进行直方图均衡化处理之后,还包括:
将检测图像和样例图像均匀分割成若干预定尺寸的结果图像,相邻结果图像的之间存在重叠面积;
对结果图像进行旋转变换和/或缩放变换,以得到若干检测图像和样例图像。
通过采用上述技术方案,处理后的图片送入神经网络模型训练时占用的显存少,处理速度更快。通过扩充训练数据,使模型能够识别不同角度放置、大小的石子,同时可减少人工标记的工作量。
第二方面,本申请提供一种粒度检测方法,采用如下的技术方案:
一种粒度检测方法,包括以下步骤:
将检测图像输入利用上述训练方法得到的Mask RCNN模型中,以得到石子轮廓;
将石子轮廓映射到检测图像上,以得到石子的轮廓信息,并根据轮廓信息计算石子的粒径信息;
判断粒径信息是否超过数量阈值,若超过,则进行预警。
通过采用上述技术方案,Mask RCNN模型能精准地将石子的轮廓分割出来,对轮廓进行识别,得到石子的粒径信息,可提高粒径检测的精准度。对粒径信息进行反馈,及时检测到超规事件,并做告警提示,便于工作人员及时维修设备,保障产品质量。
可选的,所述判断粒径信息是否超过数量阈值,若超过,则进行预警,包括:
将粒径信息与预定粒径进行比对,若粒径信息大于预定粒径,则统计预定粒径的数目,以得到超值数量;
将超值数量与数量阈值进行比对,若超值数量大于数量阈值,则进行预警。
通过采用上述技术方案,数量阈值的设置,可以减少误告警的情况。
综上所述,本申请包括以下至少一种有益技术效果:
1.适应性强,可以适应各种石子形状及光照条件等,可对石子的形状进行准确识别、分割及图像分析,计算出更为准确的石子大小及粒度尺寸。
2.可及时检测到超规事件,并做告警提示,提高产品的质量。
附图说明
图1是本申请实施例中一种基于Mask RCNN的图像分割模型训练方法的流程图;
图2是根据特征点设置锚框的示意图;
图3是绘制损失曲线的示意图;
图4是本申请实施例中一种粒度检测方法的流程图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图1-4及实施例,对本申请进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本申请,并不用于限定本申请。
本申请实施例公开一种基于Mask RCNN的图像分割模型训练方法,包括以下步骤:S1:获取石子的检测图像和样例图像。
具体的,通过工业相机CCD拍摄石子得到实时的检测图像,并将检测图像传输给工控机,利用labelme工具对检测图像中的石子进行人工标注,以得到样例图像,样例图像作为结果对比和调参的依据。
S2:将检测图像输入CNN中,CNN对检测图像进行特征提取,以得到特征图。
具体的,CNN首先使用一组基础的conv+relu+pooling层提取检测图像的特征图,特征图的大小为检测图像的1/32,该特征图被共享用于后续的RPN网络和全连接层,CNN中包含了13个conv层+13个relu层+4个pooling层。
S3:通过RPN生成锚框,并根据RPN回归分支的输出结果对锚框进行修正,且选择预定数量的锚框以形成建议窗口。
具体的,特征图的像素点作为特征点,每个特征点生成多个宽高不同的锚框(anchors),根据锚框与真实石子框的交并比(锚框与真实石子框的交集与并集的比值),从高到低进行排序,取排序前M个锚框作为建议窗口(proposals),即第一次结果,M可根据实际需要进行取值,在本实施例中,M的取值为3000。计算M个锚框与真实石子框的初步偏移量,通过RPN的回归分支对锚框进行修正,并通过梯度下降法对Mask RCNN神经网络的参数进行更新。
例如,每个特征点上都生成9个锚框,9个锚框的宽高不同。例如,圆点为某一个特征点,方框为此特征点生成的9个不同尺度的锚框,椭圆为两个互相重叠的石子,根据交并比从这9个中选出分别和这两个石子尺度和空间位置相近的锚框作为建议窗口,用于后面的mask精细分割。
S4:把建议窗口映射到CNN最后一层的特征图上,通过RoI Align层使每个建议窗口生成固定尺寸的RoI特征图。
具体的,ROI Pooling层根据建议窗口的位置坐标在特征图中将相应区域池化为固定尺寸的特征图,以便进行后续的分类和包围框回归操作。由于建议窗口的位置通常是由模型回归得到的,一般来讲是浮点数,而池化后的特征图要求尺寸固定。例如,ROI(region of interest)的大小为(7,6),而ROI Pooling是分成了(6,6)的部分,(7,6)到(6,6)的转换带来了边缘某像素的损失,先利用双线性插值将ROI(7,6)插值扩充到(12,12),然后再生成(6,6)的ROI Pooling。
S5:利用全连接层对RoI分类与边框回归,通过FCN生成每个RoI的mask,分割得到石子轮廓。
具体的,通过全连接层映射固定长度的特征向量,通过softmax函数判断边框属于背景或者石子,并剔除背景边框。图像中每个像素的mask信息一般使用0、1表示,其中0表示背景,1表示对应像素的mask值,通过FCN生成每个RoI的mask,即预测出每个石子的石子轮廓,即第二次结果。
S6:计算石子轮廓与样例图像标记的真实轮廓之间的偏移量,根据偏移量对MaskRCNN神经网络的参数进行更新。
具体的,计算石子轮廓与实际边框之间的偏移量,使用梯度下降法对Mask RCNN神经网络的参数进行更新。
S7:判断偏移量是否达标,若否,则重复上述步骤;若是,则完成Mask RCNN模型的训练。
具体的,经过一轮又一轮的“图像输入→第一次结果→梯度下降法更新Mask RCNN神经网络→第二次结果→梯度下降法更新Mask RCNN神经网络”后,Mask RCNN神经网络不断地更新,不断地学习,最终能够准确地预测出石子的边框轮廓。
可选的,在步骤S1中,即获取检测图像和样例图像,包括:
S11:删除原来保存测试图片的文件夹,重建新的空文件夹。
S12:对检测图像和样例图像进行畸变校准处理,然后再进行直方图均衡化处理。
具体的,对工业相机进行畸变校准的相机标定,工业相机提取标定图片的角点信息,通过角点信息和实际的角点位置距离信息,来计算得到图像大小、位置与实际棋盘上对应的大小和位置的对应关系参数,进而获取工业相机的内参和外参矩阵,内参和外参系数可以对之后相机拍摄的图像就进行矫正,得到畸变相对较小的图像,确保后续能得到更为准确真实的图像。
将RGB图像转换为YCrCb图像,对图像的亮度通道进行直方图均衡化处理,再转换为RGB图像,从而解决图像过曝或过暗的问题,更利于检测与分割石子。
可选的,在步骤S12之后,即对检测图像和样例图像进行畸变校准处理,然后再进行直方图均衡化处理之后,还包括:
S13:将检测图像和样例图像均匀分割成若干预定尺寸的结果图像,相邻结果图像的之间存在重叠面积。
S14:对结果图像进行旋转变换和/或缩放变换,以得到若干检测图像和样例图像。
具体的,例如,将每张图像均匀切割为3*3共9张的结果图像,相邻的果图像之间存在10%面积的重叠部分。处理后的图片送入Mask RCNN模型训练时占用的显存少,处理速度更快。
对结果图像进行7次角度为45°的旋转变换,并对mask标注的边框也随之进行相同的变换,保存每次变换的结果,每张结果图像经过变换得到包含原图在内的共8张旋转了不同角度的图像,从而扩充数据集,使模型能够识别不同角度放置的石子。对结果图像进行J次缩放扩充变换,比如放大1倍,缩小到1/2、1/4、1/8等,得到N张缩放扩充变换图像,使模型能够识别不同角度放置的石子,Mask RCNN模型能够识别不同大小的石子。
可选的,在步骤S6中,即计算石子轮廓与样例图像标记的真实轮廓之间的偏移量,根据偏移量对Mask RCNN神经网络的参数进行更新,包括:
S61:利用损失公式计算石子轮廓相对于真实轮廓的偏移量,损失公式:
式中:Loss为偏移量,n为样本个数,为真实轮廓的坐标轴的坐标,xi为石子轮廓相应的预测坐标。
具体的,例如预测出了1个石子边框,石子边框的左上角的坐标为(10,10),而真实石子框的左上角坐标为(8,8),因此,可以通过Loss计算公式计算出这个预测框的偏移量为1/2*(2*2+2*2)=4,所有框的偏移量都通过这个公式计算,最终求和并求平均,得到最终的偏移量,之后,利用梯度下降法将最终的偏移量的梯度反传回整个网络,Mask RCNN神经网络进行参数更新。
S62:记录偏移量,绘制偏移量的损失曲线,并根据损失曲线调整学习率。
S63:根据学习率调整偏移量的梯度,利用该梯度对Mask RCNN神经网络的参数进行更新。
具体的,通过绘制训练过程中的损失曲线,根据损失曲线下降的快慢程度调整学习率(LEARNING_RATE),如损失曲线下降过慢应增大学习率,若损失曲线出现大于阈值的波动幅值,说明学习率过大,应减小学习率。根据最终的损失曲线是否平稳判断Mask RCNN模型是否收敛或者已经过拟合,从而选择增大或减少训练轮数(EPOCHS)。
可选的,在步骤S62中,即记录偏移量,绘制偏移量的损失曲线,并根据损失曲线调整学习率,包括:
S621:计算损失曲线预定区间内的下降率,若下降率小于预定下降值,则增大学习率。
S622:获取预定区间内的偏移量,计算相邻偏移量的差值,若差值小于预定误差的次数大于预定次数,则减小学习率。
具体的,设置初始的学习率,然后进入Mask RCNN模型的训练,根据训练的情况绘制损失曲线。假如,初始的学习率为0.1,预定下降值为1,预定次数为3,预定误差为-1,预定区间损失曲线拟合之前的相邻10次的训练轮数,如,区间{A,B},计算区间{A,B}内相邻偏移量的差值,其中,X1表示前一轮的偏移量,X2表示后一轮的偏移量,则差值为X1-X2,求区间{A,B}内所有偏移量之间差值的平均值,该平均值为下降率,若下降率为0.5,0.5小于1,说明学习率过小,则增大学习率,如将学习率调节为0.15。
计算区间{A,B}内相邻偏移量的差值,该差值小于-1的次数为5次,5大于3,损失曲线出现大于阈值的波动幅值,说明学习率过大,则减小学习率,如将学习率调节为0.05。为了便于理解,图中,L1表示正常的损失曲线,L2表示学习率过小的损失曲线,下降速度较L1慢,需要增大学习率;L3表示学习率过大的损失曲线,损失曲线出现较大的波动幅值,需要减小学习率。
可选的,在步骤S63中,即根据学习率调整偏移量的梯度,利用该梯度对Mask RCNN神经网络的参数进行更新,包括:
S631:通过损失公式对x求导数,以得到关于x的导数。
S632:计算学习率与导数的乘积,计算Mask RCNN模型的原参数与该乘积的差值,该差值为Mask RCNN模型更新后的参数。
具体的,以上面的Loss函数为例,假设坐标的预测值为X,Loss对X求导,导数可以看作为设学习率为0.1,则需要反传的梯度为假如,Mask RCNN模型的原参数为H,则为Mask RCNN模型更新后的参数。
可选的,在步骤S7中,即判断偏移量是否达标,若否,则重复上述步骤;若是,则完成Mask RCNN模型的训练,包括:
S71:记录偏移量小于预定偏移值的轮数,若偏移量小于预定偏移值的轮数大于预定轮数,则偏移量达标。
具体的,例如,预定轮数为50,预定偏移值设为X0,X0为0.5,训练中,偏移量小于0.5的轮数为60,60大于50,说明损失曲线已经完成拟合,偏移量达标,完成Mask RCNN模型的训练。
本申请实施例还公开一种粒度检测方法,包括以下步骤:
S100:将检测图像输入利用上述训练方法得到的Mask RCNN模型中,以得到石子轮廓。
S200:将石子轮廓映射到检测图像上,以得到石子的轮廓信息,并根据轮廓信息计算石子的粒径信息。
具体的,将石子轮廓的mask输出映射到检测图像上,并使用opencv将mask在原图上绘制,速度更快且节省存储空间,并将绘制的可视化结果保存在根目录images/true_result中。计算出石子的粒径,并定位到尺寸超标的石子位置,将该结果信息保存在根目录images/result.txt中。
其中,通过计算模型输出的每个mask的像素面积,可以认为为石子的面积,并筛选出像素面积大于阈值的mask,进而得到尺寸超标的石子。假设石子轮廓各顶点的坐标为(X0,Y0),则轮廓面积S:
则,粒径R:
其中,根据轮廓的各顶点坐标(X0,Y0),也可以计算轮廓的周长D,周长D为相邻顶点的距离之和,则粒径R:
其中,根据轮廓的各顶点坐标(X0,Y0),还可以计算石子投影的最小外接矩形,从而得到石子投影的长L、宽W,则粒径R:
或
其中,α1+α2=2,一般α1、α2取1。粒径R的计算可可以根据实测效果来对比,进而选择合适的公式。
S300:判断粒径信息是否超过数量阈值,若超过,则进行预警。
具体的,通过石子的面积、周长、最小外接矩形的长宽等数据计算出算出每个分割石子的粒径数据,根据超规告警规则来检测是否触发超规告警,根据粒径计算的体积筛余分布统计曲线来判断是否偏离标准曲线过大、是否触发相关告警。
可选的,在步骤S300中,即判断粒径信息是否超过数量阈值,若超过,则进行预警,包括:
S301:将粒径信息与预定粒径进行比对,若粒径信息大于预定粒径,则统计预定粒径的数目,以得到超值数量。
S302:将超值数量与数量阈值进行比对,若超值数量大于数量阈值,则进行预警。
具体的,根据计算得到S、D、L、W、R等信息,并进行粒度分布的统计,并根据配置的超规告警条件进行超规告警的判断,以及配置的粒度检测的判断条件进行粒度检测,形成超规告警和粒径统计数据及曲线、告警等。比如,超规告警可以设定长边L的最大值,超过最大值的石子数量阈值,超过数量阈值则触发超规告警。L的最大值为5,石子数量阈值为10,其中,检测到粒径的长边L大于5的数量为15,15大于10,则发出超规告警。
超规告警可以设定长边L和短边W的最大值,超过最大值的石子数量阈值,超过数量阈值则触发超规告警。
超规告警可以设定面积S的最大值,超过最大值S的石子数量阈值,超过数量阈值则触发超规告警。
粒径检测可以设定粒径统计曲线偏离设定的标准曲线的阈值,超过阈值则认为粒径分布异常,触发告警,例如,根据计算的粒径绘制粒径的统计图,统计粒径小于5的分布数量和粒径大于5的分布数量,若粒径大于5的分布数量持续增多,则认为粒径分布异常。
告警检测规则可以根据实际情况来指定,并做一些告警抑制的措施来避免告警过于频繁,比如:偶尔一次超规不触发异常,一定时间段内连续多次超规则触发告警等。
以上均为本申请的较佳实施例,并非依此限制本申请的保护范围,本说明书(包括摘要和附图)中公开的任一特征,除非特别叙述,均可被其他等效或者具有类似目的的替代特征加以替换。即,除非特别叙述,每个特征只是一系列等效或类似特征中的一个例子而已。
- 上一篇:石墨接头机器人自动装卡簧、装栓机
- 下一篇:火焰检测方法、装置、计算机设备和存储介质