丛 明,卢长奇,刘 冬+,肖庆阳,李荣东
(1.大连理工大学 机械工程学院,辽宁 大连 116024;2.大连亚明汽车部件股份有限公司,辽宁 大连 116041)
铝合金压铸件作为汽车主要采用的零部件,在生产中由于模具等设备故障、合金成分质量差或工作人员操作不当等原因,不可避免地产生了各种缺陷,这些铸件外观缺陷主要包括缺肉、缩孔、多肉、气孔和冷隔等。在实际生产中,这些外观缺陷的检测大多依靠人工检查,生产线检查工人的劳动量大,效率低,误检率高,且存在无法实时跟踪产品质量指标等一系列的问题。
针对特征明显的缺陷,工厂中往往采用基于传统的机器视觉的缺陷检测方法,主要包括两类方法:①通过数字图像处理技术进行缺陷检测;②通过人工设计复杂的特征提取器进行特征提取,并采用分类器进行缺陷的识别[1]。为检测钢盘表面的划痕缺陷,YUN等[2]采用边缘检测、双阈值二值化和形态学操作等方法进行特征提取,并最终通过支持向量机(Support Vector Machine, SVM)进行分类来达到缺陷检测的目的。ZHANG等[3]提出一种用于强反射金属表面的缺陷检测方法,该方法将待检测图片进行去噪处理后,采用Otsu阈值化方法进行阈值分割,并对二值化的图像提取5个特征输入到SVM中进行检测。但是上述传统的缺陷检测方法仅适用于具有明显的颜色或者形状特征、背景干扰少的外观缺陷检测,同时该方法易受光照和环境变化的影响,这些局限性限制了传统方法在工厂中的实际应用。
近年来,如更快的基于区域的卷积神经网络(Faster Region-based Convolutional Neural Network, Faster-RCNN)[4]、SSD(single shot multibox detector)[5]和YOLO(you only look once)[6-9]系列等基于深度学习的目标检测算法已广泛应用于缺陷检测领域。如对大型的汽车外壳体的缺陷检测,CHANG等[10]搭建了缺陷检测系统,并采用效率高的多相机同时获取图片并发进行检测的方法,同时采用带有focal loss损失函数的RetinaNet算法来克服数据不平衡的问题。HE等[11]提出一种适用于钢带表面缺陷检测的深度学习模型,将从特征提取网络中获取的多层次特征整合成单个特征进行检测,提高检测的效率。LI等[12]为实现对偏光镜高速检测,以YOLOv3-Tiny算法为基础,集成Dense Block和SPP-Net模块,实现高精度高效率的检测。
当前缺陷检测工作主要是针对钢材、铁轨、轿车壳体和PCB板等表面,较少对复杂压铸件表面进行研究。而铸件外观缺陷检测主要存在以下难点:①缺陷部位体积小,下采样的过程中会造成像素点的丢失,增加了检测的难度;待检测物体固定的位置会为小型缺陷保留上下文信息,而这些上下文信息会增加小型缺陷的误检率。②铸件的背景复杂,对缺陷检测的干扰大。③各种缺陷数据样本数量极不平衡,数据量少的缺陷无法实现端到端检测,为训练增加了难度。针对上述难点,本文提出一种基于深度学习的铸件外观缺陷检测(single-shot Refinement neural network for Aluminum Casting Tiny Defects Detection, Refine-ACTDD)方法,具体流程图如图1所示,包括图像获取、数据传输和缺陷检测三大模块。
本文具体贡献如下:
(1)制作了一个大型的铸件外观缺陷数据集ALU-DEF,包括缺陷图片7 816张,具体包括的缺陷有缺肉、多肉、气孔、缩孔、冷隔等。
(2)提出密排的锚点设计方法来提高小缺陷的正检率;采用对比训练方法进行训练,将有无缺陷的两种类别数据同时用于模型的训练,通过训练过程中量种类别数据的对比,来减少上下文信息对小型缺陷检测的影响。
(3)在神经网络中引入注意力机制,通过注意力机制使模型更加关注图片中的缺陷区域,来减少铸件外观背景的干扰。
(4)提出一种将深度学习与轮廓发现相结合的方法实现对小样本缺陷的端到端检测。
Refine-ACTDD缺陷检测算法主要基于RefineDet(single-shot refinement neural network for object detection)算法进行改进[13-14]。Refine-ACTDD算法兼具一阶检测算法和二阶检测算法的优势,在保证高检测效率的同时,具有较高的检测准确率,网络基本结构如图2所示。Refine-ACTDD算法包括ARM(anchor refinement module)、TCB(transfer connection block)、ODM(object detection module)和Attention等4个模块。在上述4个模块中,ARM模块的主体结构是将VGG16模型的最后2个全连接层替换为2个卷积层Conc_fc6和Conc_fc7,并额外增加2个卷积层Conv6_1和Conv6_2,详细的网络结构如表1所示[15]。该模块具有两个功能:第一个功能是负责特征的提取,此外该模块与双阶检测器的RPN(region proposal network)功能相似,负责对每个锚点区域进行二分类,即判断该锚点所在区域内是否包含物体,将negative锚点进行过滤,并将positive锚点的位置进行初步的回归,回归的结果通过TCB模块传递到ODM模块。TCB模块的功能和特征金字塔结构的功能相同,负责将高层的语义信息传递到低层并进行信息的整合,提高小目标的检测准确率,同时将ARM模块和ODM模块连接起来[16]。ODM模块主要接收来自ARM模块的positive锚点和该锚点初步回归的位置坐标,在此基础上进行最后的分类和位置的回归。由于铸件的背景复杂,检测时的干扰较大,采用基于注意力机制的Attention模块,让网络更多地关注图像中的缺陷部位,增加缺陷特征在图像中所占的比重。该算法同样采用多尺寸特征图进行检测,分别选择Conv4_3、Conv5_3、Conv_fc7和Conv6_2卷积层来进行类别的分类和位置的回归。
表1 ARM网络结构
续表1
由于缺陷部位像素在整张图片中所占比例很小,在下采样的过程中缺陷部位会消失,增加了对小缺陷检测的难度。本文采用将一张大图片分割为2×2张小图片,然后依次进行检测的方法,如图3所示。
在训练的过程中,基于锚点的目标检测算法主要关注的区域是锚点中的区域,在进行预测的时候,模型也是在锚点的基础上进行预测的。因此,对小型物体来说,适当的锚点设计可以明显提高模型对小缺陷的正检率[17]。
为获得适合本数据集的锚点大小,对数据集中缺陷目标的长宽进行统计和K-Means聚类操作,缺陷区域尺寸散点分布图如图4所示,聚类操作得到的结果如表2第2列所示,依据得到的聚类结果设定的锚点大小和比例如第3和4列所示。为了能够在特征图上获得均匀铺排的锚点,将Conv4_3、Conv5_3、Conv_fc7和Conv6_2的锚点的大小依次设置为16、32、64和128。由于小目标的长宽比多为1,将Conv4_3的卷积层的长宽比只设置为一种比例形式,这样可以明显减少计算量。密排锚点的方法是通过对Conv4_3卷积层上的锚点进行重新设计来提高对小目标缺陷检测的正检率,设计方式如图5所示。原始的锚点设计是以每个像素点为中心,在像素点的周围设计长度和长宽比不同的锚点,如图5a所示。而本方法是在彼此相邻的4个像素点中间新增了一个长宽比为1的锚点,具体形式如图5b所示。在图5a中,锚点与真实值间最大IOU(intersection over union)值是A1,将锚点进行重新设计后,IOU的最大值变为A2。可以看出,经过重新设计的锚点能够获得更大的IOU值,因此缺陷检测中小型缺陷会获得更大的IOU值,正检率也会相应得到提高。
表2 聚类结果
铸件表面背景复杂,对模型的检测会造成很大的干扰。为减少复杂背景的影响,在网络中引入注意力机制,即在模型中增加一个Attention模块,使模型对图片特征的提取更加充分,并且缺陷相关特征所占的权重系数更大。本文采用的Attention机制来自于SENet(squeeze-and-excitation networks)算法,具体结构如图6所示。SENet算法主要包括Squeeze和Excitation两项操作[18-19]。
对于Squeeze操作,需要在channel方向上进行全局的平均池化操作,将H×W的输入特征图转化为1×1的特征图,即将channel方向上的整个空间特征编码为一个全局特征,公式如下:
(1)
式中:Xc为输入图像,H和W分别为输入图片的长和宽。
获得各channel方向上的全局特征后,Excitation阶段模型需要学习各全局特征间的非线性关系,采用Relu激活函数来增加非线性的变化。同时,为减少参数的计算量,在Relu操作前后采用两个全连接层(Fully Connected layer, FC)结构,第一个全连接层主要进行参数压缩的作用,第二个全连接层起到恢复原始维度的作用,其中压缩系数为R;最后使用Sigmoid函数获得各个channel上全局特征的权重大小Wc,将该权重系数乘以原始特征图像,获得输出的特征图:
Yc=XcWc。
(2)
Attention模块放置于TCB模块后,可以将经过特征整合后的特征图进一步进行特征提取,获得注意力特征图。注意力的特征图与TCB模块输出的特征图相比,其对特征的提取会更加充分,带有缺陷特征会赋予更大的权重系数,因此将注意力特征图输入到ODM模块中进行最终的检测时,复杂背景的干扰会得到明显的降低。
为实现对冷隔缺陷端到端检测的目的,本文提出一种将深度学习与轮廓发现相结合的端到端检测方法。冷隔缺陷发生位置在工件上确定,因此在数据集中增加一种类别,该类别为冷隔缺陷敏感区域,用于确定冷隔缺陷可能发生的位置。如图7所示,将待检测图片输入神经网络,判断该图片是否存在冷隔敏感区域。若图片中不存在冷隔敏感区域,则正常输出神经网络的检测结果;否则根据网络检测的具体坐标对冷隔区域进行截取,并对该区域进行轮廓发现处理,来判断该区域是否发生冷隔缺陷。
对于轮廓发现方法,待检测图片需要通过灰度化处理转化为灰度图;并对灰度图进行二值化计算,具体计算如下:
(3)
其中:Xc为输入图像,Yc为输出图像,thresh为设定的阈值。
运用开操作运算,过滤掉二值化图片中的小噪声;最后进行发现轮廓操作,计算轮廓的面积,当轮廓的面积大于设定的阈值时,该工件判定为缺陷件,否则为无冷隔缺陷。
针对小目标的检测,一种较好的解决方法就是通过上下文信息来增加小目标检测的准确率,如在人脸检测中头发的存在可以提高人脸检测准确率[20]。但是对于缺陷检测来说,这种上下文信息的存在有时会适得其反。这是因为在进行缺陷检测时,待检测的工件每次放置的位置是固定的,但是由于缺陷的体积很小,如图8所示的缺肉缺陷,在标注进行训练的时候,难免会带入上下文信息。而在检测的时候,神经网络会依据这些上下文信息,无论在该位置是否出现缺肉缺陷,都会判定为缺陷件。
针对上述问题,提出一种对比训练方法。为减少上下文信息的干扰,本文在数据集中新增加一类没有缺肉缺陷的类别,使得网络模型在训练的过程中对这两种类别进行对比训练,通过不断的迭代训练使网络辨别这两种类别,进而判断物体是否存在缺陷,达到降低误检率的目的。
在工厂内共采集缺陷图片2 500张,具体包括的缺陷类型有缺肉、缩孔、多肉、气孔和冷隔缺陷等,额外包括冷隔敏感区域图片305张。为增强模型的泛化能力,对所采集的数据集进行了数据增强操作,包括图像的对称、旋转等两项操作,并过滤掉一些效果较差的图片后共获得7 816张图片,将数据集按照8∶1∶1的比例划分为训练集、验证集和测试集,部分缺陷图片如图9所示,各类缺陷图片数量如表3所示。
定向越野对丰富学生的课余活动和提高学生的综合素质均起着重要作用。作为新兴的体育运动项目,定向越野摆脱了传统运动项目所需要固定场地的问题,让学生能回归大自然。学生在享受运动项目所带来的紧张和刺激的同时,还能感受到大自然的美妙。定向越野锻炼了学生的意志,培养了学生团队合作的意识,还促进了学生对大自然的热爱。
表3 数据集各类别数量
本文选择的模型评价指标分别为正检率和平均精确率(MAP)两个评价指标。对于某个待检测的图片,该图片的检测结果只能是缺陷件或良品件,则正检率指的是检测正确的图片数占检测图片总数的比例,即
(4)
MAP是用于衡量模型优劣的一个综合性指标,
(5)
(6)
(7)
(8)
其中:TP指将正样本识别为正样本的数量,FP指将负样本误识别为正样本的数量,FN指将正样本误判为负样本的数量,c表示样本中类别的数量。
本文搭建的铸件外观缺陷实验平台如图10所示,该平台包括图像采集模块、数据传输模块和缺陷检测模块三大模块。在检测的时候,当图像采集模块中的机械臂运动到工件的待检测位置后,可编程逻辑控制器(Programmable Logic Controller, PLC)为视觉控制器发送信号,视觉控制器接收到信号后开始采集图像。视觉控制器通过数据传输模块的CPE(customer premise equipment)设备连接到5G网络,将采集的图像通过5G网络传输到缺陷检测模块的云端服务器。服务器端收到请求后,会对发送的图片进行检测,最后将检测结果通过5G网络反馈到视觉控制器终端来指导下一步的工作。
为验证对比训练策略的实际效果,本文采用两种不同的训练策略分别进行训练,并将训练后的权重系数保存下来进行测试。制作了含有200张图片的测试集,其中包含100张缺肉缺陷图片和100张无缺陷图片。实验结果如表4所示,从表中可以看出,通过采用对比训练策略,正检率由88.5%提升至95%,其中错检数得到了明显改善,错检率由10.5%下降至1.5%。但是由于神经网络在训练的过程中需要对两种相似的物体进行区分,使得漏检数得到小幅度的上升。但总体的正检率获得了6.5%的提升,取得了显著的效果。可以看出,通过采用对比训练的策略,能够明显降低背景信息对小缺陷检测的影响。
表4 对比训练检测结果
为验证密排锚点设计的实际效果,在模型训练的过程中,监测正样本与Ground Truth之间的平均IOU值随迭代次数的变化,如图11所示。从图中可以看出,在经过10 000次左右的迭代后,密排锚点的IOU值平均值明显高于设计之前的IOU的平均值。这说明在训练的过程中,Ground Truth会与其最适合的锚点进行位置损失的计算,会使模型训练的更加充分,在检测时回归的位置更加准确。为进一步验证重新设计的锚点对召回率(Recall)的影响,统计锚点设计前后测试集中图片的召回率(Recall)随IOU值的变化曲线图,如图12所示。从图中可以看出,经过锚点重新设计的Refine-ACTDD模型明显具有更高的召回率(Recall)。实际检测的效果如图13所示,从对比的效果图中可以看出,小型缺陷检测的召回率(Recall)得到了明显的改善。
为验证Attention模块对复杂背景的铸件外观缺陷检测的具体影响,在训练集上分别对有无Attention模块的模型进行了训练和结果测试。复杂背景的干扰会导致铸件外观缺陷检测的错检率明显提高,因此本节统计了模型在增加Attention机制前后各类别缺陷错检率大小,具体结果如表5所示。从表中可以看出,在增加Attention机制后,缩孔和多肉缺陷的错检率得到较大的下降,分别降低了2.47%和2.5%,这主要是因为铸件外观的背景形状和颜色等与缩孔缺陷和多肉缺陷相似,所以上述两种缺陷更易受到背景的干扰,检测结果如图14所示。从图中可以看出,增加Attention机制后可以明显减少工件表面的特殊形状、颜色和切削液残留等复杂背景的干扰,能够降低铸件外观缺陷的错检率。
表5 错检率对比结果 %
为验证Refine-ACTDD算法模型的整体效果,将其与原算法RefineDet和目前广泛应用于工业界的目标检测算法Faster-RCNN和YOLOv3算法进行对比实验。在模型训练后,对上述算法的Recall和Precision进行了统计,选取两种典型的缺陷类型,分别是小体积缺陷的缺肉缺陷和较大体积缺陷的多肉缺陷,其Precision-Recall曲线如图15和图16所示。从Recall-Precision的曲线图中可以看出,Refine-ACTDD相比RefineDet、YOLOv3和Faster-RCNN具有较好的性能。
模型检测的正检率和MAP如表6所示,从表中可以看出,Refine-ACTDD具有最高的平均正检率95.44%,与YOLOv3、Faster-RCNN和RefineDet相比,平均正检率分别高出16%、1.94%和2.62%,MAP分别高出17.9%、11.82%和3.3%。
表6 对比实验检测结果(正检率/MAP) %
如图17所示,YOLOv3以0.015 s的检测时间在上述算法中检测速度最快,但是正检率表现较差;Faster-RCNN具有较高的正检率但检测时间确高达0.039 s;Refine-ACTDD相比于RefineDet仅以0.003 s的时间代价获得最高的正检率,并且检测的时间明显快于Faster-RCNN算法,这说明Refine-ACTDD算法兼具高的正检率和检测效率。具体检测效果如图18所示,结合图15和图16曲线可以看出,Refine-ACTDD无论检测较大缺陷还是小型缺陷均表现较好,与RefineDet算法相比,其在小缺陷的检测上效果得到了提升。Faster-RCNN在小型缺陷检测上具有较高的召回率(Recall),但是由于铸件外观复杂的背景干扰,因而铸件的背景也会误判为缺陷,导致MAP较低。YOLOv3算法在小型缺陷的检测方面表现较差,漏检数较多。Refine-ACTDD算法通过设计密排锚点和加入注意力机制,较好地解决了上述问题。
本文提出一种基于深度学习的缺陷外观缺陷检测算法。该算法基于RefineDet算法进行改进,采用密排锚点的方法,提高了小型缺陷检测的召回率;通过引入注意力机制,避免了复杂背景对检测干扰大等问题;将深度学习与轮廓发现方法相结合,解决了小样本缺陷的端到端检测的问题;并提出对比训练方法减少上下文信息对缺陷检测的干扰,得到6.5%正检率的提升。本文所提出的缺陷检测算法能够达到95.44%的平均正检率和89.94%的MAP,与YOLOv3、Faster-RCNN和RefineDet算法相比,平均正检率分别高出16%、1.94%和2.62%,MAP分别高出17.9%、11.82%和3.3%。实验结果表明,所提算法在较快的检测速度下,具有较高的正检率,解决了铸件外观缺陷因体积小、背景干扰大所造成的检测准确率低等问题。虽然获得了较高的准确率,但是该准确率还无法完全应用于生产实践,因此未来需要进一步提高检测的准确率并增加检测缺陷的种类。