基于深度学习的螺纹钢表面缺陷检测①
2021-08-02赵月张运楚孙绍涵
赵月,张运楚,2,孙绍涵,王 超
1(山东建筑大学 信息与电气工程学院,济南 250101)
2(山东省智能建筑技术重点实验室,济南 250101)
螺纹钢已广泛应用于房屋、道路、水坝、隧道等土建工程,是不可或缺的结构材料.对于整个钢铁行业来说,螺纹钢的轧制工艺和质量监控手段仍存在大量需要改进的问题.其中典型问题是螺纹钢轧制过程中产生的表面缺陷,主要有结疤、小气泡、麻面、划痕、凹坑和擦伤等,如不能及时发现就会生产出大量废品,严重影响企业经济效益.目前,德国和美国已经有应用于生产线的产品,但是价格高昂.国内虽然已经开发成功应用于冷轧带钢[1]、中厚板[2]、热轧带钢生产线的表面缺陷在线检测系统[3],但基于螺纹钢表面缺陷检测研究相对缓慢,基本上还处于实验阶段.
目前国内螺纹钢生产企业大多采用人工目检的方式对螺纹钢表面缺陷进行检测,由于人工目测的方式受眼睛的感光性能、色觉反应等影响,极易产生视觉疲劳,从而漏检错检.基于传感器对螺纹钢缺陷的检测方式,括涡流检测[4–8]、漏磁检测[9–12]、电容检测[13]、红外检测[14]和超声波检测[15]等,虽然能对螺纹钢表面的缺陷进行检测,但是只能用于对精确率要求不高的环境中,所以检测的缺陷种类也会受限.而应用机器视觉检测技术,如激光扫描方式、线阵CCD 摄像机、面阵CCD 摄像机,虽各有优势,但仍存在不可忽视的弊端,如对螺纹钢表面的灰尘杂质敏感,维护复杂等.
根据钢铁材料产生缺陷的成因分析[16–20],研究人员针对钢体表面缺陷的自动提取和识别做了进一步的研究,其中最主要的问题是缺陷特征的提取和分类.缺陷特征的提取可分为人工提取特征和基于深度学习的方法进行特征提取,而人工提取费时费力,且精准性较弱,需要使用者拥有大量的知识积累或者遍历图像,过程复杂.而基于深度学习的方法,可以通过对数据的扩充[21]、迭代[22],找出可以替代原始数据的特征向量,但自动识别的方法还未达到适用性,还需要结合机器学习的新发展进一步的研究[23,24].自Hinton 等提出深度学习的理论后,深度学习网络开始蓬勃发展.赵海文等人,在对于汽车轮毂表面缺陷检测的研究中,将处理后的图片输入已经训练好的卷积神经网络,此方法具有鲁棒性高、耗时短的优点,但是仍存在缺陷漏检的现象[25].王庆等采用BP 神经网络对在线冷轧带钢表面缺陷进行检测分类的方法[26],使得检测系统的识别率达到97%;杨加东等以CCD 摄像机为视觉结合图像处理技术,利用BP 神经网络进行缺陷分类[27],目前采用比较多的是神经网络、支持向量机等机器学习算法,但实现需要大量的缺陷样本数据.
本文提出一种基于深度学习框架Faster RCNN的螺纹钢表面缺陷检测方法.针对螺纹钢表面缺陷样本数据较少的问题,利用深度卷积对抗生成网络DCGAN对数据集增强,采用Faster RCNN 构建螺纹钢缺陷检测模型,利用迁移学习方法实现小样本螺纹钢表面缺陷检测,实验表明所设计的方法具有较好的稳定性和实用性,能有效地解决人工检测过程中效率低、误检率高等问题.
1 螺纹钢表面缺陷图像分析
本文所研究的螺纹钢表面缺陷图像均取自工业生产线上所拍摄的图像,其中螺纹钢表面主要的缺陷分别如图1所示:(1)划痕是在螺纹钢表面受轧制压力过大或螺纹钢表面沾有氧化铁皮等原因而形成的深度大小不相同的沟槽,呈无规律的分布于螺纹钢表面;(2)结疤是受榨汁的负荷问题,或者撞击引起的螺纹钢表面的突起;(3)麻面是受轧槽磨损或钢坯加热不当等原因而造成螺纹钢表面产生大量的凹凸不平的粗糙面,通常呈周期性的分布于螺纹钢表面.
图1 螺纹钢表面常见缺陷
随着制造工艺的提高,在螺纹钢的制造过程中表面缺陷的产生越来越少,限制了负样本的获取,所以针对小样本的表面缺陷检测方法是必然趋势.
Faster RCNN是Girshick 经过RCNN和Fast RCNN的沉淀后,在2016年提出的一种新的图像检测与分类的框架,在结构上Faster RCNN 摒弃了传统的滑动窗口和SS (Selective Search)方法,直接使用RPN 结构生成检测框,将图像的特征提取及分类都融合在了一个网络中,提高的综合性能的同时,加快了图像检测的速度,本文拟在提高检测精度的同时,可以使小样本数据于深度学习框架上获得相对良好的检测效果.
2 螺纹钢缺陷检测总体方案设计
针对工业实际生产过程所造成的螺纹钢表面缺陷较少的问题,本文设计了一种基于DCGAN的数据增强方法,并构建了基于小样本研究的螺纹钢表面缺陷检测模型.算法的整体框架如图2所示,将工业CCD 相机获取的螺纹钢图像进行图像预处理,采用DCGAN的方式对数据集进行扩充,然后将扩充的数据集标注并进行训练集验证集的划分后输入到卷积神经网络ZFnet中生成特征图,同时,RPN 结构会按照设定好的比例生成anchor 作为初始的检测框,在RPN 层链接全连接层用来做二分类来区分前景和背景以及设定回归参数对检测框的位置进行修正.PRN 将生成的anchor 投影到特征图上获得特征矩阵,将每个特征矩阵通过ROI pooling层缩放到统一的7×7 进行展平处理,最后通过全连接层预测检测结果.
图2 基于Faster RCNN的螺纹钢缺陷检测框架
3 螺纹钢表面缺陷检测模型设计
3.1 基于DCGAN的数据增强
针对螺纹钢生产线上的负样本短缺的问题,本文采用DCGAN来生成新的负样本数据.DCGAN是在原GAN 理论的基础上提出的,其结构如图3所示.
图3 DCGAN 示意图
包括能够生成虚假样本的生成器,和判别真伪的判别器.通过将将设定好的噪声输入到生成器中,同时训练样本和生成器生成的虚假的样本一同输入到判别器中,从而得到输出为真实或者虚假的数字,分别用1和0 表示.通过生成器与判别器之间的相互欺骗,最终使得判别器无法对生成器生成的虚假螺纹钢图像样本与真实的原螺纹钢样本进行辨别.相较于GAN,DCGAN 在生成器上使用卷积替代池化层容许网络学习自己的空间上采样,对于判别器,采用了去卷积替代池化层容许学习自己空间的下采样,从而生成与原始数据相似度很高的螺纹钢缺陷数据.
将工业螺纹钢生产线上采集到的小样本螺纹钢图像输入搭建好的DCGAN 模型中,学习率设置为0.001,设定0.5的momentum来加速训练速度,经过800 次迭代,生成的结果如图4所示.
图4 基于DCGAN的生成数据
可见通过生成对抗学习,模型已经初步学习到螺纹钢的表面结构,因为DCGAN 相较于传统的图像处理算法扩充的缺陷形态和尺寸位置以及大小都具有较高的随机性,更适合对深度学习框架的训练.
3.2 特征提取网络设计
采取ZFNet 作为特征提取物网络,ZFNet是在AlexNet 之后提出的,在AlexNet的基础上进一步提升了分类效果,他们的差异表现在,AlexNet是用两块GPU的稀疏连接结构,而ZFNet 只用了一块GPU的稠密链接结构,并将AlexNet的第一层卷积核的大小由11×11 变成7×7,步长由4 缩短到了2,ZF 网络通过使用相对较小的卷积核和步长,从而保留了更多我们所需要的特征,具有更高的准确率.
ZF 网络一共有7 层,分别对卷积层、池化层进行定义,第1 层卷积层是采用96个7×7的卷积核,步长为2;第2 层最大池化层采用3×3 卷积核,步长为2;第3 层卷积层采用256个5×5 卷积核,步长为2;第4 层最大池化层采用3×3 卷积核,步长为2;第5 层卷积层采用384个3×3 卷积核,步长为1;第6 层池化层采用3×3 卷积核,步长为1,第7 层采用256个3×3 卷积核,步长为1.ZF 网络结构图如图5所示.
图5 ZF 网络结构图
ZF 网络在每层卷积后引入了中引入了ReLU 非线性激活函数,相比于Sigmoid 函数受输入值非常大或者非常小而产生的过饱和、梯度消失问题,ReLU 函数可以使部分神经元输出为零,使得神经网络具有稀疏性,从而抑制过拟合问题.输入线扫后的螺纹钢图片经过5 层卷积层和2 层最大池化层,最终输出螺纹钢图像的特征图,从而达到了与RPN 区域建议网络进行参数共享.
3.3 RPN 网络模块
3.3.1 RPN 网络anchor 参数设定
RPN 候选区域建议网络结构如图6所示,特征提取网络对输入的螺纹钢图像提取卷积特征图,再连接一个3×3 大小的滑动窗口,然后再分成两路,其中一路连接尺寸为1×1,深度为18的卷积层,输出的是得分代表每一个位置的12 种 anchor是非目标和目标的概率;另外一路连接的是尺寸为1×1,深度为36的卷积层,输出的是每个对应点对应的12 种 anchor的4个参数,分别是候选框的中心点坐标x、y和候选框的宽和长w、h.
图6 RPN 候选区域建议网络结构
对于本项目中所拍摄的螺纹钢各类缺陷,其中最小的凹坑缺陷也要占900×300 尺寸子图的百分之一多;基于划痕的缺陷一般在图像中处于横向区域,在其子图的占比大概在 1/5 到1/2 左右,根据各种缺陷的尺寸,本文对原始的anchor 进行了面积方面的调整,设计了适用于螺纹钢缺件检测的24 种不同的先验 anchor 尺寸,其面积分别是144 平方,72 平方,36 平方,18 平方,每种面积尺寸又为3 种长宽比,分别是2:1、1:2、1:1,这样 每个对应点对应的anchor 数量共计12个,可以满足螺纹钢缺陷检测中所要检测的所有缺陷大小.
3.3.2 非极大值抑制
非极大值抑制算法的目的是消除掉重叠冗余的候选框,它可以实现从大量的候选框中选取在这些邻域中分数最高(即为目标缺陷概率最大)的候选框,并对分数低的候选框进行抑制.它在目标检测和分类的领域中应用广泛,在Faster RCNN 同样引入了这一算法.
在RPN 网络特征提取过程中,由于RPN 生成的候选区域数量非常多,为保证能够在上万个anchor中采样到满足我们需要的anchor,需要对生成的anchor进行分类筛选,筛选出满足需要的正负样本,其中,正样本代表螺纹钢表面缺陷区域,负样本表示的是无目标区域,正负样本的筛选采用IoU的方法,如图7所示,即真实的边框和预测边框之间的交集与真实边框和预测边框之间的补集之比.
图7 交并比的计算图
针对于部分凹坑、小划痕等尺寸比较小的缺陷,其对于anchor 边框的移动相对较敏感,极易被划分到负样本,导致负样本的容量远大于正样本.所以在设定阈值时,采取降低部分阈值的方法对螺纹钢缺陷检测会有比较好的检测效果,本文将正样本的交并比阈值设定为0.5,负样本设定为0.1 以下,就可以得到相比较多的正样本,但是由于降低了阈值,导致部分正样本中掺杂少量负样本,所以在起初设计的本交并比的基础上,选择交并比在0.3 到0.5的区域内的anchor 进行再判定,优先的选择大尺寸区域作为正样本,而其他的小尺寸anchor 产生的候选区域列为负样本.通过设计合适的交并比,可以达到对于正负样本很好的划分效果.交并比正负样本划分方法如图8.
图8 交并比正负样本划分方法
3.3.3 RPN的损失函数
RPN 网络的整体损失函数公式如下:
其中,i为最小批次anchor的索引;pi为anchor是预测目标概率;ti为预测边界框的4个坐标参数;t∗i是positive anchor 对应的ground truth 包围的坐标向量;Ncls表示一个mini-batch中所有样本数量;Nreg表示anchor 位置的个数.
Lcls是所检测的目标或非目标对数损失:
其中,坐标参数的定义为:
3.4 ROI Pooling 层
ROI Pooling是池化层的一种,在Faster RCNN中该池化层针对的是RPN 生成的候选框在特征图上的映射,也就是ROIs.ROI Pooling的目的就是使输入特征图的尺寸不固定而输出固定输出特征图的尺寸,其计算的方法是:对一个大小不固定但是通道数固定的卷积层输出,将映射后的区域划分为与输出维度相同的sections,对每个sections 都做最大值池化处理,这样就可以从不同大小的方框中得到固定大小相应的特征图像.
设定IoU 阈值后,将划分出的正负样本送入ROI池化层,通过输入任意大小的特征,可以输出固定维数的向量,将这些向量送入全连接层得到两个输出,一个输出是多分类,即螺纹钢表面缺陷的种类,另一个输出是框回归.
4 基于迁移学习的训练过程
4.1 数据集的划分
实验所需的数据集是根据原论文中VOC2007 文件夹进行划分的,根据统计,本项目共获得原始螺纹钢图像数据275 张,根据缺陷种类的划分标准,将螺纹钢图片的种类分为4 种,第1 种是螺纹钢正常图片,计72 张;第2 种为结疤(jieba),包括小气泡在内,计57 张;第3 种为麻面(mamian),共计73 张;第4 种是划痕(huahen),包含擦伤、凹坑在内,计84 张.
扩充后的4 种种类共计1600 张,存入JPEGImages文件夹中,使用labelling 软件对这些图像进行标注,并将标注好的XML 文件对应储存于Annotations 文件夹中.将XML 文件名对应生成trainval.txt 作为存放图像的文档,并根据划分比例10:1 分别划train.txt、val.txt并存入到ImageSets 文件夹中.图9是扩充后的部分样本集.
图9 扩充后的部分样本集
本文通过DCGAN有目标的生产了大量的新螺纹钢缺陷数据,弥补了本身负样本数据的不足,最后将生成的样本图像送入经迁移学习训练过的模型中.
4.2 基于迁移学习的模型训练
本文硬件部分采用英特尔 Core i7-7700 处理器,内存8 GB,GPU是Nvidia GeForce GTX 1050 Ti (4 GB)单路GPU 对目标检测模型进行搭建,软件部分选取Windows 10、CUDA10.1+CUDNN6.0 以及 Anaconda3、PyTorch1.5、torchvision0.6 对螺纹钢缺陷检测模型进行预测和训练.
迁移学习的种类有很多,比如基于特征、基于参数、基于关系等.由于本文中的螺纹钢表面缺陷样本较难获取,所以选择了基于参数的迁移学习对螺纹钢表面缺陷算法进行训练,其原理是利用现有的优质模型用自己的数据进行Finetune 从而可以实现小样本的高精度检测,基于Faster RCNN的迁移学习过程是:首先对网络进行预训练,保存由大规模数据集(ImageNet)训练完成的初始化网络权重参数作为预训练模型的权重参数,保留模型的前几层参数,对后几层进行重新训练.在对螺纹钢缺陷检测模型训练的过程中,采用了RPN Loss 与Faster RCNN Loss 相互联合训练的方法,其中参数的设定步骤是:
(1)使用ImageNet 分类模型初始化前置卷积网络参数,可以得到螺纹钢缺陷检测模型的初始化权重和参数;
(2)固定RPN 网络独有的卷积层以及全连接层参数,并用RPN 生成的目标建议框训练Faster RCNN的参数;
(3)把Faster RCNN 训练好的前置卷积网络层参数固定,对RPN 卷积层和全连接层参数微调;
(4)固定前置卷积层参数的同时微调RPN 全连接层参数;
(5)通过RPN和Faster RCNN 前置卷积网络层参数共享.
4.3 检测结果分析
训练和检测的结果分别如图10、图11所示,可以看到该检测系统对于螺纹钢缺陷的检测具有很好的效果.
图10 基于迁移学习训练检测结果
图11 螺纹钢缺陷检测部分检测识别效果图
通过训练和测试得到缺陷检测系统的检测误差主要来源是划痕的漏检,其识别精度仅92.37%,而结疤识别精度为95.36%,麻面为97.72%,错误的原因是因为划痕的尺寸多样化,部分形状也与结疤类似,且数据集样本较少,导致影响检测精度下降.
5 结论与展望
本文采用深度学习模块采用Faster RCNN 作为深度学习的基本框架,构建了基于小样本学习的螺纹钢表面缺陷检测模型.针对工业实际生产所造成的螺纹钢表面缺陷样本较少问题,设计了一种基于DCGAN的数据增强方法,通过DCGAN有针对性地产生了大量的新螺纹钢缺陷数据,弥补了本身负样本数据的不足,最后将生成的样本图像送入经迁移学习训练过的模型中.实验证明本文设计的缺陷检测方法能够快速准确地都螺纹钢表面缺陷进行定位和分类,提高了缺陷识别的效率.