文生平 周正军 张啸言 陈志鸿
(1.华南理工大学 广东省高分子先进制造技术及装备重点实验室,广东 广州 510640;2.华南理工大学 聚合物加工 工程教育部重点实验室,广东 广州 510640;3.广州市井源机电设备有限公司,广东 广州 511480)
轴承是一种常见的机械零件,在机械结构中可以起到一定的支撑作用,其主要功能是支撑机械旋转体、降低旋转体在运动过程中的摩擦力,并保证旋转体的回转精度。滚子作为滚动轴承中主要的承压部件,表面如果存在缺陷,其使用性能与使用寿命都将大打折扣,因此对滚子几何精度及表面粗糙度的要求往往比对其他部件的更高。
现有的轴承滚子表面质量检测方法中,以人工检查为代表的传统检测方法由于检测效率低、人工成本过高等原因,已经不能满足现代工业的需求,而基于视觉的表面缺陷检测因其高效率、低成本等优势越来越被人们所重视。此外,随着近年来人工智能技术的不断突破及国家对于“机器换人”的大力扶持,将人工智能技术应用于缺陷检测也越来越成为研究热点。
目前,主流的轴承滚子缺陷视觉检测流程一般是图像预处理、ROI(感兴趣区域)提取、模式识别。随着轴承滚子缺陷视觉检测技术的不断发展,国内外均取得了一系列成果。国外,Zheng等[1]基于遗传算法与图像形态学开发了一套金属表面视觉检测实验设备;Pernkopf等[2]提出了3种适用于金属表面缺陷检测的的图像采集方案;Hemmati等[3]设计了一种新的信号处理算法,并利用声发射技术对轴承表面缺陷的尺寸进行测量;Bastami等[4]通过自回归模型和包络分析来增强滚动体进出缺陷区域的特征,并利用两个缺陷事件之间的持续时间来估计缺陷大小;Sobie等[5]使用从滚动轴承动力学高分辨率模拟中获得的信息来生成训练数据,并将这些数据用于训练机器学习算法,进而实现轴承故障检测。国内,邵珠庆[6]利用Matlab对圆锥滚子表面的划痕、麻点、压痕及锈蚀缺陷进行了检测;李杨[7]采用人工神经网络模型对微小轴承的表面进行了缺陷检测;魏利胜等[8]提出了一种融合单应性约束SIFT(尺度不变特征变化)的轴承滚子检测方法;重庆邮电大学的刘超[9]基于Retinex光照校正算法提出一种改进算法,在该算法的基础上设计了一套轴承滚子瑕疵检测算法;陈金贵等[10]对Niblack算法进行改进,实现了对轴承滚子表面缺陷的区域分割;陈昊等[11]提出了一种基于图像光流的轴承滚子表面缺陷检测方法。
在计算机视觉领域,卷积神经网络模型近年来取得了丰硕的研究成果,其端到端的模型特性也使得研发工作相对传统图像处理方法更加容易[12]。文中对轴承滚子表面缺陷的视觉检测进行了研究,并针对缺陷的尺度变化问题设计了一套基于计算机视觉的轴承滚子表面缺陷检测算法,在实验中取得了比较高的准确率。
文中提出的表面缺陷检测系统的机械结构主要由上料机、自动送料机、端面相机及光源、线扫描相机及光源、卸料机等构成。系统结构示意图见图1。
1—PLC;2—大小端光源及相机;3—进料机构; 4—出料机构;5—线扫描光源;6—PC;7—线扫描相机
检测系统下位机为PLC,上位机为工控机(i7-6700k CPU,NVIDIA GTX-1080 GPU,128 GB RAM)。下位机负责数字IO(输入输出)及运动控制,上位机负责图像采集、图像处理、结果输出等。检测系统的3D模型如图2所示。
图2 表面缺陷检测系统的3D模型
由于金属表面容易反光,为了获得全面的图像信息以便于后续的缺陷检测,在对比了多种不同的光源方案后,选择了针对端面的高低角度光源及针对柱面的明暗场光源,并在端面使用端面相机、柱面使用线扫描相机来获取轴承滚子图像。光学成像模块如图3所示。
图3 光学成像模块Fig.3 Photos of optical imaging modules
在轴承滚子的生产过程中,轴承滚子的表面总是不可避免地会出现各种缺陷。其中轴承滚子的端面、外径圆柱面及倒角处是最容易出现缺陷的部位。常见的表面缺陷包括物理碰撞引起的损伤与划痕、材料表面老化引起的锈蚀与加工过程中倒角部位的缺料等。
如图4所示,轴承滚子的常见表面缺陷包括以下几种:
(1)划痕,如图4(a)和4(b)所示,主要为硬物划伤轴承滚子表面后留下的痕迹;
(2)损伤,如图4(c)和4(d)所示,主要是由于物理碰撞在滚子表面留下的大小不均匀且无规则的凹痕;
(3)倒角缺料,如图4(e)、4(f)所示,主要是指在加工过程中由于各种原因导致的滚子倒角出现凹陷或突起等不连续的情况;
(4)锈蚀,如图4(g)、4(h)所示,主要是轴承滚子由于潮湿等原因表面被腐蚀生锈后产生的缺陷;
(5)欠磨,如图4(i)所示,主要是由于轴承滚子表面研磨不充分而产生的缺陷。
上述表面缺陷直接影响着轴承滚子的使用性能,特别是对轴承的承载能力和稳定性有较大的影响。因为圆柱面是轴承滚子的主要工作表面,同时也是受力面,所以圆柱面不允许出现任何缺陷,只要在圆柱面检测到缺陷的存在,该工件将直接被判定为不合格工件。而滚子的两个端面虽然不是主要工作面,但是若端面的表面缺陷面积过大,也会对滚子的使用性能带来影响,故需对端面在进行缺陷检测后计算缺陷的面积大小,当缺陷面积超过预设的阈值时,该工件也将被判定为不合格产品。
图4 常见的轴承滚子表面缺陷Fig.4 Common surface defects of bearing roller
在上述各种表面缺陷中,以图4(e)、4(f)为代表的倒角缺料均出现在图像的轮廓位置,该缺陷在下文提及的算法流程中通过轮廓检测的方式被首先检测出来。由于篇幅限制,文中对一些未提及的出现频率极低的缺陷不做过多讨论,仅着重针对划痕、损伤、锈蚀与欠磨这4种表面缺陷的检测进行讨论。4种表面缺陷的细节如图5所示。
在对轴承滚子的表面缺陷检测中,倒角缺料缺陷均出现在倒角的轮廓上,可以采用传统的霍夫变换加边缘检测的方法判断产品是否合格。而以划痕、损伤、锈蚀及欠磨等为代表的一系列表面缺陷的特征变化比较复杂,规律性较差,故采用卷积神经网络对其进行检测。
表面缺陷检测算法流程如下:首先读入图像,如果图像来自两个端面图像相机,则先对图像进行1次轮廓检测,判断该工件是否出现倒角缺料缺陷;若检测到端面轮廓缺陷,则该工件将直接被判为不合格产品;若图像来自线扫描相机,或者图像来自端面相机且未检测到端面轮廓缺陷,则将图像送入卷积神经网络提取缺陷ROI。然后,将ROI进行阈值分割来计算缺陷面积,若缺陷面积超过所设阈值则判定为不合格产品,反之则将该产品判为合格产品。算法流程如图6所示。
图5 4种常见的表面缺陷的细节Fig.5 Details of four common surface defects
图6 表面缺陷检测算法流程图Fig.6 Flow chart of the proposed surface defects detection algorithm
当轴承滚子出现倒角缺料缺陷时,观察端面相机中拍摄到的图像,会发现轴承滚子并不是圆形的,如图7所示。倒角缺料会导致滚子在使用过程中无法正常工作,因此第一步要先将这些倒角缺料的滚子剔除掉。
图7 端面相机拍摄到的倒角缺料缺陷
轮廓检测的目的是判断工件是否出现倒角缺料,其核心思想是先通过多次霍夫变换提取圆心坐标的平均值,经图像降噪后再采用边缘检测方法提取图像的轮廓边缘,并计算边缘各点到圆心的距离是否仅在一个很小的范围内波动,当检测到有轮廓点与波动范围相差比较大时,则可判定该轮廓不圆,进而将该工件判定为不合格产品。
3.2.1 霍夫圆检测
霍夫变换可以用于检测圆和直线,因为对噪声及形状不完整的情况并不敏感,所以分割结果非常稳定,在缺陷检测中有较好的效果。霍夫圆检测的原理描述如下。
设圆心为(m,n),半径为r,则圆满足方程
(xi-m)2+(yi-n)2=r2
(1)
式(1)也可以理解为圆上的点(xi,yi)在空间(m,n,r)中的解析式方程。圆上的任意一点可以映射为一个圆锥面,而所有点映射的圆锥面簇在参数空间中都相交于一点(m0,n0,r0),则该点代表在图像空间中的圆心与半径。霍夫圆变换简图如图8所示。
图8 霍夫圆变换简图Fig.8 Simplified diagram of Hough circle transform
3.2.2 轮廓检测算法
文中利用OpenCV库中提供的霍夫变换算法来计算圆心与半径,对每张图像使用10次霍夫圆变换并取平均值。然后,利用Canny边缘检测算法[13]提取图像的真实轮廓,最后计算轮廓上各个点到圆心之间距离与圆半径的标准差std,判断该标准差是否大于预设阈值F。若标准差小于阈值F则认为该工件的端面是一个完整的圆,不存在倒角缺料,随后进入下一步——通过卷积神经网络提取ROI。反之,则认为端面不圆,存在倒角缺料,是不合格产品。具体运算公式如下:
(2)
(3)
(4)
(5)
式中,xs、ys、rs分别为圆心坐标及半径平均值,xsi、ysi、rsi分别为第i次霍夫变换计算出的圆心坐标及半径,dj为真实轮廓到圆心的距离。
通过大量实验后发现,阈值设为0.4效果最好。检测效果如图9所示。
图9 轮廓检测结果Fig.9 Result of contour detection
卷积神经网络模型目标检测方法主要分为一阶段目标检测模型与两阶段目标检测模型两种。其中两阶段目标检测模型精度高但速度较慢,在轴承滚子表面缺陷检测中无法做到实时在线检测。而以YOLO、SSD为代表的一阶段目标检测模型虽然在检测速度上具有较大优势,但准确率相对较低。以YOLO为例,在对不同尺度的目标进行检测时容易出现小目标漏检。而在表面缺陷检测中,由于缺陷具有较大的随机性,所以各类缺陷的尺度变化大,如图10、11所示,YOLO会因小目标的漏检而导致检测效果差。
图10 小尺度缺陷Fig.10 Small-scale defect
图11 大尺度缺陷Fig.11 Large-scale defect
SSD虽然在不同的特征图上进行了预测,对于小目标缺陷的检测精度相对YOLO有一定提升,但是由于单阶段网络分类器存在严重的数据不均衡问题,分类器在进行分类时因对样本量多的类型获得了较大的权重,导致对该类型有所“偏好”,所以检测效果不够理想。
有鉴于此,文中采用特征图金字塔结构的RetinaNet[14]网络模型,并使用基于交叉熵损失的Focal Loss作为损失函数,该方法在满足在线检测的情况下,精度超越了两阶段网络Faster R-CNN。
3.3.1 Focal Loss损失函数
Focal Loss损失函数的实质是在交叉熵损失函数的基础上额外附加一个权重因子,使得损失函数更加关注样本较少的那一类。二分类情况下Focal Loss损失函数的原理如下。
假设目标的真实标记为y,正类样本y=1,负类样本y=0,p为模型预测y=1的概率,则有
p∈[0,1]
(6)
标准交叉熵为
(7)
定义
(8)
则交叉熵可以写成
CE(p,y)=CE(pt)=-logpt
(9)
对于数据样本不均衡的问题,引入1个权重因子α,使得样本量较少的一类得到1个较大的权重而样本量较多的一类的权重相对较小,则损失函数变为
CE(pt)=-αtlogpt
(10)
常见的权重因子为(1-pt)γ,其中γ为聚焦参数且有γ≥0,则Focal Loss损失函数为
FL(pt)=-(1-pt)γlogpt
(11)
当γ取不同值时,对应的损失函数如图12所示。图中,曲线的右半段代表分类器预测的概率已经较高,这就意味着分类器对于这些样本已经可以达到非常好的分类效果,因此可以适当降低这些样本的权重,使得分类器更多关注分类还不够好的样本。可以看到,当γ增大时,损失函数对那些分类效果已经很好的样本损失值已经接近于0。
图12 不同γ取值时的损失值Fig.12 Loss value varying with γ
在Focal Loss损失函数的基础上再增加一个平衡因子αt,则有
FL(pt)=-αt(1-pt)γlogpt
(12)
3.3.2 RetinaNet网络结构
RetinaNet网络结构由ResNet[15]与FPN[16]两部分构成。ResNet是目前最有效的特征提取网络之一,通过引入残差模块,深度神经网络中的梯度消失与梯度爆炸现象得到了一定程度的缓解,有效地解决了深度神经网络训练困难的问题。在残差模块的输入和输出之间引入1个Shortcut连接,成为恒等映射。图13所示是两个采用ReLU激活函数的残差模块。恒等映射不同于简单的堆叠网络,它可使原始输出不通过前面网络层的非线性变换而直接输入后面的网络层中。将输出变为H(x)=F(x)+x,而学习任务由H(x)变为F(x)=H(x)-x,其中H(x)和F(x)分别表示残差模块输出与卷积层输出。
图13 残差模块Fig.13 Residual modules
目前几种主流的目标检测网络结构如图14所示。在传统的目标检测网络中,仅用最后一层输出>特征图的单特征图(Single Feature Map)模式进行预测,然而这种模式对小尺度目标非常不友好,检测效果差。Fast/Faster R-CNN中引入了图像金字塔(Featurized Image Pyramid)结构,虽然提升了检测效果,但同时带来了极大的运算量与内存负担。SSD算法利用卷积神经网络本身多层次特性的金字塔特征层次(Pyramidal Feature Hierarchy)模式来进行预测,由于底层特征的语义信息较弱导致小目标的检测效果虽然有一定提升但仍不够理想。而FPN(Feature Pyramid Networks)通过自下而上的路径(Bottom-Up Pathway)、自上而下的路径(Top-Down Pathway)及横向链接(Lateral Connections)共同构造了一种独特的特征金字塔,能够让各个尺度的特征都具有较强的语义信息,在避免过大计算量的同时对多尺度目标取得了较好的检测效果。
图14 几种常见的目标检测网络结构Fig.14 Several common network structures for object detection
RetinaNet结合了ResNet与FPN的优点,在得到有效的特征金字塔之后,对特征金字塔的每一层都通过两个结构相同但参数各异的子网络分别进行目标类别分类与特征框位置回归,其结构如图15所示。
图15 RetinaNet网络结构Fig.15 Network structure of RetinaNet
各模型的性能对比如图16所示。可以看出,在精度方面一阶段检测模型RetinaNet已经超越了两阶段检测模型Faster R-CNN,虽然与YOLO、SSD相比,RetinaNet在速度方面不占优势,但它在FPS(检测帧率)为15时便可完全达到轴承滚子实时在线检测的要求。
图16 各模型的性能对比Fig.16 Performance comparison of the models
3.3.3 RetinaNet的改进方案
在卷积神经网络的底层学习到的是比较具体的纹理、颜色等低语义信息特征,而在高层学习到的是一些十分抽象的高语义信息特征。在工业领域的表面缺陷检测中,对于是否存在缺陷的最重要判据是工件外形的颜色与纹理。为了加大这些纹理与颜色特征对预测结果的影响,文中使用DenseNet[17]代替ResNet作为特征提取网络,并针对这两种特征提取网络分别进行实验。DenseNet的核心是用密集连接模块代替ResNet的残差模块,密集连接模块的基本结构如图17所示,图中BN代表批归一化,激活函数为ReLU,Conv代表卷积层,X0至X4为特征图,H代表通过卷积计算下一层,箭头代表恒等映射。
图17 DenseNet密集连接模块Fig.17 DenseNet dense connection module
在1个密集连接模块中,第L层的输出不仅与第L-1层有关,而且与它之前的每一层都有关。设第L层的输出为XL,第L层的激活函数为HL,则有
XL=HL([X0,X1,…,XL-1])
(13)
式中,[ ]代表拼接操作,具体是指将第L-1层的输出与前面各层的输出按照通道数维度组合在一起,再通过激活函数增加非线性。
DenseNet与ResNet相比,其共同点是对不同层的特征图都进行特征融合,ResNet采用的融合方式是特征图对应位置像素的相加,即add操作,而DenseNet采用的融合方式是将特征图在通道数维度进行拼接,即concat操作。这两种方法均能达到特征融合的目的。通过add操作可以根据原有特征生成新的特征,虽然生成的新特征与原有特征有关,但在这个过程中原有特征消失了,这就造成了一定程度上的特征损失。而concat操作直接将特征图拼接在一起组合成新的特征图,特征的组合问题交给卷积神经网络自己去学习,这样既避免了人为干预对特征融合带来的影响,又保证了在整个过程中不会出现特征损失。
此外,DenseNet相比ResNet拥有更少的参数,计算更高效,并且降低了训练成本。DenseNet的密集型连接相对ResNet加强了特征的重复使用以及底层特征对预测结果的影响。同时,随着网络深度的逐渐增加,在面对梯度消失与梯度爆炸时DenseNet的效果要比ResNet更加出色,大大降低了模型的训练难度。
当滚子圆柱面未检测到缺陷而端面检测到缺陷时,需对滚子端面缺陷面积进行计算。缺陷面积计算的核心任务是对缺陷进行分割,其中阈值分割是图像分割中的一种常用方法,它首先选择合适的阈值,然后将图像中所有像素点的灰度值与这个阈值进行对比,大于阈值的像素点归为一类,其他像素点归为另一类。设原始图像为f(x,y),分割后的图像为g(x,y),阈值为T,则阈值分割满足下式:
(14)
显然,阈值分割的关键在于阈值T的选取。几种常见的阈值分割法如下。
1)人工经验选择法 通过人工对比分析大量图像之后,根据经验选择1个恰好能够将背景与前景区分开来的恰当阈值。但这种方法效率十分低,并且阈值固定不变,仅适用于图片数量较少的情况。
2)OTSU阈值分割法 OTSU的思想是使分割后的结果类间方差最大化,是一种基于全局阈值的分割方法。它采用两个类之间的方差大小作为分割背景与目标的评判标准,方差越大则认为类间的差别越大。
3)自适应阈值分割法 OTSU法对全局像素使用1个单一阈值进行分割,如果光线条件比较复杂,灰度值可能出现分布不均匀的状况。而自适应阈值分割是为每一个像素点设置不同的阈值,在光线不均匀的情况下可取得不错的效果。
文中分别对欠磨、锈蚀、损伤与划痕4种表面缺陷使用上述3种阈值分割法进行对比,效果如图18所示。
由图18可以看出,自适应阈值分割法在欠磨与锈蚀这两种情况下的效果比较差,基本上无法将缺陷分割出来。而人工经验选择法虽然在划痕分割中取得了不错的分割效果,但是在处理欠磨与锈蚀缺陷时,由于灰度值在不同图像中的分布不同,仅使用单一的阈值无法满足所有情况。综合看来,OTSU阈值分割法在本文应用场景中的表现最好。此外,由于缺陷检测系统中使用了光源,因此整个表面的光照情况比较稳定,这就使得图像的灰度值分布十分均匀,同时OTSU阈值分割法能够对不同的图像自动选取阈值而不需要人工选取。实验也证明OTSU法能够较好地将4种缺陷从背景中分割出来,因此文中采用OTSU阈值分割法。
文中将传统算法与文中算法的缺陷分类能力进行了评估与比较,尝试将许多已经开源的算法与文中算法进行对比,并分析这些算法与文中算法的性能差异。实验过程中计算机硬件采用英特尔酷睿i7-6700k CPU、英伟达GTX-1080 GPU、128G RAM,操作系统为Windows系统,使用的编程语言为Python与C++。
在传统算法中,GLCM[18](灰度共生矩阵)与HOG[19](梯度直方图)是最常见的两种特征提取器。其中GLCM是一种常用的通过研究灰度的空间相关性来描述纹理特征的方法,纹理特征影像通过提取灰度图像并进行灰度级量化来计算特征值。HOG是图像处理中一种用于特征检测的特征描述器。该算法首先将图像分割成小的连通区域,称之为单元,然后收集单元中每个像素的梯度或边缘方向,得到1个直方图,最后将这些直方图组合起来形成特征描述符[20]。在获得上述特征之后,再使用SVM(支持向量机)和MLP(多层感知器)对特征进行分类。
图18 各阈值分割法的效果对比Fig.18 Effect comparison of several threshold segmentation methods
此外,文中还将所提出的算法与另一种卷积神经网络SSD[21]算法进行了对比。SSD算法通过卷积神经网络生成一系列预测框,计算出预测框内包含目标的概率,该算法使用了多尺度手段提升预测性能。
对各种算法进行实验,并使用Macro F1-score作为衡量标准。F1-score是统计学中一种常用于衡量二分类模型的指标,它同时兼顾了模型的准确率与召回率,而Macro F1-score是将F1-score从二分类拓展到多分类的一种形式,即把每个类的F1-score结合起来考虑。在评估多分类任务时,Macro F1-score是一个非常重要的衡量指标。各算法的Macro F1-score如表1所示。
表1 传统算法与卷积神经网络算法的对比
从表1可以看出,在算法效果上,卷积神经网络算法相比传统算法有较大提升。传统算法的Macro F1-score普遍在80以下,而3种卷积神经网络算法的Macro F1-score均在89以上,说明卷积神经网络算法相比传统算法性能更为优异。并且,文中算法使用特征金字塔结构取得了比SSD算法更好的效果,Macro F1-score达到了94以上。此外,通过对比还可看出,将特征提取网络从ResNet换成DenseNet之后,Macro F1-score增大了1.2以上。
最后评估整个检测系统在轴承滚子缺陷检测上的应用性能。由于检测结果只包含合格与不合格两种,因此是一个二分类问题。文中分别以准确率、召回率与F1-score作为衡量标准进行评估。
首先在生产线上人工选取1 500个轴承滚子,包含了10、12与15 mm共3种不同直径,每种直径轴承滚子的总数量相同,且每种直径轴承滚子中包含的合格产品与不合格产品数量相等。将这1 500个轴承滚子分别用传统方法、SSD与文中方法进行测试,其中传统方法选择GLCM+MLP,实验结果如表2所示。
表2 检测方法的性能评估结果Table 2 Performance evaluation results of detection methods
从表2可以看出,文中方法相对于其他两种方法,不论在准确率、召回率还是在F1-score上都有一个比较大的提升。而传统方法之所以准确率与召回率较低,其原因在于提取到的特征并不准确,使得分类时容易产生误判,将一些不是缺陷的纹理、油渍判断为缺陷。SSD方法虽然相对传统方法其性能有一定提升,但由于存在类不均衡问题,也会导致分类器效果并不理想。
虽然文中方法获得了满意的检测效果,但并非完美无缺。如图19所示,绿色框为真实标签,红色框为预测结果,可以看出ROI提取过程中卷积神经网络预测结果与真实标签并没有完全重合,这会导致后续计算出的缺陷面积存在细微误差,进而影响检测系统对工件是否合格的判定。
图19 预测结果与真实标签对比Fig.19 Comparison of the predicted result with the actual one
文中研究了轴承滚子表面缺陷的检测问题。针对轴承滚子表面最常见的5种缺陷,设计了一种视觉表面缺陷检测系统,获得了满意的检测效果。该系统设计了3个工位对轴承滚子的端面与圆柱面进行检测,并且采用合理的光学成像系统,使每个工位都能够采集到清晰完整的图像。
文中提出的基于深度学习的检测算法能够很好地检测出缺陷所在的位置并准确判断缺陷类型。该算法以RetinaNet为基本框架,并使用了DenseNet作为特征提取网络,在保证检测速度的前提下大幅度提升了检测算法的精度。算法中还使用了霍夫圆变换及阈值分割等方法,实现了对倒角缺料的检测与端面缺陷面积的计算。
将传统缺陷检测算法与文中提出的缺陷检测算法进行对比,结果表明,虽然文中算法在时间上相对传统算法有略微增加,但依旧能够满足在线检测的要求。而在检测效果方面,文中算法具有较大优势,其准确率、召回率与F1-score都有较大提升,是一种高精度的在线表面缺陷检测算法。
文中算法虽然获得了满意的检测效果,但由于预测框与真实标签并未完全重合,导致计算出的缺陷面积存在细微的误差,后续研究可以围绕减小缺陷面积误差与提升预测框的重合度来展开。