基于Mask R-CNN的磁瓦表面缺陷检测算法
2022-06-02郭龙源段厚裕周武威童光红吴健辉欧先锋李武劲
郭龙源,段厚裕,周武威,童光红,吴健辉,欧先锋,李武劲
(湖南理工学院 信息科学与工程学院,湖南 岳阳 414006)
0 引言
磁瓦是电机的重要组成部件,磁瓦表面存在缺陷会导致电机的性能下降,因此磁瓦表面缺陷检测是磁瓦生产过程中必要的工序。然而,磁瓦图像往往存在对比度较低、纹理背景复杂和图像整体亮度分布不均等问题,导致磁瓦表面缺陷检测难度较大。针对磁瓦表面缺陷检测中存在的多种问题,研究人员开展了深入的研究,并获得了一些成果。余永维等[1]提出一种基于自适应滤波的缺陷分割方法,该方法通过弱化缺陷来构建背景模型,然后将背景模型与原图对比得到缺陷图像,较好地解决了不同类型缺陷的检测,但该方法未考虑孤立噪声点,很容易造成缺陷过检;张振尧等[2]提出一种改进的RElisf算法,实现了磁瓦表面缺陷检测时特征的离线自动选择,提高了对磁瓦图像缺陷检测的准确率,但是该方法参数量较大,通用性较差;林丽君等[3]提出一种基于小波模极大值的磁瓦裂纹边缘缺陷检测算法,降低了背景图像纹理对磁瓦裂纹缺陷检测的影响,但是该方法主要针对裂纹缺陷,算法泛化能力较弱;郑晓曦等[4]通过选择合适的结构元素,利用数学形态学处理提取缺陷轮廓,但其检测效果一般。以上算法由于算法复杂、鲁棒性较差以及容易过检,通常难以满足工业应用要求[5-6]。
自2006年以来,研究者提出了许多卷积神经网络[7](Convolutional Neural Network,CNN)算法并应用于各种领域,而在缺陷检测领域中,研究人员也获得了许多成果。熊红林等[8]提出一种基于多尺度卷积神经网络的图像识别模型,用于玻璃表面缺陷检测,实现了准确、快速地对缺陷进行检测;CHEN等[9]提出一种多光谱卷积神经网络模型来检测太阳能电池的表面缺陷,该模型能有效地识别复杂纹理背景特征和缺陷特征;TABERNIK等[10]提出一种基于分割的深度学习方法用于缺陷检测,该方法仅使用约27张图片进行训练,而不像一般的深度学习方法需要成百上千张图片进行训练,这使得该方法可被用于缺陷样本受限的工业场景;HE等[11]提出一种基于回归和分类的缺陷检测框架,该框架包括基于深度回归的检测模型、像素级的误报率降低、连通分量分析和缺陷类型分类的深度网络4个模块,该框架的检测精度和检测效率均较高;常海涛等[12]将加速区域卷积神经网络[13](Faster Region-based Convolutional Neural Network,Faster R-CNN)应用到缺陷检测中,取得了较好的检测效果。这些方法虽然针对高对比度缺陷检测效果良好,但是对于小目标缺陷、低对比度缺陷时效果不理想。因此,本文在以上研究的基础上,提出一种基于掩膜区域卷积神经网络[14](Mask Region-based Convolutional Neural Network,Mask R-CNN)的磁瓦表面缺陷检测算法,首先采用残差网络[15](Residual Network 50,ResNet50)构建特征金字塔网络(Feature Pyramid Network,FPN)[16],以提取图像中不同类型缺陷的高维抽象特征,然后通过区域建议网络(Region Proposal Network,RPN)来标记缺陷候选区域即感兴趣区域(Region of Interest,ROI),最后在ROI中使用全卷积网络[17](Fully Convolutional Network, FCN)来生成缺陷掩模图,同时可以预测每个ROI的类别和相应锚框坐标。本文网络的训练和测试均在MXNet深度学习框架中进行。
1 掩膜区域卷积网络(Mask R-CNN)算法
1.1 传统算法的难点
传统算法中缺陷检测通常包括3个步骤:①针对不同缺陷以及背景确定打光方案;②根据成像的缺陷特征设计特征提取算法;③根据提取的特征对原图像素点进行分类或聚类。这就要求分割的缺陷有较明显的特征,如对比度、纹理特征或较清晰的边缘轮廓等。如轮廓分割算法会根据缺陷与非缺陷区域间的灰度差别找到两者间的合理边缘轮廓,然后根据这个边缘轮廓将缺陷和非缺陷区域分割开。
磁瓦缺陷缺乏明显的对比度,而且不同的磁瓦缺陷具有不同的颜色特征。如磁瓦的裂纹缺陷颜色偏暗,缺口缺陷则偏亮,并且同一类型的缺陷颜色也不尽相同。其次,磁瓦缺陷边缘不具备特定的轮廓,故无法像树木或者人体那样通过特定轮廓进行分割。最后,磁瓦本身复杂的纹理背景也给分割增加了难度。
1.2 卷积神经网络在表面缺陷检测的应用
因为磁瓦缺陷存在上述特点,应用传统算法虽然可以较好地解决磁瓦某类缺陷的问题,但是很难设计出能适用于检测不同种类磁瓦缺陷的算法,所以传统分割算法针对不同种类的磁瓦缺陷需要设计不同的检测算法,从而增加了工业检测算法的复杂度。本文利用卷积神经网络能够自学习缺陷的特征,来解决不同类型磁瓦缺陷检测的难题。目前主流的基于卷积神经网络的分割算法包括全卷积网络[17](FCN)、金字塔场景解析网络[18](Pyramid scene parsing Network, PspNet)、Deeplabv3和Mask R-CNN算法。本文对Mask R-CNN算法进行了改进,并应用到磁瓦表面缺陷检测中。
1.3 掩膜区域卷积网络的算法描述
1.3.1 掩膜区域卷积网络的主体结构
Mask R-CNN是HE等[14]基于Faster R-CNN提出的新的卷积神经网络,可实现实例分割。该方法不仅能有效地检测目标,还能完成对目标高质量的语义分割。其主要思路是:在原始Faster R-CNN基础上添加一个分支实现对目标的语义分割。Mask R-CNN应用FPN改进了特征提取网络,较好地解决了FCN和基于FCN的分割网络(Segmentation Net,SegNet)[20]经过特征提取层后语义信息丢失严重的问题,大幅提升了对小目标缺陷的分割;对于PspNet和Deeplabv3缺陷轮廓分割不清晰的情况,Mask R-CNN 将兴趣区域对齐层替换成兴趣区域池化层,即通过双线性插值进一步利用特征图上的空间信息,从而预测出更准确的缺陷轮廓。Mask R-CNN整体结构如图1所示,Mask R-CNN首先使用基于ResNet50的FPN提取出缺陷图像的特征图,然后使用RPN生成目标的建议框,并使用非极大值抑制(Non-Maximum Suppresion,NMS)[21]算法筛选得到ROI,最后对每个ROI进行类别预测、边界框预测以及目标的二值化掩膜。
1.3.2 损失函数
对于卷积神经网络来说,损失函数反映了预测值与真实值之间的差异,Mask R-CNN的损失函数定义为:
Loss=Lcls+Lbox+Lmask。
(1)
式中:Lcls为分类损失;Lbox为边界框(bounding box)回归误差;Lmask为分支FCN分割损失。
(2)
(3)
(4)
Lmask=(km2)i。
(5)
式中:k表示分类物体的种类数目;m2表示掩膜分支对每个锚框产生的m×m大小的掩码。
2 特征金字塔网络的改进
2.1 特征金字塔网络(FPN)结构介绍
FPN是将ResNet50网络中特征图(feature map)大小相同的层归为一个阶段(stage),即将ResNet50结构中的卷积块Conv2、卷积块Conv3、卷积块Conv4和卷积块Conv5对应FPN中的stage 2、stage 3、stage 4和stage 5。底层的stage与上一层的stage进行图像融合形成对应的P2~P5结构。将融合后的结构进行3×3的卷积,以消除图像融合的混叠效应,并单独将P5进行0.5倍下采样,形成P6结构。对于整个FPN结构而言,共有P2~P6五个输出,不同输出的特征图上对应的目标大小也不同,因此使用P2~P6作为RPN的输入,需要确定不同的ROI对应的不同特征层,大尺寸ROI使用高层特征层,如P4;小尺寸ROI使用底层的特征层,如P3。本文确定ROI对应特征层l的方法定义如式(6)所示:
(6)
式中:l为特征层的序号;224为ImageNet图像分类的标准输入;l0为标准值,设置为4;w和h是ROI区域的宽和高;[*]表示取整。假设ROI为112×112的大小,则l=l0-1=4-1=3,意味着该ROI对应P3的特征层。
2.2 本文的改进网络模块
由于Mask R-CNN中FPN结构是针对MSCOCO数据集而设计的,该数据集大部分图片分辨率为1 024×1 024,而磁瓦的图片分辨率仅为494×648,本文取消了ResNet50的Conv1的池化层(pooling),直接获取类似尺寸的FPN-Feature Map,修改后的结构如图2中C1模块所示。
尽管FPN通过融合低层和高层特征图的特征来达到更好的预测效果,但是由于磁瓦的纹理特征比较复杂,而且磁瓦缺陷的成像对比度较低,本文将限制对比度自适应直方图均衡化[22](Contrast Limited Adaptive Histogram Equalization,CLAHE)预处理模块加在Mask R-CNN的特征提取层前,增加的模块如图2所示。
2.3 限制对比度的自适应直方图均衡化预处理模块设计
本文通过对自适应直方图均衡(Adaptive Histogram Equalization,AHE)的对比度限幅来实现CLAHE。在预处理模块中,CLAHE对每个小区域进行了对比度限幅,同时通过限制AHE算法的对比度,克服了AHE的过度放大噪声问题。
模块通过变换函数的斜度来放大给定像素周围的对比度,其中斜度和其累积直方图斜度成正比。先利用预先设定的阈值来裁剪直方图;然后通过计算累积分布函数(Cumulative Distribution Function,CDF)来求解限制放大幅度。这样限制了CDF的斜度,从而限制了变换函数的斜度;最后通过邻域的大小和直方图的分布来决定直方图的裁剪限幅。
通常,直接抛弃直方图裁剪限幅会损失图像原始的信息,因此将其裁剪限幅的部分平均放到直方图的空余部分,如图3所示。
每个子直方图的剪切上限β和变换函数被允许的最大斜率Smax分别为:
(7)
(8)
式中:N为像素总数(各子块);L为灰度级数(各子块);α为截断系数,本文设置α=75;u为灰度均值(每个子块);q为均方差(每个子块)。β值的大小由Smax和α的取值共同决定。
磁瓦图像经过预处理模块后的效果图如图4所示。由图4b中可以看出,磁瓦背景亮度和缺陷特征得到明显增强,进一步提高了Mask R-CNN特征提取层的提取能力。
2.4 C1模块设计
卷积神经网络在提取特征的过程中,特征图的尺寸逐渐减小,会导致一些小目标缺陷信息丢失,因此,预测图像中对小缺陷的检测效果不理想。为了提高对小目标缺陷的检测率,本文采用包含丰富语义信息的高分辨率特征图。具体地,利用FPN融合低分辨率特征图与高分辨率特征图,在原有模型计算量不增加的情况下,大幅提升了小目标缺陷检测的性能。
在原FPN结构中,为避免图片尺寸较大占用过多内存,直接去掉了C1模块。本文因为采用的数据集图片尺寸较小,所以保留了C1模块,这样可以获得低层高分辨率图中更多细节特征。同时,因为图片尺寸较小,所以取消了C1模块中的池化层。在如图5所示的特征提取层结构图中,自底向上(down-top)对应于ResNet50中的残差块(residual block)结构,每层的尺度(scale)缩小2倍;自顶向下(top-down)将高层低分辨率的特征图进行2倍上采样;侧面连接(lateral conn)通过1×1卷积减少C1的特征层个数,同时保证特征层尺寸大小不变;特征层C2与上采样后的特征图相加得到最后的特征图。
3 实验与分析
3.1 实验条件
实验硬件平台为图形工作站,配置为Intel Core i7-8700K六核处理器、两块NVIDIA GTX1080Ti 11 G独立显卡、16 G DDR4内存、512 G固态硬盘,软件仿真平台为MXNet 1.3.0版本。本文的算法评估指标为检测率、误检率以及漏检率,实验表明:加入CLAHE预处理模块和最下层语义信息(FPN中的C1模块)对缺陷检测的效果有提升作用,且本文算法的检测效果优于目前一些常用的表面缺陷检测算法。
在机器视觉中,打光是极其重要的一部分,光源及相机的选型直接影响后期图像的处理效果。为了减小光线不均对检测效果的影响,工业检测设备一般都会将摄像机、光源和被检测产品放在一个封闭的空间中,在此环境下,可以保证背景简单,光照一致,产品图像突出。本文所用的图片均来自实际现场设备,因此图像背景一致,光照均匀。本文中光源采用频闪条形光,相机为30万像素的CMOS相机。
3.2 数据集
为了训练Mask R-CNN网络,采用常用的标注软件Labelme为每张磁瓦图像制作对应标签,原图像中的磁瓦缺口缺陷标签为gap,裂缝缺陷标签为crack。为了保证数据集的完整性,还需要标注缺陷的面积、边界框坐标等信息。实验过程采用现场采集的1 200个磁瓦样本,其中缺陷样本600个、良品样本600个,600个缺陷样本包括磁瓦的缺口、裂缝等缺陷,而且缺陷分布均匀。首先本文将其随机分成400个缺陷样本和400良品样本组成训练集,其余组成测试集。同时,由于数据量较少,必须对数据集进行扩充。由分析可知,对数据集进行上下、左右、对角镜像以及90°、180°、270°旋转等6种数据增广,将训练集数据扩充为2 400个缺陷样本,2 400个良品样本,测试集扩充为由1 200个缺陷样本和1 200个良品样本组成的新测试集。
3.3 本文算法评估指标
为了定量评估磁瓦缺陷检测算法的性能,采用正确率、误检率及漏检率来对算法进行评价。检测算法将缺陷磁瓦判定为正常磁瓦称为漏检,将正常磁瓦判定为缺陷磁瓦称为过检。设RCD表示磁瓦检测正确率,RFA表示磁瓦误检率,RBA表示磁瓦漏检率,NC表示磁瓦实际漏检样本个数,NA为合格磁瓦个数,NB为缺陷磁瓦个数,ND表示磁瓦实际误检个数,则RCD、RFA、RBA可由式(9)~式(11)计算:
(9)
(10)
(11)
本文在Mask R-CNN的基础上引入CLAHE预处理模块,并且增加了FPN中的C1模块,改进后的算法在测试集上的检测结果如表1所示。
表1 Mask R-CNN和本文改进算法结果对比
由表1可知,本文所提改进的Mask R-CNN相比原来的Mask R-CNN,磁瓦缺陷检测的漏检率和误检率降低。在本文算法中,针对磁瓦缺陷的特点加入CLAHE预处理模块,提升了缺陷部分的局部对比度,从而对后面的检测有良好的效果;而且利用C1可以更好地获取低层的特征语义信息,因为低层的语义信息能够得到更明确的缺陷位置,同时经过更少的卷积层能够保证小目标缺陷不会在多层卷积后丢失,所以,本文改进的Mask R-CNN对磁瓦表面缺陷检测是有利的,特别是对小缺陷目标有更高的检测率和更低的误检率。
3.4 检测效果对比
为了验证本文算法在磁瓦表面缺陷检测方面的效果,将其与傅里叶变换算法、FCN、PspNet和Deeplabv3等算法进行对比。其中,傅里叶变换算法是工业检测行业传统的方法,其他算法均为基于神经网络的算法。傅里叶变换算法的滤波半径设置为0.10;其他算法均采用ResNet50作为主干网络,训练参数如表2所示,本文算法与对比算法的评价结果如表3所示。
表2 FCN、PspNet、Deeplabv3和本文算法的网络训练参数表
表3 不同检测结果对比
表3中傅里叶变换法的检测精度相对较高,但由于傅里叶变换计算复杂,且针对不同的缺陷类型需要设计不同的滤波器模板来提高检测效果,对于工业检测来说比较繁琐,不适合多种缺陷类型的表面缺陷检测;因为磁瓦缺陷较小,经过FCN的卷积层后会出现目标丢失,所以导致其各种评价指标都较低;PspNet虽然改进了FCN的特征提取结构,但是相比于本文算法,其误检率和漏检率都较高。这是由于本文采用的FPN能融合不同尺度特征层,提高了对小缺陷目标的特征提取能力;Deeplabv3对输入图像进行不同尺度的特征提取,然后将不同尺度的图像放入CNN中得到不同分辨率的分割图,最后通过图像融合得到原图分辨率的分割结果。Deeplabv3虽然较好地解决了小目标、低对比度缺陷特征提取,但是相比于本文算法,无论是误检率还是漏检率都较高。
本文测试集的磁瓦检测效果如图6所示,其中对于高对比度缺陷,傅里叶变换法有较好的检测效果,但是对于不同的缺陷类型需要使用不同的滤波器,其算法泛化能力的局限性限制了其在磁瓦检测中的应用;FCN在缺陷检测中,对于小目标缺陷以及低对比度缺陷检测效果较差;PspNet对低对比度缺陷检测效果良好,但是无法有效检测出边界模糊的裂纹缺陷掩膜图;Deeplabv3对于小目标有一定的改善,但是无法有效得到缺陷的轮廓;本文算法能有效地解决缺陷边缘轮廓模糊的问题,除了能提升较低对比度缺陷的检测效果,也能提升小目标缺陷的检测效果,具有较好的泛化能力,这些特点使其能够较好地解决磁瓦表面缺陷检测。
4 结束语
由于磁瓦图像具有亮度不均和对比度低等特点,使得传统的缺陷检测算法效果不佳,本文提出了一种改进Mask R-CNN的磁瓦表面缺陷检测算法。利用FPN强大的特征提取能力,能较好地保留小目标、低对比度缺陷在卷积层中的信息,而且RPN可以有效地在原图上进行缺陷区域候选。实验结果表明,本文算法提升了磁瓦表面缺陷检测的正确率,而且一定程度上降低了检测的误检率以及漏检率。目前,深度学习领域还有许多优异的网络结构,在今后的研究中,计划将这些优异结构应用到本文算法中。