一文梳理缺陷检测方法
共 4482字,需浏览 9分钟
·
2021-01-19 18:19
![](https://filescdn.proginn.com/56c85b726e0c459f9e60a2dcfe8eeb9c/a5bfce4fbfed80049adf8be739fb8b25.webp)
极市导读
表面缺陷不仅影响产品的美观和舒适度,而且一般也会对其使用性能带来不良影响,因此企业对产品的表面缺陷检测非常重视,以便有效控制产品质量。本文详细介绍了深度学习在表面缺陷检测领域的应用,包括缺陷检测的三种方法以及关键问题。 >>加入极市CV技术交流群,走在计算机视觉的最前沿
近年来,随着深度学习的快速发展,基于卷积神经网络(CNN)的计算机视觉技术在工业领域得到了广泛的应用。目前,机器视觉表面缺陷检测是CNN在工业上最成熟的应用之一。接下来我们将介绍深度学习在表面缺陷检测领域的概述。
![](https://filescdn.proginn.com/d92e3ab4fa107d562da76ce1cc6f8c43/b47c97dd948ff1aa485bcded9df6adfa.webp)
01 缺陷检测问题的定义
1.1 缺陷的定义
当前对于缺陷有两种认知的方式,第一种是有监督的方法,也就是体现在利用标记了标签(包括类别、矩形框或逐像素等)的缺陷图像输入到网络中进行训练. 此时"缺陷"意味着标记过的区域或者图像。第二种是无监督的方法,就是将正常无缺陷的样本进行学习,学习正常区域的特征,网络检测异常的区域。
1.2 缺陷检测任务
缺陷检测的任务大致分为三个阶段分别是缺陷分类、缺陷定位、缺陷分割,如下图所示,缺陷分类需要分类出缺陷的类别(异色、空洞、经线);缺陷定位不仅需要获取缺陷的类别还需要标注出缺陷的位置;缺陷分割将缺陷逐像素从背景中分割出来。
![](https://filescdn.proginn.com/ce8e9bce7f48098913a23a565129e453/a8280595e7381dc0042d42a5d065d1c4.webp)
02 表面缺陷检测的深度学习方法
根据缺陷检测的三个阶段其方法大致可以分为三类分别是分类网络、检测网络、分割网络。
2.1 分类网络
由于CNN强大的特征提取能力, 采用基于CNN的分类网络目前已成为表面缺陷分类中最常用的模式一般来说,现有表面缺陷分类的网络常常采用计算机视觉中现成的网络结构, 包括AlexNet, VGG, GoogLeNet,ResNet, DenseNet, SENet, ShuteNet,MobileNet等。利用分类网络结合上滑动窗口的方式可以实现缺陷的定位。
Deep learning-based crack damage detection using convolutional neural networks
检测对象:混凝土裂缝
主要方法:最早采用基于滑动窗口的CNN分类网络实现了裂纹表面缺陷定位, 两种滑动窗口冗余路径结合实现图像全覆盖, 如图所示, 图中(a)为滑动窗口路径示意图, 图中(b)为裂纹定位的结果图。
![](https://filescdn.proginn.com/f72e0409047d7aaa932db6f8e4262460/fdf4aef37b19c8383fc2818b89bdb216.webp)
A fast and robust convolutional neural network-based defect detection model in product quality control
检测对象:布匹缺陷
主要方法:作者使用一个多层的CNN网络对布匹缺陷数据集中的六类缺陷样本进行分类,分类结束之后,对于每一类样本进行缺陷检测。具体做法是:1.使用滑动窗口的方法在512×512的原图上进行采样,采样大小为128×128;2.对上部分每一类图像采样后的小图像块进行二分类(有缺陷和无缺陷)。下图为文章两次分类使用的CNN网络,两次分类的区别在于:1.全连接层的输入分别为6和2;2.输入的图像尺寸不同。
滑动窗口:
2.2 检测网络
目标定位是计算机视觉领域中最基本的任务之一, 同时它也是和传统意义上缺陷检测最接近的任务, 其目的是获得目标精准的位置和类别信息。目前, 基于深度学习的目标检测方法层出不穷, 一般来说, 基于深度学习的缺陷检测网络从结构上可以划分为: 以Faster R-CNN为代表的两阶段(two stage)网络和以SSD或YOLO为代表的一阶段(one stage)网络。两者的主要差异在于两阶段网络需要首先生成可能包含缺陷的候选框(proposal), 然后在进一步进行目标检测。一阶段网络直接利用网络中提取的特征来预测缺陷的位置和类别。
TDD-net: a tiny defect detection network for printed circuit boards
检测对象:PCB缺陷主要方法:作者提出了一种针对PCB表面缺陷检测网络(TDD-Net), 该方法通过使用k均值聚类设计合理锚框大小, 其次引入多尺度金字塔网络(FPN)到Faster RCNN中, 加强了来自底层结构信息的融合, 使得网络适应微小的缺陷检测。最后, 考虑到小数据集和样本不平衡的特点, 在训练阶段采用了在线困难样本挖掘(OHEM)技术.该方法在PCB缺陷数据集上达到了98.90%的mAP。图 a 是没有加入FPN的结构,通过特征可视化图片可以看到,随着提取特征层数的增加,电路板的特征越来越模糊,图 b 是加入FPN结构后的可视化图片。
An End-to-end Steel Surface Defect Detection Approach via Fusing Multiple Hierarchical Features
检测对象:钢表面缺陷
主要方法:基于Faster R-CNN的带钢表面缺陷检测网络, 该网络的改进在于提出的多级特征融合网络(MFN)将多个分层特征组合成一个特征,其可以包括缺陷的更多位置细节。基于这些多级特征,采用区域提议网络(RPN)来生成感兴趣区域(ROI).在缺陷检测数据集NEU-DET上, 提出的方法在采用ResNet-50的backbone下实现了82.3%的mAP。
![](https://filescdn.proginn.com/e86028f106f843c517396e67752d115f/ac1a49f5d9a41be636ab34195152e92e.webp)
Automatic Defect Detection of Fasteners on theCatenary Support Device Using Deep Convolutional Neural Network
检测对象:紧固件缺陷缺陷检测
主要方法:作者将深度卷积神经网络(DCNNs)应用到高铁线路紧固件缺陷检测。结合SSD、YOLO等网络方法构建了一个从粗到细的级联检测网络。其过程如下图所示,分成三个阶段,第一阶段采用SSD网络对钢材的悬臂节点及其紧固件进行定位,第二阶段crop出紧固件的图片输入到YOLO网络定位缺陷位置,第三阶段一个分类器对紧固件缺陷进行分类。
![](https://filescdn.proginn.com/863b0c6ab851f9327136d66beb82d034/51c7cdefb373cea266a42dce0b764efc.webp)
2.2 分割网络
分割网络将表面缺陷检测任务转化为缺陷与正常区域的语义分割甚至实例分割问题, 它不但能精细分割出缺陷区域, 而且可以获取缺陷的位置、类别以及相应的几何属性(包括长度、宽度、面积、轮廓、中心等)。按照分割功能的区别, 其大致可以分为:FCN(Fully Convolutional Networks)方法和Mask R-CNN方法两种。
(1)FCN(Fully Convolutional Networks)方法
Automatic Metallic Surface Defect Detection and Recognition with Convolutional Neural Networks
检测对象:金属表面缺陷
主要方法:该方法是基于FCN网络的改进,提出的一种能够对缺陷进行像素级分割和分类的网络,整个网络可以分成两个阶段:缺陷检测阶段和缺陷分类阶段。在缺陷检测阶段,作者设计了一个级联的自动编码器(CASAE),利用编码器对正常区域和缺陷区域的响应不同,通过阈值分割的方式实现缺陷区域的像素级定位。然后将缺陷区域crop出来输入到缺陷分类网络分类缺陷的类别。整个算法的流程如下图所示:
AE Network 全卷积网络:
(2)Mask R-CNN方法
Mask R-CNN是目前最常用的图像实例分割方法之一, 可以被看作是一种基于检测和分割网络相结合的多任务学习方法. 当多个同类型缺陷存在粘连或重叠时, 实例分割能将单个缺陷进行分离并进一步统计缺陷数目, 然而语义分割往往将多个同类型缺陷当作整体进行处理. 目前大部分文献都是直接将Mask R-CNN框架应用于缺陷分割。Automatic defect segmentation on leather with deep learning 实现皮革表面缺陷,Road Damage Detection And Classiflcation In Smartphone Captured Images Using Mask R-CNN 实现路面缺陷分割。
03 缺陷检测的关键问题
缺陷检测的关键问题主要是三个方面分别是小样本、小目标、实时性。
(1)小样本问题,表面缺陷检测中面临的最关键的问题是小样本问题, 在很多真实的工业场景下甚至只有几张或几十张缺陷图片. 实际上, 针对于工业表面缺陷检测中关键问题之一的小样本问题, 目前有3种不同的解决方式:
数据扩增、合成与生成
网络预训练或迁移学习
采用无监督与半监督模型方法
(2)小目标问题,表面缺陷检测中面临的另一个问题是部分缺陷偏小,解决这部分问题可以通过引入特征金字塔结构,将不同阶段的特征图,都融合起来,提高多尺度检测的准确率;最简单的办法是放大图像尺寸;如果是在两阶段检测网络中可以使用 ROI align 替换 ROI pooling;其次,也可以使用GAN对小目标生成一个super-resolved feature叠加在原来的小目标的特征图上,以此增强小目标特征表达。
(3)实时性问题,基于深度学习的缺陷检测方法在工业应用中包括三个主要环节: 数据标注、模型训练与模型推断. 在实际工业应用中的实时性更关注模型推断这一环节。目前大多数缺陷检测方法都集中在分类或识别的准确性上, 而很少关注模型推断的效率. 有不少方法用于加速模型, 例如模型权重量化和模型剪枝等。
04 总结
缺陷检测是一个宽泛的应用领域, 具体包括缺陷分类、缺陷定位和缺陷分割等环节, 相比于传统图像处理方法分多个步骤和环节处理缺陷检测任务, 基于深度学习的方法将其统一为端到端的特征提取和分类。虽然表面缺陷检测技术已经不断地从学术研究走向成熟的工业应用, 但是依然有一些需要解决的问题
推荐阅读
![](https://filescdn.proginn.com/09ebcf80237510aac4790ad6a90580a0/7e6110eeac44672317936aaa742c2d8b.webp)