文生平,李超贤
(华南理工大学 聚合物新型成型装备国家工程研究中心,广东省高分子先进制造技术及装备重点实验室 聚合物成型加工工程教育部重点实验室,广州 510640)
铝型材在日常生活和工业场景有非常重要的应用。在铝型材的生产过程中,由于不确定因素的影响,铝型材表面会出现各种随机性比较强的缺陷,比如碰伤,刮花,凸粉,脏点等常见的缺陷。缺陷不仅影响到材料外观,也影响到材料正常使用。传统缺陷检测方法采用人眼检测。如果处于精力集中的紧张状态,人眼会出现疲劳状态,检测效率降低。目前基于机器视觉的检测系统不受太多客观因素的影响,可以长时间保持较高的检测准确性。随着现在用人成本的逐渐增高,工厂自动化的趋势越来越明显[1],制造业面临着从劳动密集型到科技密集型的转型[2],在工厂自动化的转型过程中,基于机器视觉的检测系统更是一项很重要的技术[3]。
基于深度学习的缺陷检测已经应用于各种工业场景。江佳佳等人利用卷积神经网络学习鲸鱼声音数据的特征,以达到区分不同的鲸鱼哨声[4];宋李美等人通过把卷积神经网络与传统算法骨架提取,图像阈值处理相结合,实现对金属微小划痕的检测[5];华南理工的文生平等人基于卷积神经网络,设计类似于SSD算法的算法框架,实现对圆锥滚子缺陷检测[6];冼涛等人设计多任务卷积神经网络,以检测弹簧线插座的缺陷识别[7]。河海大学的沈晓海等人利用faster-rcnn,分割等技术对铝型材表面缺陷进行了检测[8]。
目前基于铝型材的缺陷检测算法研究较少,河海大学等研究员的算法复杂度较高,检测速度和精度有待提高。铝型材表面缺陷用普通的深度学习检测算法难以检测,第一个原因是铝型材的某些缺陷比如脏点,相对于擦花、凸粉等缺陷,脏点的面积过小,和背景色相似,给检测带来一定的难度。第二个原因是不同缺陷之间形态差异较大,脏点缺陷形态类似小圆点,擦花缺陷大多是狭长,呈线性的缺陷,擦花长度也有较大区别,严重的擦花缺陷横向跨越整个图像,轻微的擦花缺陷长度比较短,传统的卷积层对于这种形状的缺陷,提取能力不够强,限制了整体的检测效果提升。图1是缺陷样本图。为了解决小缺陷检测问题,使用Gaussian-yolov3算法模型,同时Gaussian-yolov3比yolov3的优势在于,Gaussian-yolov3计算预测框的置信度,并且利用置信度函数计算损失,提高了整体的预测框的位置精准度。原始Gaussian-yolov3算法对铝型材小缺陷和细条状缺陷特征提取能力有限,所以本论文在原始Gaussian-yolov3的基础上,使用密集连接块技术,进一步提升对特征的利用率,提高检测效果。为了提高狭长细小缺陷的检测率,参考可变性卷积思想,设计出新的横向变形卷积,以满足检测狭长缺陷的需求。
图1 铝型材表面缺陷样本
铝型材表面的脏点缺陷和碰伤缺陷面积相对较小,仅用最后一层特征图检测效果不理想。yolov3算法采用金字塔形式特征采样,从不同的感受野范畴采集不同语义的特征,形成不同尺寸的特征图,将不同尺寸的特征图,通过上采样的方式,在特征图通道方向融合,以此提高脏点和碰伤的检测准确率。其结构如图2所示。
从图2可以看到,原始铝型材缺陷图像经过特征提取网络,得到3种不同尺寸的特征图。低尺寸的特征图包含着更多大面积缺陷,比如凸粉,擦花的隐含特征,高尺寸的特征图包含更多小尺寸缺陷凸粉,脏点的隐含特征。
图2 yolov3金字塔结构图
图3 检测器模块
铝型材原始图像经过特征提取网络和检测器模块的处理,形成3种不同尺寸的特征网格图。算法把3个不同尺寸的网格图映射到铝型材原始图像上,把原始图像划分成不同大小的网格。算法在每一个网络当中设定3个不同尺寸的anchor-box,并且在每一个网格当中输出3个缺陷预测框向量,向量数值包括预测框包含缺陷的置信值,预测框相对于anchor-box的长宽偏差,中心坐标偏差,以及擦花,碰伤,凸粉,脏点出现的概率。算法根据图像标签以及ground-truth的坐标长宽计算误差,Gaussian-yolov3算法在yolov3的基础上,计算缺陷预测框长宽,中心坐标的置信度,置信度越高,预测框约准确率。损失函数当中加入置信度函数计算误差,误差反向反馈到卷积神经网络当中,使用梯度下降法计算权重梯度,更新权重得到全局最优解。anchor-box的示意图如图4所示。
图4 anchor-box机制
在铝型材缺陷样品当中,脏点缺陷的数量相对于其他缺陷少很多,只占了10%,而且脏点面积小,颜色与背景色有一定的相似度,所以为了加强模型对小缺陷的纹理特征和颜色特征的提取能力,更加充分利用卷积层的输出信息,在Gaussian-yolov3的基础上,本文在特征提取网络当中加入密集连接块,通过对特征极致的使用,提高模型对脏点缺陷的检测准确率。密集连接块的结构如图5所示。
图5 密集连接块
在一个密集连接块中,第L层的输出与它之前的每一层都有关,设第L层的输出为XL,第L层的激活函数为HL,则有:
(1)
式中,[]代表拼接操作,指将第L-1层的输出与前面各层的输出按照通道数维度组合在一起,再通过激活函数增加非线性。
在特征提取网络当中。包含一个常规卷积层和5个残差单元。特征提取网络接受铝型材缺陷原始图像作为输入,经过一个3×3卷积层的初步特征提取,形成初步特征图,初步特征图沿着网络结构进入五个残差单元结构。残差单元由和若干个残差块组合而成。残差块设计参考了残差网络网络,为了缓解梯度消失,不断加深网络结构深度。
本论文在8个残差块当中使用密集连接的方式,使每一个残差块之间的特征信息得到共享互补,使模型可以充分提取到脏点缺陷和碰伤缺陷的纹理特征和颜色特征。在残差块内部使用了残差连接,特征融合方式是特征图对应的像素相加,虽然生成了新特征,但是原有特征在一定程度上有损失。而密集连接的特征融合方式是在通道维度上拼接形成新特征,卷积网络自动学习特征的组合,避免了人为干预特征融合带来的影响,保证融合过程中没有特征损失。
同时使用密集连接技术,加强了特征的重复使用,加强了底层特征对预测结果的影响。当网络深度够深,密集连接可以缓解梯度消失和梯度爆炸的问题。
普通卷积神经网络模型主要依赖数据本身多样性,克服特征图的几何变化。模型内部不具有适应几何变化的机制。根据对铝型材表面缺陷的分析,擦花缺陷大多数都是呈横向的,细长状的缺陷,并且长度不一致,严重的擦花缺陷长度较长,轻微的擦花长度较短。擦花缺陷如图7所示。
图6 Gaussian-yolov3中的密集连接结构
图7 部分擦花缺陷样本
基础Gaussian-yolov3的卷积层都是固定的正方形形状,对这种条状的缺陷特征提取能力不够强。为了解决这个不足,在Gaussian-yolov3算法的基础上,使用可变形卷积的卷积技术[11],改变普通卷积固有的几何形状。基础的可变形卷积在X,Y方向上都会有偏移,但是从擦花缺陷的形态上分析,大部分以横向缺陷为主,所以为了减少计算量和计算速度,本论文设计的可变形卷积只在X方向进行偏移。
普通2D卷积分两个步骤:1)在输入特征图上使用固定尺寸的卷积核R进行采样;2)使用卷积核的权重进行计算采样,并且把计算结果相加。3*3的卷积核R的定义如下:R={(-1,-1),(-1,0),(0,0)....(0,1),(1,1)}对于输出特征图上的一个点p0, 特征图输出如下所示:
(2)
对于横向变形卷积,在固定卷积R的基础上,增加了偏移量Δpn,偏移量用于改变数据采集点的位置,使达到可变卷积的效果。可变卷积的计算如下:
(3)
横向变形卷积在特征图上的每一个位置都生成一个X方向偏移量,对于原始特征图输入,横向变形卷积算法单独学习一个位置偏移矩阵,位置偏移矩阵的尺寸与输入特征图的尺寸保持一致,保证输入特征图的每一个特征点都有横向偏移量。位置偏移矩阵的通道数是输入特征图的通道数保持一致,储存X方向的偏移。位置偏移矩阵计算如图8所示。
图8 横向变形卷积输入特征图
经过一个额外的卷积计算操作,生成另外一个位置偏移矩阵。对于位置偏移矩阵的每一个数据点,都对应原始特征输入的位置偏移。
在铝型材缺陷检测任务当中,使用mAP和AP来衡量算法的分类和检测性能,把改进算法对一张图像的检测时间作为性能指标,衡量一个算法的效率。同时将目标检测算法和其他传统检测算法做性能比较。mAP,AP公式如下:
(4)
(5)
其中:TP表示检测出铝型材缺陷判断正确的数目,FP为判断错误数目,FN表示没有检测出铝型材缺陷的数目。针对每一种铝型材缺陷,计算精确度和召回率,画出PR曲线,计算PR曲线的面积便是平均精度AP。mAP是所有铝型材缺陷的平均精度。
(6)
(7)
其中:AP是衡量某一个缺陷的分类效果的指标,p(r)表示当分类阈值取不同的值r的时候,计算出来的准确率。r的取值范围是0,0.1,0.2....1,n=11。APi表示类别i的AP值。
数据集包含了2 000张缺陷图像,由于缺陷样本数比较少,所以利用一定的数据增强技术,比如翻转,旋转,剪裁等,扩展数据集,并且使用迁移学习技术初始化模型权重。把缺陷图像均匀的打乱,把整个数据集分成三部分,第一部分是训练数据,用于训练模型,第二部分是验证数据,在训练模型的时候,对验证图像进行预测,计算mAP或者损失函数等指标。第三部分是测试数据,用于验证训练好的模型的精度和性能。训练数据占有70%,验证数据和测试数据分别占有15%。
实验室硬件配置CPU为Intel Core i7-7700。软件配置系统为Ubantu16.04。深度学习框架使用Pytorch,编写代码的编译环境使用Jupyter。标注数据的工具使用LabelImg。图形处理工具使用python的集成工具opencv。编程语言使用python 3.0。
针对同样的训练和测试图像数据,把常见的目标检测算法和改进的Gaussian-yolov3进行了性能对比,对比mAP和针对每一张图像的检测速度。对比组实验的算法包括SSD[12],Faster R-cnn[13]。
从表1的数据可以看到,SSD512使用多尺度检测方法,mAP达到了87.92%,和Gaussian-yolov3对比没有优势。从检测速度可以看到,SSD512的检测速度是Gaussian-yolov3两倍检测速度,SSD512是51.2 ms,改进的Gaussian-yolov3检测算法是27.8 ms。SSD模型另外一个改进版本SSD300,检测速度是26.4 ms,和Gaussian-yolov3检测速度基本一样,但是mAP是78.13%,和Gaussian-yolov3的mAP精度相差较大。Faster-Rcnn属于two-stage目标检测算法,所以Faster-RCNN的检测速度慢很多,136.6 ms,精度只有82.89%mAP。从对比实验可以看到,由于Gaussian-yolov3使用多尺度目标检测,检测精度对比其他目标检测算法有很大优势,结合残差网络结构,检测速度也是优于其他算法。
表1 不同目标检测算法实验对比
为了验证对Gaussian-yolov3改进策略的有效性,本实验将原始的Gaussian-yolov3模型与通过改进的算法进行实验对比,得到总体的检测mAP指标,各种缺陷单独的AP指标以及检测单张图像所需要的检测时间。
表2 改进算法的mAP有效性验证1
表3 改进算法的准确率有效性验证2
从上表可以看出,经过密集连接算法改进,碰伤和脏点等小缺陷的检测准确率有明显的提高,验证了密集连接结构的改造有效性。使用了横向变形卷积,除了擦花缺陷检测准确率有明显提高,其他缺陷的检测准确率也有明显提高。单张图像的检测速度,改进的Gaussian-yolov3的检测速度27.8 ms,能满足工业实时检测的需求。
在生产线上铝型材出现缺陷的情况概率比较低,训练图像数量非常有限。如果训练图像数量不足,模型容易出现过拟合。为了避免出现过拟合的现象发生,对训练数据进行一定程度的增强,增强目的是增加图像的数量,同时保持原本缺陷的完整性。采用常规的数据增强的方法,图像旋转、图像翻转、图像剪裁、增加噪音、添加模糊。
针对每一个样本,设置初始概率30%。每一个样本有25%的概率进行图像旋转10°;30%的概率进行翻转;40%的概率进行剪裁;10%的概率进行模糊;10%的概率添加噪音。策略a是旋转;策略b是旋转和翻转;策略c是旋转、翻转、剪裁;策略d是旋转、翻转、剪裁、模糊;策略e是旋转、翻转、剪裁、模糊、噪音。实验结果如表4所示。
表4 不同数据增强对比
设置不同的对比实验,对比传统的图像分类算法与Gaussian-yolov3分类准确率,使用准确率作为评判指标。(1)GLCM:计算灰度图像得到图像共生矩阵,计算共生矩阵得到矩阵的部分特征值,比如反差,能量,相关性,熵,分别代表图像的某些纹理特征。(2)HOG:HOG特征用于物体检测的特征描述子。通过计算和统计图像局部区域的梯度方向直方图来构成特征。具体实现方法是:将图像分成小的连通区域,采集连通中各像素点的梯度的或边缘的方向直方图;把这些直方图组合起来构成特征描述器。
通过GLCM和HOG得到特征向量,使用SVM和MLP做多分类任务。使用SVM作为基分类器,使用一对多作为分类策略,训练4个SVM模型,4个模型做投票分类。MLP是一个多层的神经网络,由输入层,隐藏层,输出层组成。输入层的维度由特征向量的维度决定,隐藏层有15个隐藏单元,每个单元的里面的维度和输入层的维度保持一致。输出层由4个输出单元组成。实验结果如表5所示。
表5 SVM,MLP,Gaussian-yolov3准确率实验对比
由上表可以看出,使用HOG和GLCM作为特征提取算法,SVM和MLP作为分类算法,4种缺陷的分类准确性均比改进的Gaussian-yolov3要低。而且基于HOG和GLCM的特征提取需要大量人工设计特征,消耗大量时间成本。所以改进的Gaussian-yolov3要优于传统的分类算法。
针对铝型材表面缺陷检测,使用Gaussian-yolov3作为基础目标检测算法。为了解决小缺陷检测问题,使用密集连接的方式增强特征融合能力。为了解决铝型材部分条状缺陷检测问题,使用横向变形卷积技术,增强卷积核在特征图上采集特征的能力。通过多组实验对比,改进的Gaussian-yolov3算法比原始的Gaussian-yolov3算法在检测准确度上更高。改进的Gaussian-yolov3算法检测速度和检测准确度均比其他主流目标检测算法要高,该算法具有较好的实时性,不仅可以提高生产效率,降低用人成本,而且可以帮助企业实现升级改造。如果能够获取更多原始缺陷样本数据,将进一步提高模型准确性。