本发明涉及布匹瑕疵检测的技术领域,尤其是指一种基于极限学习机的卷积神经网络布匹瑕疵检测方法。
背景技术:
在工业产品的生产过程中,对于质量的控制与检测是不可或缺的,产品表面布匹瑕疵的存在会导致产品价格的下降,严重影响到产品相关行业的效益,对于产品布匹瑕疵的高效准确识别也成为了工业界亟待解决的关键问题。目前工业界的大部分产品布匹瑕疵检测都是经由人工来进行的,人工识别不仅容易受到人主观因素的影响,导致识别错误率高,识别效率低,在某些极端环境下还容易对人体健康造成损害。为加快检测效率,提高检测精度,适应检测环境,开发出一套自动检测系统可以有效的促进相关产品制造业的发展。
传统的布匹瑕疵检测方法主要可分为三类:统计法、光学法、基于模型法。常见的统计法有边缘检测、形态学以及分形维数等方法,该类方法布匹瑕疵检测准确率不高,误检率难以达到工业应用中的要求。光学法中,比较常用的有小波变换法,gabor变换法等,该类方法通过提取布匹瑕疵的纹理信息,最大化纹理信息和布匹瑕疵信息的相应差来实现布匹瑕疵的检测,该方法在检测准确率上也只有75%到85%,难以达到工业应用的要求。最为普遍且成功的模型法有马尔可夫模型和基于神经网络的模型。通过该方法来进行布匹瑕疵的检测,准确率相对统计法和光学法要高,但是对于小布匹瑕疵的检测往往不如人意,且在实际应用中存在着检测速度慢的问题。采用深度学习的方法搭建模型,提取产品表面纹理信息及布匹瑕疵的特征信息,并进行布匹瑕疵检测是一个值得研究的内容。
技术实现要素:
本发明的目的在于克服现有技术的缺点与不足,提出了一种基于极限学习机的卷积神经网络布匹瑕疵检测方法,通过构造一个卷积神经网络对产品表面特征进行提取,并对提取到的图片特征进行融合,在融合后的特征层上进行布匹瑕疵候选框的提取。在布匹瑕疵检测阶段,使用卷积神经网络对提取得到的布匹瑕疵候选框进行回归,使用极限学习机对布匹瑕疵候选框进行分类,将输入布匹图片分为有布匹瑕疵和无布匹瑕疵两类,并在此基础上对布匹瑕疵的类别进行细分。使用该方法可以自动的提取出布匹中的布匹瑕疵特征,且结合极限学习机检测快速的特点,可以有效的提高布匹瑕疵检测的整体性能。
为实现上述目的,本发明所提供的技术方案为:一种基于极限学习机的卷积神经网络布匹瑕疵检测方法,包括以下步骤:
1)对输入的图片进行预处理,预处理包括训练集和测试集的划分,切割和翻转,尺寸调整,统一输入图片的尺寸,并对标签进行对应处理,同时对图片像素进行归一化处理,将像素值归一化到[0,1]区间,同时采用k-mean聚类的方法对布匹瑕疵框的形状进行聚类得到九种尺寸的布匹瑕疵框;
2)构建卷积神经网络darknet的特征提取部分,将预处理后的图片输入到卷积神经网络中,进行图片特征的提取;
3)将提取出来的图片特征进行融合,在融合后的特征层上按照设定的尺寸和长宽比提取出布匹瑕疵候选框;
4)对提取出来的布匹瑕疵候选框进行分类和回归操作,其中分类采用极限学习机elm进行,回归采用卷积神经网络进行;
5)对提取得到的布匹瑕疵候选框进行非极大值抑制nms,输出最优质的布匹瑕疵候选框;
6)对分类和回归结果结合样本图片的真实标签计算损失,基于得到的损失使用随机梯度下降法更新网络中的权重;
7)不断重复步骤2)至6)进行迭代训练,直到网络的损失收敛到一个极小值或者达到预设的训练轮数g,便得到训练好的基于极限学习机的布匹瑕疵检测的网络模型;
8)基于训练好的网络模型,即可进行布匹瑕疵的检测,得到布匹瑕疵检测结果。
在步骤1)中,对图片进行预处理,具体如下:
对数据集进行测试集和训练集的划分时,采用分层抽样的方法,将数据集中90%的样本划分为训练集,余下的10%样本划分为测试集;
对图片进行切割时,将图片平均切割成m×n份,其中m为在图片的宽上切割的份数,n为在图片的高上切割的份数,同时需对图片的布匹瑕疵标签进行切割处理;
对图片进行翻转时,包括水平、垂直方向的翻转,同时需对图片的布匹瑕疵标签进行翻转处理;
对图片的尺寸进行调整时,设定缩放比例,在对图片进行缩放时采用双线性插值法;
对图片的像素值进行归一化时,所需的处理步骤为:
1.1)对初始数据集中的图片进行随机采样,样本容量为k,k的取值应当结合数据集的规模进行,采样得到的数据集表示为ds;
1.2)随机切割ds中每张图片尺寸为q×p的一部分,构成数据集dsc;
1.3)计算数据集dsc中所有图片在rgb三个通道上的均值和方差,取其均值mean和方差std;
1.4)利用得到的mean和std对图片进行归一化处理。
所述步骤2)包括以下步骤:
2.1)输入图片首先经过一个卷积核为w1×h1、步长为s1、卷积核个数为kernal_num_1的卷积层,随后进行批标准化层bn,再进行激活,采用的激活函数为leakyrelu,激活后输出特征图f1;其中,w1为卷积核的宽度,h1为卷积核的高度;
2.2)输出的特征图f1经过一个卷积核为w1×h1、步长为s2、卷积核个数为kernal_num_2的卷积层,随后进行批标准化,再进行激活,激活后输出特征图f2;
2.3)构建卷积模块,卷积模块由卷积层、批标准化层、激活层组成,其中批标准化层的权重会在网络训练过程中进行自学习,激活层的参数事先给定,而卷积层的参数大部分会在网络训练过层中通过自学习得到,但是事先需要给定卷积层卷积核的尺寸以及输出通道数,故接下来将用convolutional(输出通道数,卷积核尺寸)表示卷积模块,其中输出通道数的默认值为输入特征图的通道数,采用默认值时简写为convolutional(卷积核尺寸);
构建残差模块residual,残差模块主要由两部分组成,一部分是卷积模块convolutional(w2×h2),另一部分是卷积模块convolutional(w1×h1),在残差模块中输入特征图input_maps,经过convolutional(w2×h2)的作用后得到输出特征图output_maps,output_maps输入到convolutional(w1×h1),经过卷积作用后得到输出特征图output_maps_2,将input_maps和output_maps2进行加法运算后作为残差模块的整体输出output_maps_3,残差模块并不改变输入的通道数和尺寸;
构建卷积集合convolutionset,卷积集合包含n1个卷积模块convolutional(w1×h1)和n2个卷积模块convolutional(w2×h2),这些模块在卷积集合中的具体顺序为:首先输入input_maps经过convolutional(w2×h2),接着经过convolutional(w1×h1),之后再顺序经过convolutional(w2×h2)和convolutional(w1×h1),最后再接一个convolutional(w2×h2),得到的输出便是卷积集合的输出;
构建融合模块fusedblock,融合模块由卷积模块、上采样层和特征图叠加层组成,首先输入input_maps_1经过convolutional(w2×h2),再进行两倍上采样,之后和输入的另一个特征图input_maps_2进行通道叠加,得到的输出便是融合模块的整体输出;
2.4)将得到的特征图f2经过由一个卷积模块convolutional(kernal_num_1,w2×h2)、卷积模块convolutional(kernal_num_2,w1×h1)和一个残差模块顺序连接组成的小网络结构,得到输出特征图f3;
2.5)将特征图f3输入到卷积模块convolutional(kernal_num_3,w1×h1/s2)中,其中参数kernal_num_3表示输出卷积层的个数,“w1×h1/s2”表示该卷积模块中卷积层的卷积核的尺寸为w1×h1,且其步长为s2,得到输出特征图f4;
2.6)将特征图f4输入到m1个顺序连接的小网络中去,其中每个小网络都是由convolutional(kernal_num_2,w2×h2)、convolutional(kernal_num_3,w1×h1)和一个残差模块顺序连接组成,得到输出特征图f5;
2.7)将特征图f5输入到卷积模块convolutional(kernal_num_4,w1×h1/s2)中,得到输出特征图f6;
2.8)将特征图f6输入到m2个顺序连接的小网络中去,其中每个小网络都是由卷积模块convolutional(kernal_num_3,w2×h2)、卷积模块convolutional(kernal_num_4,w1×h1)和一个残差模块顺序连接组成,得到输出特征图f7;
2.9)将特征图f7输入到卷积模块convolutional(kernal_num_5,w1×h1/s2)中,得到输出特征图f8;
2.10)将特征图f8输入到m2个顺序连接的小网络中去,其中每个小网络都是由convolutional(kernal_num_4,w2×h2)、convolutional(kernal_num_5,w1×h1)和一个残差模块顺序连接组成,得到输出特征图f9;
2.11)将特征图f9输入到卷积模块convolutional(kernal_num_6,w1×h1/s2)中,得到输出特征图f10;
2.12)将特征图f10输入到m3个顺序连接的小网络中去,其中每个小网络都是由卷积模块convolutional(kernal_num_5,w2×h2)、卷积模块convolutional(kernal_num_6,w1×h1)和一个残差模块顺序连接组成,得到输出特征图f11;
所述步骤3)包括以下步骤:
3.1)将f11输入到一个卷积集合中,得到特征图f12,后续顺序经过一个卷积模块convolutional(w1×h1)和一个卷积核为w2×h2的卷积层,得到一个特征图f13(kernal_num_6,wstage1×hstage1),其中kernal_num_6是通道数,wstage1×hstage1是特征图的尺寸,基于该特征图中的每一个元素,在原图中提取k种尺度的布匹瑕疵候选框,其中这k种尺度的布匹瑕疵候选框是基于布匹瑕疵的形状进行聚类得到的;
3.2)将f12、f9输入到一个融合模块中,经过融合模块后的输出的特征图f14通道数减半,尺寸放大一倍,将f14送入到一个卷积集合中,得到特征图f15,后续顺序经过一个卷积模块convolutional(w1×h1)和一个卷积核为w2×h2的卷积层,得到一个特征图f16(kernal_num_5,wstage2×hstage2),其中kernal_num_5是通道数,wstage2×hstage2是特征图的尺寸,基于该特征图中的每一个元素,在原图中提取k种尺度的布匹瑕疵候选框;
3.3)将f15、f7输入到一个融合模块中,经过融合模块后的输出f17通道数减半,尺寸放大一倍,将f17送入到一个卷积集合中,得到特征图f18,后续顺序经过一个卷积模块convolutional(w1×h1)和一个卷积核为w2×h2的卷积层,得到一个特征图f19(kernal_num_4,wstage3×hstage3),其中kernal_num_4是通道数,wstage3×hstage3是特征图的尺寸,基于该特征图中的每一个元素,在原图中提取k种尺度的布匹瑕疵候选框。
在步骤4)中,对提取出来的布匹瑕疵候选框进行分类和回归,具体如下:
回归过程中采用4k×(wstage1×hstage1 wstage2×hstage2 wstage3×hstage3)个w2×h2卷积核进行预测每个布匹瑕疵候选框的中心点偏移量和长宽缩放量,4代表每个布匹瑕疵候选框需要进行回归的参数个数,为固定值,k为布匹瑕疵框的种类,wstage1×hstage1,wstage2×hstage2,wstage3×hstage3分别代表特征图的尺寸,w2×h2代表卷积核的尺寸;
分类过程采用极限学习机进行,首先基于每种布匹瑕疵候选框构建一个极限学习机模型,将布匹瑕疵候选框中的元素拉伸成一维向量输入到极限学习机中,通过设定极限学习机中隐层的参数个数,及随机初始化输入权重和偏置能够得到输出权重,从而完成分类,其中极限学习机的构建步骤如下:
4.1)设定隐含层神经元个数,对隐含层和输入层的连接权值w和隐含层神经元的阈值b进行随机取值;
4.2)选取一个无限可微的激活函数,用来计算隐含层输出矩阵h;
4.3)计算输出层权值β:
4.4)令k(xi,xj)表示核函数,则能够将核矩阵定义为:
ωelm=hht:ωelmij=h(xi)·h(xj)=k(xi,xj)
其中,ωelm为核矩阵,ωelmij为核矩阵中第i行第j列元素,h(xi)、h(xj)分别表示xi、xj通过映射函数后的输出;至此,得到基于核函数的加权极限学习机最终的输出函数为:
式中,k(x,xn)表示核函数输出。
在步骤5)中,对提取出来的布匹瑕疵候选框集合s进行非极大值抑制,具体过程如下:
5.1)判断集合s中布匹瑕疵候选框的个数是否大于0,如果不是,则迭代结束;
5.2)按照置信度对集合s中的布匹瑕疵候选框进行排序,选取其中置信度最高者a取出放入集合f中;
5.3)计算布匹瑕疵候选框a与剩下的布匹瑕疵候选框的交并比iou,剔除iou高于设定的iou阈值的布匹瑕疵候选框;
5.4)重复步骤5.1)至5.3),直到集合s中不包含布匹瑕疵候选框,此时集合f即是非极大值抑制完成后的输出。
在步骤6)中,使用的损失函数包括:对于布匹瑕疵定位偏移量损失,使用的损失函数是平方和损失函数;对于布匹瑕疵候选框置信度损失和布匹瑕疵候选框分类损失,使用的损失函数是二分类交叉熵损失函数和多分类交叉熵损失函数;对于布匹瑕疵候选框置信度损失,使用传统的二分类交叉熵损失并不能很好的平衡布匹瑕疵候选框中的正负样本的不平衡性,以及难分和易分样本的不平衡性,因此提出了一种改进型的二分类交叉熵损失;
传统的二分类交叉熵损失为:
其中,s2表示特征图中的元素个数,b表示布匹瑕疵候选框的个数,
其中,αt为控制布匹瑕疵候选框正负样本不平衡性的平衡系数,α为控制αt的超参数,pt为将布匹瑕疵候选框预测为正类的概率,
其中,count(t)表示布匹瑕疵候选框中取值为t的布匹瑕疵候选框的数量,并采用自然界中的黄金分割比来将平衡边界向多数类偏移;
使用加权系数将布匹瑕疵定位偏移量损失、布匹瑕疵候选框置信度损失和布匹瑕疵候选框分类损失进行加权求和得到基于极限学习机的布匹瑕疵检测的网络模型总损失后,基于随机梯度下降法对模型权重进行更新。
本发明与现有技术相比,具有如下优点与有益效果:
1、本发明采用卷积神经网络进行图片特征的提取,通过卷积神经网络的训练自动获得高质量的图片语义信息和分辨率信息。
2、本发明的网络模型中采用了残差模块,残差模块使用恒等映射的方法在网络的输入和输出之间建立起一条直接的关联通道,使得网络集中学习输入和输出之间的残差,有助于防止网络深度增大的过程中出现梯度消失的问题,使得网络变得更容易优化。
3、本发明采用了特征融合模块,通过融合网络中深层的特征图和浅层的特征图,深层的特征图具有高语义信息,而浅层的特征图具有较好的分辨率,融合后可以增强网络对小目标布匹瑕疵的检测能力。
4、本发明的神经网络中使用leakyrelu激活函数,该激活函数的收敛速度快,计算复杂度低,不需要进行指数运算,方便于后向传播,有利于模型快速收敛。
5、本发明在确定布匹瑕疵候选框时采用了k-mean聚类方法,通过训练集中的真实布匹瑕疵框信息,聚类出九种的布匹瑕疵候选框形状,可以真实的反应出数据集中待检测布匹瑕疵的尺寸分布信息,有助于提高模型的分类准确率和定位精度。
6、本发明在分类过程中采用极限学习机作为分类器,极限学习机通过随机设定输入层的权重和偏置,可以自动求取输出层的权重,无需进行反向传播更新权重信息,具有分类速度快,分类准确率好的特点。
附图说明
图1为本发明方法的训练流程图。
图2为本发明方法的模型结构图;其中convolutionalblock表示卷积模块,residualblock表示残差模块,fusedblock表示融合模块,convolutionalset表示卷积集合,leakrelulayer表示激活函数为leakrelu的激活层,upsampling表示采样倍率为2的上采样,concatenate表示特征图相加,regressor表示回归层,conv2d1x1表示卷积核为1x1的卷积网络。
具体实施方式
为更加清楚地表述本发明实施例的目的、技术方案和优点,下面将结合本发明实施例中的附图来对本发明实施例中的技术方案进行全面的描述。需要指出的是本实施例仅是本发明一部分实施例,并不是全部的实施例。基于本发明中的实施例、本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本实施例采用阿里云天池举办的“2019年广东工业智造创新大赛”提供布匹数据集作为实验用数据集。布匹图片数据来自纺织工厂,该数据集共包含布匹瑕疵图片4351张,这4351张图片中共包含15种布匹瑕疵,布匹瑕疵的类别名称为:沾污,错花,水印,花毛,缝头,缝头印,虫粘,破洞,褶子,织疵,漏印,蜡斑,色差,网折,其他,这15种布匹瑕疵不平衡分布于各张布匹瑕疵图片中。在本文的任务中,需要对图片中的布匹瑕疵进行检测,检测过程包括布匹瑕疵图片有无布匹瑕疵的判别,有布匹瑕疵图片中布匹瑕疵种类的判别,有布匹瑕疵图片中布匹瑕疵位置的定位三个方面。
本文采用的评价指标为分类准确率acc,以及用于判定模型定位精度的指标map。对于二分类问题,其混淆矩阵为:
表1二分类问题的混淆矩阵
其中,tp表示正确预测的正类样本的个数,fn表示错误预测的正类样本的个数,fp表示错误预测的负类样本的个数,tn表示正确预测的负类样本的个数。二分类问题的分类准确率基于混淆矩阵可定义如下:
如图1和图2所示,基于极限学习机的卷积神经网络布匹瑕疵检测方法在本例的具体实施过程如下:
1)对输入的图片进行预处理,预处理包括训练集和测试集的划分,切割和翻转,尺寸调整,统一输入图片的尺寸,同时对图片像素进行归一化处理,将像素值归一化到[0,1]区间,同时采用k-mean聚类方法得到九种尺寸的瑕疵框,具体过程如下:
1.1)将原始数据集划分为训练集和测试集,其中训练集xoriginal_train占原始数据集的90%,在本实施示例中为3916张样本图片,训练集中的样本均通过无放回的随机采样得到,剩下的435张图片将作为测试集xoriginal_val;
1.2)对训练集xoriginal_train进行数据增强操作,数据增强包括切割和翻转。原始训练样本图片的分辨率最大为4096x1810,对该图片进行中心2x2的切割,即将原始样本图片平均切割成4份,每一份的最大分辨率为2048x905,对切割完成后的每一张图片进行水平、垂直方向上的翻转,翻转完成后,训练数据集xtrain是初始训练数据集的16倍,即参与模型训练的图片有62656张;
1.3)对样本图片的标签进行增强,从原始的标签文件yoriginal_train中,将对应训练数据集xtrain中的每张图片的布匹瑕疵取出,重新设定其图片名以及其在布匹瑕疵图片中的位置;
1.4)对训练数据集xtrain中的图片进行像素值归一化,归一化的具体操作为:
1.4.1)对训练集中的图片进行随机采样,样本容量为800,样本集合为xnorm;
1.4.2)在每张样本图片中随机切割出大小为32×32的一部分,计算其在r,g,b这3个通道上的均值meani和方差stdi,其中i={1,2,……,n},n为输入图片数量;
1.4.3)计算样本集合xnorm在r,g,b这3个通道上的均值和方差的平均值为mean和std,利用得到的均值和方差对图片进行归一化处理,归一化的公式为
其中xoriginal表示输入图像矩阵,xnorm表示归一化后的图像矩阵,adjusted_std是调整后的方差,为
2)构建卷积神经网络darknet的特征提取部分,将预处理后的图片输入到卷积神经网络中,进行图片特征的提取,具体如下:
2.1)输入图片首先经过一个卷积核为3x3,步长为1,卷积核个数为32的卷积层,随后进行批标准化,再进行激活,激活后输出特征图f1;
2.2)输出的特征图f1经过一个卷积核为3x3,步长为2,卷积核个数为64的卷积层,随后进行批标准化,再进行激活,激活后输出特征图f2;
2.3)构建卷积模块,卷积模块由三个部分组成,卷积层、批标准化层、激活层;
2.4)构建残差模块(residual),残差模块主要由两部分组成,一部分是卷积模块convolutional(输出通道数,1x1),另一部分是卷积模块convolutional(输出通道数,3x3)。在残差模块中输入特征图input_maps,经过convolutional(输出通道数,1x1)的作用后得到输出特征图output_maps,output_maps输入到convolutional(输出通道数,3x3),经过卷积作用后得到输出特征图output_maps_2,将input_maps和output_maps2进行加法运算后作为残差模块的整体输出output_maps_3;
2.5)构建卷积集合(convolutionset),卷积集合中包含5个部分,其中有两个卷积模块convolutional(3x3),和三个卷积模块convolutional(1x1),这些模块在卷积集合中的具体顺序为,首先输入input_maps经过convolutional(1x1),接着经过convolutional(3x3),之后再顺序经过convolutional(1x1)和convolutional(3x3),最后再接一个convolutional(1x1),得到的输出便是卷积集合的输出;
2.6)构建融合模块(fusedblock),融合模块由三部分组成,分别是卷积模块,上采样层和特征图叠加层,首先输入input_maps_1经过convolutional(1x1),再进行两倍上采样,之后和输入的另一个特征图input_maps_2进行通道叠加,得到的输出便是融合模块的整体输出;
2.7)将得到的特征图f2经过由一个卷积模块convolutional(32,1x1)、卷积模块convolutional(64,3x3)和一个残差模块顺序连接组成的小网络结构,得到输出特征图f3
2.8)将特征图f3输入到卷积模块convolutional(128,3x3/2)中,其中参数“3x3/2”表示该卷积模块中卷积层的卷积核的尺寸为3x3,且其步长为2,得到输出特征图f4;
2.9)将特征图f4输入到两个顺序连接的小网络中去,其中每个小网络都是由卷积模块convolutional(64,1x1)、卷积模块convolutional(128,3x3)和一个残差模块顺序连接组成,得到输出特征图f5;
2.10)将特征图f5输入到卷积模块convolutional(256,3x3/2)中,得到输出特征图f6;
2.11)将特征图f6输入到八个顺序连接的小网络中去,其中每个小网络都是由卷积模块convolutional(128,1x1)、卷积模块convolutional(256,3x3)和一个残差模块顺序连接组成,得到输出特征图f7;
2.12)将特征图f7输入到卷积模块convolutional(512,3x3/2)中,得到输出特征图f8;
2.13)将特征图f8输入到八个顺序连接的小网络中去,其中每个小网络都是由卷积模块convolutional(256,1x1)、卷积模块convolutional(512,3x3)和一个残差模块顺序连接组成,得到输出特征图f9;
2.14)将特征图f9输入到卷积模块convolutional(1024,3x3/2)中,得到输出特征图f10;
2.15)将特征图f10输入到四个顺序连接的小网络中去,其中每个小网络都是由卷积模块convolutional(512,1x1)、卷积模块convolutional(1024,3x3)和一个残差模块顺序连接组成,得到输出特征图f11;
3)将提取出来的图片特征进行融合,在融合后的特征层上按照设定的尺寸和长宽比提取出布匹瑕疵候选框,具体如下:
3.1)将提取得到的特征图f11输入到一个卷积集合中,得到特征图f12,随后顺序经过一个卷积模块convolutional(3x3)和一个卷积核为1x1的卷积层,得到一个特征图f13(1024,13x13)其中1024是通道数,13x13是特征图的尺寸,基于该特征图中的每一个元素,在原图中提取1种尺度,3种长宽比的布匹瑕疵候选框,其中这1种尺度和3种长宽比布匹瑕疵候选框是基于布匹瑕疵的形状进行聚类得到的本实施例种,最优尺度为400x200,长宽比为1:2,1:1,2:1;
3.2)将特征图f12,特征提取网络中的特征图f9输入到一个融合模块中,经过融合模块后的输出f14通道数减半,尺寸放大一倍,将f14送入到一个卷积集合中,得到特征图f15,后续顺序经过一个卷积模块convolutional(3x3)和一个卷积核为1x1的卷积层,得到一个特征图f16(512,26x26),基于该特征图中的每一个元素,在原图中提取1种尺度,3种长宽比的布匹瑕疵候选框,本实施例中,最优尺度为200x100,长宽比为1:2,1:1,2:1;
3.3)将特征图f15,图片特征提取网络中的特征图f7输入到一个融合模块中,经过融合模块后的输出f17通道数减半,尺寸放大一倍,将f17送入到一个卷积集合中,得到特征图f18,后续顺序经过一个卷积模块convolutional(3x3)和一个卷积核为1x1的卷积层,得到一个特征图f19(256,52x52),基于该特征图中的每一个元素,在原图中提取1种尺度,3种长宽比的布匹瑕疵候选框,本实施例种,最优尺度为40x20,长宽比为1:2,1:1,2:1;
4)对提取出来的布匹瑕疵候选框进行分类和回归操作,其中分类采用极限学习机elm进行,回归采用卷积神经网络进行,具体如下:
回归过程中采用3×(13×13)×4 3×(26×26)×4 3×(52×52)×4个1x1卷积核进行预测每个布匹瑕疵候选框框的中心点偏移量和长宽缩放量,布匹瑕疵框回归的过程具体包括:
bx=σ(tx) cx
by=σ(ty) cy
其中,bh和bw分别表示预测框的长宽,pw和ph分别表示先验框的宽和长,在本实施例中,其值为(157,69)、(314,138)、(628,276),tw和th表示预测框与先验框的比值,tx和ty表示的是物体中心距离网格左上角位置的偏移量,cx和cy则代表网格左上角的坐标,σ()表示sigmoid函数:
其中,tx,ty,tw和th为回归网络的预测输出。
分类过程采用极限学习机进行,首先基于每种布匹瑕疵候选框构建一个极限学习机模型,将布匹瑕疵候选框中的元素拉伸成一维向量输入到极限学习机中,通过设定极限学习机中隐层的参数个数,及随机初始化输入权重和偏置可以得到输出权重,从而完成分类:
极限学习机的建立基于两个定理:
定理1:给定数量为n的样本
定理2:对于样本
从定理1来看,若输入层神经元个数等于隐含层神经元个数,则对于wi和bi的任意取值,slfn都能实现对训练样本的预测误差为零,即:
其中yj=[y1j,y2j,...,ymj]t(j=1,2,...,q),为预测输出。
但实际上,如果训练样本数q过大,那么将产生巨大的计算量。因此,通常取隐含层神经元个数k比q小的数,由定理2可知,slfn对样本的预测误差逼近一个无穷小的数ε>0时,即:
对隐藏层取一个无限可微的激活函数g(x)时,slfn的权值和阈值不必要全部进行调整,在训练前可随机选择w和b,且确定之后不受训练过程的影响。而通过求解以下方程组的最小二乘解可以获得隐含层和输出层的连接权值β:
其解为:
β=h m
其中h 为隐含层输出矩阵horre-penrose广义逆。根据正交投影法(kkt),当hth或hht为非奇异矩阵时,可以得到h =(hth)-1ht或h =ht(hth)-1。可以得到解的形式为:
其中c为权衡最小错误风险和最大结构风险的正则化参数。
具体的,elm算法主要有以下几个步骤:
4.2.1)设定隐含层神经元个数,对隐含层和输入层的连接权值w和隐含层神经元的阈值b进行随机取值;
4.2.2)选取一个无限可微的激活函数,用来计算隐含层输出矩阵h;
4.2.3)计算输出层权值β:
4.2.4)令k(xi,xj)表示核函数,则可以将核矩阵定义为:
ωelm=hht:ωelmij=h(xi)·h(xj)=k(xi,xj)
至此,可以得到基于核函数的加权极限学习机最终的输出函数为:
5)对提取得到的布匹瑕疵候选框进行非极大值抑制nms,输出最优质的布匹瑕疵候选框,具体如下:
5.1)判断集合s中布匹瑕疵候选框的个数是否大于0,如果不是,则迭代结束;
5.2)按照置信度对集合s中的布匹瑕疵候选框进行排序,选取其中置信度最高者a取出放入集合f中;
5.3)计算布匹瑕疵候选框a与剩下的布匹瑕疵候选框的交并比iou,剔除iou高于设定的iou阈值的布匹瑕疵候选框,在本实施例中,iou阈值设置为0.5;
5.4)重复步骤5.1)至5.3),直到集合s中不包含布匹瑕疵候选框,此时集合f即是非极大值抑制完成后的输出。
6)使用的损失函数包括:对于布匹瑕疵定位偏移量损失,使用的损失函数是平方和损失函数;对于布匹瑕疵候选框置信度损失和布匹瑕疵候选框分类损失,使用的损失函数是二分类交叉熵损失函数和多分类交叉熵损失函数;对于布匹瑕疵候选框置信度损失,使用传统的二分类交叉熵损失并不能很好的平衡布匹瑕疵候选框中的正负样本的不平衡性,以及难分和易分样本的不平衡性,因此提出了一种改进型的二分类交叉熵损失;
传统的二分类交叉熵损失为:
其中,s2表示特征图中的元素个数,b表示布匹瑕疵候选框的个数,
其中,αt为控制布匹瑕疵候选框正负样本不平衡性的平衡系数,α为控制αt的超参数,pt为将布匹瑕疵候选框预测为正类的概率,
其中,count(t)表示布匹瑕疵候选框中取值为t的布匹瑕疵候选框的数量,并采用自然界中的黄金分割比来将平衡边界向多数类偏移;
使用加权系数将布匹瑕疵定位偏移量损失、布匹瑕疵候选框置信度损失和布匹瑕疵候选框分类损失进行加权求和得到基于极限学习的布匹瑕疵检测的网络模型总损失后,基于随机梯度下降法对模型权重进行更新,随机梯度下降法的参数设置:学习率为0.00125,权重衰减为0.0005,冲量为0.9,并且设置训练的迭代次数g为60。
7)不断重复步骤2)至6)进行迭代训练,直到网络的损失收敛到一个极小值或者达到预设的训练轮数,便可得到训练好的基于极限学习的布匹瑕疵检测的网络模型。
8)基于训练好的网络模型,即可进行布匹瑕疵的检测,得到布匹瑕疵检测结果。
实验结果显示,使用基于极限学习机的布匹瑕疵检测的网络模型进行布匹的布匹瑕疵检测,其准确率可以达到87.08%,map值可以达到31.87%,而使用普通的yolov3算法进行布匹布匹瑕疵检测,其准确率为78.85%,map值为30.21%,而使用传统的检测方法,其只能对检测到样本中有无布匹瑕疵,且检测准确率为78%。由此可知本发明所采用的算法比较适合于布匹瑕疵检测问题。
综上所述,本发明针对布匹瑕疵检测问题,重点研究了基于极限学习机的卷积神经网络布匹瑕疵检测方法。该方法通过构造一个卷积神经网络来进行图片特征的提取,且在卷积神经网络构建的过层中引入了残差结构和特征融合结构,使得网络加深的过程中不会发生梯度消失的现象,且增强了网络提取小布匹瑕疵的能力,基于得到的特征图,使用多种尺度的布匹瑕疵候选框进行布匹瑕疵的提取,同时结合使用极限学习机对布匹瑕疵候选框进行分类,在保证检测速度的前提下提高了布匹瑕疵检出的准确率,值得推广。
上述实施例为本发明效果较好的实施方式,但本发明的实施方式并不受上述实施例的限制,其他的任何未背离本发明的精神实质与原理下所作的改变、修饰、替代、组合、简化,均应为等效的置换方式,都包含在本发明的保护范围之内。
1.一种基于极限学习机的卷积神经网络布匹瑕疵检测方法,其特征在于,包括以下步骤:
1)对输入的图片进行预处理,预处理包括训练集和测试集的划分,切割和翻转,尺寸调整,统一输入图片的尺寸,并对标签进行对应处理,同时对图片像素进行归一化处理,将像素值归一化到[0,1]区间,同时采用k-mean聚类的方法对布匹瑕疵框的形状进行聚类得到九种尺寸的布匹瑕疵框;
2)构建卷积神经网络darknet的特征提取部分,将预处理后的图片输入到卷积神经网络中,进行图片特征的提取;
3)将提取出来的图片特征进行融合,在融合后的特征层上按照设定的尺寸和长宽比提取出布匹瑕疵候选框;
4)对提取出来的布匹瑕疵候选框进行分类和回归操作,其中分类采用极限学习机elm进行,回归采用卷积神经网络进行;
5)对提取得到的布匹瑕疵候选框进行非极大值抑制nms,输出最优质的布匹瑕疵候选框;
6)对分类和回归结果结合样本图片的真实标签计算损失,基于得到的损失使用随机梯度下降法更新网络中的权重;
7)不断重复步骤2)至6)进行迭代训练,直到网络的损失收敛到一个极小值或者达到预设的训练轮数g,便得到训练好的基于极限学习机的布匹瑕疵检测的网络模型;
8)基于训练好的网络模型,即可进行布匹瑕疵的检测,得到布匹瑕疵检测结果。
2.根据权利要求1所述的一种基于极限学习机的卷积神经网络布匹瑕疵检测方法,其特征在于,在步骤1)中,对图片进行预处理,具体如下:
对数据集进行测试集和训练集的划分时,采用分层抽样的方法,将数据集中90%的样本划分为训练集,余下的10%样本划分为测试集;
对图片进行切割时,将图片平均切割成m×n份,其中m为在图片的宽上切割的份数,n为在图片的高上切割的份数,同时需对图片的布匹瑕疵标签进行切割处理;
对图片进行翻转时,包括水平、垂直方向的翻转,同时需对图片的布匹瑕疵标签进行翻转处理;
对图片的尺寸进行调整时,设定缩放比例,在对图片进行缩放时采用双线性插值法;
对图片的像素值进行归一化时,所需的处理步骤为:
1.1)对初始数据集中的图片进行随机采样,样本容量为k,k的取值应当结合数据集的规模进行,采样得到的数据集表示为ds;
1.2)随机切割ds中每张图片尺寸为q×p的一部分,构成数据集dsc;
1.3)计算数据集dsc中所有图片在rgb三个通道上的均值和方差,取其均值mean和方差std;
1.4)利用得到的mean和std对图片进行归一化处理。
3.根据权利要求1所述的一种基于极限学习机的卷积神经网络布匹瑕疵检测方法,其特征在于,所述步骤2)包括以下步骤:
2.1)输入图片首先经过一个卷积核为w1×h1、步长为s1、卷积核个数为kernal_num_1的卷积层,随后进行批标准化层bn,再进行激活,采用的激活函数为leakyrelu,激活后输出特征图f1;其中,w1为卷积核的宽度,h1为卷积核的高度;
2.2)输出的特征图f1经过一个卷积核为w1×h1、步长为s2、卷积核个数为kernal_num_2的卷积层,随后进行批标准化,再进行激活,激活后输出特征图f2;
2.3)构建卷积模块,卷积模块由卷积层、批标准化层、激活层组成,其中批标准化层的权重会在网络训练过程中进行自学习,激活层的参数事先给定,而卷积层的参数大部分会在网络训练过层中通过自学习得到,但是事先需要给定卷积层卷积核的尺寸以及输出通道数,故接下来将用convolutional(输出通道数,卷积核尺寸)表示卷积模块,其中输出通道数的默认值为输入特征图的通道数,采用默认值时简写为convolutional(卷积核尺寸);
构建残差模块residual,残差模块主要由两部分组成,一部分是卷积模块convolutional(w2×h2),另一部分是卷积模块convolutional(w1×h1),在残差模块中输入特征图input_maps,经过convolutional(w2×h2)的作用后得到输出特征图output_maps,output_maps输入到convolutional(w1×h1),经过卷积作用后得到输出特征图output_maps_2,将input_maps和output_maps2进行加法运算后作为残差模块的整体输出output_maps_3,残差模块并不改变输入的通道数和尺寸;
构建卷积集合convolutionset,卷积集合包含n1个卷积模块convolutional(w1×h1)和n2个卷积模块convolutional(w2×h2),这些模块在卷积集合中的具体顺序为:首先输入input_maps经过convolutional(w2×h2),接着经过convolutional(w1×h1),之后再顺序经过convolutional(w2×h2)和convolutional(w1×h1),最后再接一个convolutional(w2×h2),得到的输出便是卷积集合的输出;
构建融合模块fusedblock,融合模块由卷积模块、上采样层和特征图叠加层组成,首先输入input_maps_1经过convolutional(w2×h2),再进行两倍上采样,之后和输入的另一个特征图input_maps_2进行通道叠加,得到的输出便是融合模块的整体输出;
2.4)将得到的特征图f2经过由一个卷积模块convolutional(kernal_num_1,w2×h2)、卷积模块convolutional(kernal_num_2,w1×h1)和一个残差模块顺序连接组成的小网络结构,得到输出特征图f3;
2.5)将特征图f3输入到卷积模块convolutional(kernal_num_3,w1×h1/s2)中,其中参数kernal_num_3表示输出卷积层的个数,“w1×h1/s2”表示该卷积模块中卷积层的卷积核的尺寸为w1×h1,且其步长为s2,得到输出特征图f4;
2.6)将特征图f4输入到m1个顺序连接的小网络中去,其中每个小网络都是由convolutional(kernal_num_2,w2×h2)、convolutional(kernal_num_3,w1×h1)和一个残差模块顺序连接组成,得到输出特征图f5;
2.7)将特征图f5输入到卷积模块convolutional(kernal_num_4,w1×h1/s2)中,得到输出特征图f6;
2.8)将特征图f6输入到m2个顺序连接的小网络中去,其中每个小网络都是由卷积模块convolutional(kernal_num_3,w2×h2)、卷积模块convolutional(kernal_num_4,w1×h1)和一个残差模块顺序连接组成,得到输出特征图f7;
2.9)将特征图f7输入到卷积模块convolutional(kernal_num_5,w1×h1/s2)中,得到输出特征图f8;
2.10)将特征图f8输入到m2个顺序连接的小网络中去,其中每个小网络都是由convolutional(kernal_num_4,w2×h2)、convolutional(kernal_num_5,w1×h1)和一个残差模块顺序连接组成,得到输出特征图f9;
2.11)将特征图f9输入到卷积模块convolutional(kernal_num_6,w1×h1/s2)中,得到输出特征图f10;
2.12)将特征图f10输入到m3个顺序连接的小网络中去,其中每个小网络都是由卷积模块convolutional(kernal_num_5,w2×h2)、卷积模块convolutional(kernal_num_6,w1×h1)和一个残差模块顺序连接组成,得到输出特征图f11;
所述步骤3)包括以下步骤:
3.1)将f11输入到一个卷积集合中,得到特征图f12,后续顺序经过一个卷积模块convolutional(w1×h1)和一个卷积核为w2×h2的卷积层,得到一个特征图f13(kernal_num_6,wstage1×hstage1),其中kernal_num_6是通道数,wstage1×hstage1是特征图的尺寸,基于该特征图中的每一个元素,在原图中提取k种尺度的布匹瑕疵候选框,其中这k种尺度的布匹瑕疵候选框是基于布匹瑕疵的形状进行聚类得到的;
3.2)将f12、f9输入到一个融合模块中,经过融合模块后的输出的特征图f14通道数减半,尺寸放大一倍,将f14送入到一个卷积集合中,得到特征图f15,后续顺序经过一个卷积模块convolutional(w1×h1)和一个卷积核为w2×h2的卷积层,得到一个特征图f16(kernal_num_5,wstage2×hstage2),其中kernal_num_5是通道数,wstage2×hstage2是特征图的尺寸,基于该特征图中的每一个元素,在原图中提取k种尺度的布匹瑕疵候选框;
3.3)将f15、f7输入到一个融合模块中,经过融合模块后的输出f17通道数减半,尺寸放大一倍,将f17送入到一个卷积集合中,得到特征图f18,后续顺序经过一个卷积模块convolutional(w1×h1)和一个卷积核为w2×h2的卷积层,得到一个特征图f19(kernal_num_4,wstage3×hstage3),其中kernal_num_4是通道数,wstage3×hstage3是特征图的尺寸,基于该特征图中的每一个元素,在原图中提取k种尺度的布匹瑕疵候选框。
4.根据权利要求1所述的一种基于极限学习机的卷积神经网络布匹瑕疵检测方法,其特征在于,在步骤4)中,对提取出来的布匹瑕疵候选框进行分类和回归,具体如下:
回归过程中采用4k×(wstage1×hstage1 wstage2×hstage2 wstage3×hstage3)个w2×h2卷积核进行预测每个布匹瑕疵候选框的中心点偏移量和长宽缩放量,4代表每个布匹瑕疵候选框需要进行回归的参数个数,为固定值,k为布匹瑕疵框的种类,wstage1×hstage1,wstage2×hstage2,wstage3×hstage3分别代表特征图的尺寸,w2×h2代表卷积核的尺寸;
分类过程采用极限学习机进行,首先基于每种布匹瑕疵候选框构建一个极限学习机模型,将布匹瑕疵候选框中的元素拉伸成一维向量输入到极限学习机中,通过设定极限学习机中隐层的参数个数,及随机初始化输入权重和偏置能够得到输出权重,从而完成分类,其中极限学习机的构建步骤如下:
4.1)设定隐含层神经元个数,对隐含层和输入层的连接权值w和隐含层神经元的阈值b进行随机取值;
4.2)选取一个无限可微的激活函数,用来计算隐含层输出矩阵h;
4.3)计算输出层权值β:
4.4)令k(xi,xj)表示核函数,则能够将核矩阵定义为:
ωelm=hht:ωelmij=h(xi)·h(xj)=k(xi,xj)
其中,ωelm为核矩阵,ωelmij为核矩阵中第i行第j列元素,h(xi)、h(xj)分别表示xi、xj通过映射函数后的输出;至此,得到基于核函数的加权极限学习机最终的输出函数为:
式中,k(x,xn)表示核函数输出。
5.根据权利要求1所述的一种基于极限学习机的卷积神经网络布匹瑕疵检测方法,其特征在于,在步骤5)中,对提取出来的布匹瑕疵候选框集合s进行非极大值抑制,具体过程如下:
5.1)判断集合s中布匹瑕疵候选框的个数是否大于0,如果不是,则迭代结束;
5.2)按照置信度对集合s中的布匹瑕疵候选框进行排序,选取其中置信度最高者a取出放入集合f中;
5.3)计算布匹瑕疵候选框a与剩下的布匹瑕疵候选框的交并比iou,剔除iou高于设定的iou阈值的布匹瑕疵候选框;
5.4)重复步骤5.1)至5.3),直到集合s中不包含布匹瑕疵候选框,此时集合f即是非极大值抑制完成后的输出。
6.根据权利要求1所述的一种基于极限学习机的卷积神经网络布匹瑕疵检测方法,其特征在于,在步骤6)中,使用的损失函数包括:对于布匹瑕疵定位偏移量损失,使用的损失函数是平方和损失函数;对于布匹瑕疵候选框置信度损失和布匹瑕疵候选框分类损失,使用的损失函数是二分类交叉熵损失函数和多分类交叉熵损失函数;对于布匹瑕疵候选框置信度损失,使用传统的二分类交叉熵损失并不能很好的平衡布匹瑕疵候选框中的正负样本的不平衡性,以及难分和易分样本的不平衡性,因此提出了一种改进型的二分类交叉熵损失;
传统的二分类交叉熵损失为:
其中,s2表示特征图中的元素个数,b表示布匹瑕疵候选框的个数,
其中,αt为控制布匹瑕疵候选框正负样本不平衡性的平衡系数,α为控制αt的超参数,pt为将布匹瑕疵候选框预测为正类的概率,
其中,count(t)表示布匹瑕疵候选框中取值为t的布匹瑕疵候选框的数量,并采用自然界中的黄金分割比来将平衡边界向多数类偏移;
使用加权系数将布匹瑕疵定位偏移量损失、布匹瑕疵候选框置信度损失和布匹瑕疵候选框分类损失进行加权求和得到基于极限学习机的布匹瑕疵检测的网络模型总损失后,基于随机梯度下降法对模型权重进行更新。
技术总结