摘要:
基于表面缺陷检测方法,根据数据标签的不同将其分为全监督学习模型方法、无监督学习模型方法和其他方法。细分归类,对比分析,总结每种方法优缺点,应用场景。
Introduction
表面缺陷检测是利用机器视觉设备获取图像来判断采集图像中是否存在缺陷。
利用被检表面或缺陷的不同性质进行成像方案设计,合理的成像方案有助于获得光照均匀的图像,并将物体表面缺陷明显地体现出来。
①针对被检表面颜色选择光源:如选择符合白色光源成像彩色布匹表面缺陷
②一句被检测表面反射性质选择不同成像方案:明场成像,暗场成像,混合成像
例:
1)针对易拉罐凹凸底部的表面缺陷检测,设计两个同心放置的圆锥环形明场光源,用于同时照亮易拉罐底部的中央和外围区域。
2)利用暗场成像对大口径光学元件表面微弱划痕进行检测。
面对的挑战:存在缺陷成像与背景差异小、对比度低、缺陷尺度变化大且类型多样,缺陷图像中存在大量噪声,缺陷在自然环境下成像存在大量干扰等情形。
《中国制造2025》白皮书:推广采用先进成型和加工发发、在线检测装置、智能化生产和物流系统及检测设备等,使重点实物产品的性能稳定性、质量可靠性、环境适应性、使用寿命等指标达到国际同类产品的先进水平。
缺陷的定义
在布匹表面缺陷检测中:
有监督方法:利用标记了标签(类别,矩形框或逐像素)的缺陷图像输入到网络中进行训练。此时的缺陷意味着标记过的区域或者图像。该方法更关注缺陷特征。例如:训练阶段将包含大片黑色范围的区域或者图像标记为异色用于网络训练,测试阶段,布匹中出现了大片黑色的黑色特征,即认为出现了“异色”缺陷。
无监督方法:将正常无缺陷样本进行网络训练,one-class learning,更关注无缺陷特征,当检测过程发现从未见过(异常)的特征,即认为检测出缺陷。即异常检测(Anomaly detection)
缺陷检测的定义
"缺陷是什么",“缺陷在那里”,“缺陷是多少”
①缺陷是什么:
对应CV中的分类任务
②缺陷在哪里
对应CV中的定位任务
③缺陷是多少
对应CV中的分割任务
表面缺陷检测深度学习方法
依据数据标签的不同:全监督学习模型、无监督学习模型和其他方法(半监督学习模型和弱监督学习模型)
2.1表征学习
根据网络结构的不同分为分类网络、检测网络、分割网络。将缺陷检测问题看作CV中的分类任务,粗粒度的图像标签分类或区域分类,像素分类。
2.1.1 分类网络:
基于CNN的分类网络:特征提取部分由级联的卷积层+pooling层组成,后面接全连接层(或average pooling层)+softmax结构用于分类。
1)直接利用网络进行分类:
根据工作特点,细分为原图分类、定位感兴趣区域(Region of interest,ROI)后分类和多类别分类
①原图分类:缺陷数据集放入网络进行学习训练
②定位ROI后分类:预先获取到感兴趣的区域(ROI),将ROI输入网络进行缺陷类别的判断。
③多类别分类:分类缺陷类型超过两类,采用基础网络进行缺陷和正常样本二分类,在同一个网络上共享特征提取部分,修改或者增加缺陷类别的分类分支。给后续的多目标缺陷分类网络准备一个预训练权重参数,权重参数通过正常样本与缺陷样本之间二分类训练得到。
2)利用网络进行缺陷定位
分类网络可以实现缺陷定位和逐像素分类
①滑动窗口:粗定位,通过较小尺寸的创库哦在原始图像上进行冗余滑动,将滑动窗口中的图像输入到分类网络中进行缺陷识别,最后将所有的滑动窗口进行链接,即可获得缺陷粗定位的结果。
②热力图:反应图像中各区域重要性程度的图像,颜色越深的区域代表其属于缺陷的概率越大。在热力图的基础上运用Otsu法和图割算法进一步得到准确的缺陷轮廓区域。CAM(Class activation mapping)和Grad-CAM方法获得热力图,本质上是通过加权特征图,确定网络模型是通过哪些像素作为依据来判断输入图片所属的类别。
③多任务学习:为了精细定位缺陷位置,设计的网络会加上额外的分割分支,两个分支共享特征提取的骨架(Backbone)结构,网络有分类和分割两个输出,构成多任务学习网络。兼顾两个网络的特点,对于分割网络分支,图像中每个像素都能被当做训练样本来训练网络。多任务学习网络不仅利用分割分支输出缺陷具体的分割结果,而且可以大大减少分类网络对样本的需求。
3)利用网络做特征提取器
利于CNN特征提取功能,先将图像输入到预训练网络中获取图像表征特征,在将获取的特征输入到常规的机器学习分类器(SVM)中进行分类
2.1.2检测网络
目标定位是获得目标精准的位置和类别信息
缺陷检测结构:Faster R-CNN(Region-CNN)的两阶段(Two stage)网络和以SSD(Single shout multibax detector)或YOLO(You only look once)的一阶段(One stage)网络。两阶段网络需要受限生成可能包含缺陷的候选框(Proposal),再进一步进行目标检测。一阶段网络直接利用网络中提取的特征来预测缺陷的位置和类别。
1)基于两阶段的缺陷检测网络
首先通过Backbone网络获取图像的特征图,利用区域生成网络(Region proposal network,RPN)计算锚框(anchor box)置信度,获取Proposal区域,然后对Proposal区域的的特征图进行ROIpooling后输入网络,通过对初步检测结果进行精细调整,最终得到缺陷的定位和类别结果。
常用方法针对Backbone结构或其踏征途、锚框比列、ROIpooling和损失函数等方面进行改进。
2)基于单阶段的缺陷检测网络
单阶段检测网络分为SSD和YOLO两种,利用整幅图作为网络的输入,直接在输出层回归边界框(Bounding box)的位置及其所属的类别。
SSD:特点在于引入了特征金字塔检测方式,从不同尺度的特征图中预测目标位置与类别。使用6个不同特征图检测不同尺度的目标,一般底层特征图用于预测小目标,高层特征图预测大目标。
追求检测速度,使用一阶段模型。追求检测精度,使用两阶段模型。
2.1.3分割网络
将表面缺陷检测任务转化为缺陷与正常区域的语义分割甚至实例分割任务,不但能精细分割出缺陷区域,还可以获取缺陷的位置、类别以及相应的几何属性(包括长度、宽度、面积、轮廓、中心等)。按照分割功能的区别分为:全卷积神经网络(Fully Convolutional networks,FCN)、Mask R-CNN。
1)FCN方法
图像语义分割的基础,利用卷积操作对输入图像进行特征提取和编码,再通过反卷积操作或上采样将特征图逐渐恢复到输入图像尺寸大小。
根据FCN网络结构差异,可分为常规FCN、Unet和SegNet
a)常规FCN方法
b)Unet方法
FCN结构,同时由编码器—解码器(Encoder-decoder)结构。特点在于引入了跳层连接,将编码阶段的特征图与解码阶段的特征图进行融合,有利于分割细节的恢复。
c)经典编码器—解码器结构,特点在于解码器中的上采样操作利用了编码器中最大池化操作的索引。
基于深度学习的分割网络还在不断提出,例如:LinkNet、DeepLabv3、PSPNet等。在最新模型中的模块,空洞卷积和金字塔Pooling也被添加了FCN框架中。生成对抗网络(Generative adversarial network,GAN)在CV中广泛应用,常用来生成图像,GAN由生成器和判别器模型构成。在结合GAN的缺陷检测方法中,生成器往往直接采用FCN网络,判别器通过分类模型来区分生成器的结果和Groundtruth,通过生成器和判断器的不断博弈,让生成器的输出结果逐渐接近Groundtruth。结合GAN的分割方法已经用在手机盖板玻璃信号孔缺陷分割{Vision based defect detection for mobile phone cover glass using deep neural networks}和道路裂纹缺分割{A conditional wasserstein generative adversarial network for pixellevel crack detection using video extracted images.}。
2)Mask R-CNN方法
最常用的图像实力分割方法。基于检测和分割网络相结合的多任务学习方法。当多个同类型缺陷存在粘连或重叠时,实例分割能将单个缺陷进行分离并进一步统计缺陷数目,语义分割往往将多个同类型缺陷当做整体进行处理。
目前大部分文献都是直接将Mask R-CNN框架应用于缺陷分割,路面缺陷分割、工业制造缺陷、螺栓紧固件缺陷和皮革表面缺陷。
分割方法在缺陷信息获取上有优势,但与检测网络一样,需要大量的标注数据,标注信息是逐像素,需要花费大量的标注经历和成本。
2.2 度量学习
使用深度学习直接学习输入的相似性度量。缺陷分类任务中,往往采用孪生网络(Siamese networks)进行度量学习。不同于表征学习,输入单幅图像转化为分类任务,孪生网络的输入通常为两幅或多幅成对图像,通过网络学习出输入图片的相似度,判断其是否属于同一类。孪生网络损失函数的核心思想是让相似的输入距离尽可能小,不同类别的输入距离尽可能大。
原始孪生网络的输入是两幅成对的图像,网络的“连体”是通过共享权值来实现的。
度量学习可以近似看作为学习样本在特征空间进行聚类,表征学习可以近似看作为学习样本在特征空间的分界面。相比于表征学习,度量学习的方法应用在表面缺陷定位中不太多,大部分都是应用在缺陷分类任务重。缺陷定位方面,输入孪生网络的图像对需要具有统一的内容形式,要求比较严格,无法适应复杂的工业环境。
2.3正常样本
常用表面缺陷检测的无监督学习模型是基于正常样本学习的方法。只需要正常无缺陷样本进行网络训练,One-class learning方法。正常样本学习的网络只接受正常(无缺陷)样本训练,使其具备强大的正常样本分布的重建和判别能力。当网络输入的样本存在缺陷时,往往会产生与正常样本不同的结果。
与有监督学习模型相比,检测到偏离预期的模式或者没有见过的模式,就是缺陷和异常。
依据处理空间的不同,本文将该缺陷检测方法分为基于图像空间和特征空间两种。通常该方法采用的网络模型为自编码器(Autoencoder,AE)和GAN。
2.3.1基于图像空间的方法。
在图像空间对缺陷进行检测,可以实现图像级别的分类和识别,也可以获取到缺陷的具体位置。
1)利用网络实现样本重建与补全
原理类似去噪编码器,当输入任意样本图像到网络中,可以得到重建后对应的正常样本。网络可以具备自动修复或者补全缺陷区域的能力。输入图像分别减去这些重建或修复图像可以获得残差图像,残差图像也是重建误差。能够作为判断待检测样本是否异常的指标。
重建误差过大时,可以认为输入图像存在缺陷,差异过大的区域即为缺陷区域。
重建误差很小时,即认为输入图像是正常样本。
2)利用网络实现异常区域分类
通常采用GAN的判别器。该方法的原理是训练生成对抗网络GAN以生成类似于正常表面图像的伪图像。训练好的GAN可以在潜在特征空间中很好地学习正常样本图像。
GAN的判别器可以用作分类器,用于分类缺陷和正常样本。
【Unsupervised fabric defect detection based on a deep convolutional generative adversarial network】提出了一种基于深度卷积生成对抗网络(Deep Convolutional GAN,DCGAN)的自动检测织物缺陷的新型无监督方法。该模型包括两个部分:第一部分部分利用模型中GAN的判别器生成了一个缺陷分布似然图,其中每个像素值都表示该位置出现缺陷的管理;第二部分通过引入编码器到标准DCGAN,实现重检测图像的重建。当从原始图像中减去重建图像时,可以创建残差图以突出显示潜在的缺陷区域。联合残差图和似然图以形成增强的融合图。在融合图上采用阈值分割算法进一步获取准确的缺陷位置,该方法在各种真实纺织物样品上进行评估和验证。
2.3.2基于特征空间的方法
在特征空间中,通过正常样本与缺陷样本特征分布之间的差异来进行缺陷检测。特征之间的差异也称为异常分数,当异常分数高于某个值时,即可认为出现缺陷。
基于空间的特征空间的方法往往只能实现图像级别的分类或识别,无法获取像素级别的缺陷位置,实际上,通过AE和GAN模块也能实现与图像空间检测方法类似的缺陷精确定位。
基于正常样本学习方法常用于简单统一的纹理表面缺陷检测,在复杂的工业检测环境,相比于监督学习的方法,其检测效果还不太理想。
2.4弱监督与半监督学习
较少应用于表面缺陷检测中
弱监督方法采用图像级别类别标注(弱标签)来获取分割/定位级别的检测效果。
半监督学习通常会使用大量的未标记数据和少部分有标签的数据用于表面缺陷检测模型的训练。
半监督的方法大部分用于解决缺陷分类或识别任务,还没有广泛应用到定位于分割任务重。
3、关键任务
3.1小样本
表面缺陷检测作为工业领域的具体应用。工业缺陷样本太少,相比于ImageNet数据集1400万样本数据,表面缺陷检测中的面临的最关键的问题是小样本问题,很多真实的工业场景下甚至有几张或几十张缺陷图片。针对工业表面缺陷检测中关键问题
1)数据扩增、合成与生成。
对原始缺陷样本采用镜像、旋转、评议、扭曲、滤波、对比度调整等多种图像处理操作来获取更多的样本。
数据合成,将单独缺陷融合叠加到正常样本上构成缺陷样本。
由于GAN在图像生成上的强大的能力,不少GAN的工作也应用于表面缺陷样本生成上。
2)网络预训练或迁移学习
深度学习网络参数较多,直接采用小样本训练网络很容易导致过拟合,但在预训练模型中存在一些比较共性的特征数据与权重信息。预训练网络或迁移学习是目前针对样本少最常用的方法之一
3)合理的网络结构设计
设计合理的网络结构可以大大减少样本的需求,
4)采用无监督与半监督模型方法
减少样本需求。
无监督模型中,只利用正常样本进行训练,因此不需要缺陷样本。
半监督方法可以利用没有标注的样本来解决小样本情况下的网络训练难题。
3.2实时性
缺陷检测方法在工业应用中的三个环节:数据标注、模型训练与模型推断。
实际应用更关注模型推断。
传统基于图像处理的表面缺陷方法中,FPGA并行加速架构常用于加速图像处理算子。
3.3与传统基于图像处理的缺陷检测方法比较
4、缺陷检测数据集
计算机视觉中的ImageNet、PASCLA-VOC2007/2012和COCO数据集,在不同的检测对象和场景下、研究都是基于不同的缺陷数据集。
选择DAGM和GDXray CASting作为示例数据集
DAGM为纹理缺陷数据集,6个类别的图像样本,大小为512×512像素,每个类别包括1000个无缺陷样本和150个有缺陷样本,常用于缺陷分类的应用场景。
GDXray Casting数据集包含2727个X射线图像,主要来自于汽车零件,铝制车轮和转向节。每个图像中的铸件缺陷都用边界框标记。数据集中图像的大小范围为256×256像素到768×572像素
5总结与展望
缺陷检测包括缺陷分类、缺陷定位和缺陷分割。基于深度学习方法是端到端的特征提取和分类。
1)网络结构设计
大部分网络都是由人工设计,从模型到包含多少层到每一层的详细结构都是漫长的设计和调参过程。
网络很难说最优,只是手工设计的网络在当前缺陷检测数据集上大致满足需求。
机器搜寻和自动生成的网络逐步替代人工设计的网络。大幅减少手工设计网络参数,检测的正确率也会上升。
2)网络训练学习
难以收集到所有类型的缺陷,只有良品数据集
如何利用类脑(受脑启发的)计算与仿人视觉认知模型,在有先验知识的前提下,来知道缺陷检测网络的训练和学习。
3)异域数据联邦学习
单个表面缺陷检测数据集往往很少。不同工业行业和领域中,真实工业表面缺陷数据非常多,一些缺陷种类也是共同的。
例如:划痕广泛存在于金属、液晶屏幕,太阳能电池板、玻璃等一系列材质表面。如何将不同领域的缺陷数据进行有效结合,在不同领域数据集中进行网络学习。打破不同应用场景之间的壁垒,充分学习不同领域之间的数据来提升网络性能。