您的当前位置:首页正文

一文梳理缺陷检测方法

2020-01-18 来源:伴沃教育
⼀⽂梳理缺陷检测⽅法

重磅⼲货,第⼀时间送达

本⽂转载⾃:AI约读社 | ⽂末附缺陷检测交流群

近年来,随着深度学习的快速发展,基于卷积神经⽹络(CNN)的计算机视觉技术在⼯业领域得到了⼴泛的应⽤。⽬前,机器视觉表⾯缺陷检测是CNN在⼯业上最成熟的应⽤之⼀。接下来我们将介绍深度学习在表⾯缺陷检测领域的概述。01

缺陷检测问题的定义

1.1 缺陷的定义当前对于缺陷有两种认知的⽅式,第⼀种是有监督的⽅法,也就是体现在利⽤标记了标签(包括类别、矩形框或逐像素等)的缺陷图像输⼊到⽹络中进⾏训练. 此时'缺陷'意味着标记过的区域或者图像。第⼆种是⽆监督的⽅法,就是将正常⽆缺陷的样本进⾏学习,学习正常区域的特征,⽹络检测异常的区域。1.2 缺陷检测任务缺陷检测的任务⼤致分为三个阶段分别是缺陷分类、缺陷定位、缺陷分割,如下图所⽰,缺陷分类需要分类出缺陷的类别(异⾊、空洞、经线);缺陷定位不仅需要获取缺陷的类别还需要标注出缺陷的位置;缺陷分割将缺陷逐像素从背景中分割出来。02

表⾯缺陷检测的深度学习⽅法

根据缺陷检测的三个阶段其⽅法⼤致可以分为三类分别是分类⽹络、检测⽹络、分割⽹络。2.1 分类⽹络由于CNN强⼤的特征提取能⼒, 采⽤基于CNN的分类⽹络⽬前已成为表⾯缺陷分类中最常⽤的模式⼀般来说,现有表⾯缺陷分类的⽹络常常采⽤计算机视觉中现成的⽹络结构, 包括AlexNet, VGG, GoogLeNet,ResNet, DenseNet, SENet, ShuteNet,MobileNet等。利⽤分类⽹络结合上滑动窗⼝的⽅式可以实现缺陷的定位。Deep learning-based crack damage detectionusing convolutional neural networks检测对象:混凝⼟裂缝主要⽅法:最早采⽤基于滑动窗⼝的CNN分类⽹络实现了裂纹表⾯缺陷定位, 两种滑动窗⼝冗余路径结合实现图像全覆盖, 如图所⽰, 图中(a)为滑动窗⼝路径⽰意图, 图中(b)为裂纹定位的结果图。 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 printedcircuit 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。Automatic Defect Detection of Fasteners on theCatenary Support DeviceUsing Deep Convolutional Neural Network检测对象:紧固件缺陷缺陷检测主要⽅法:作者将深度卷积神经⽹络(DCNNs)应⽤到⾼铁线路紧固件缺陷检测。结合SSD、YOLO等⽹络⽅法构建了⼀个从粗到细的级联检测⽹络。其过程如下图所⽰,分成三个阶段,第⼀阶段采⽤SSD⽹络对钢材的悬臂节点及其紧固件进⾏定位,第⼆阶段crop出紧固件的图⽚输⼊到YOLO⽹络定位缺陷位置,第三阶段⼀个分类器对紧固件缺陷进⾏分类。2.2 分割⽹络分割⽹络将表⾯缺陷检测任务转化为缺陷与正常区域的语义分割甚⾄实例分割问题, 它不但能精细分割出缺陷区域, ⽽且

可以获取缺陷的位置、类别以及相应的⼏何属性(包括长度、宽度、⾯积、轮廓、中⼼等)。按照分割功能的区别, 其⼤致可以分为:FCN(Fully Convolutional Networks)⽅法和Mask R-CNN⽅法两种。(1)FCN(Fully Convolutional Networks)⽅法Automatic Metallic Surface DefectDetection and Recognition with Convolutional Neural Networks检测对象:⾦属表⾯缺陷主要⽅法:该⽅法是基于FCN⽹络的改进,提出的⼀种能够对缺陷进⾏像素级分割和分类的⽹络,整个⽹络可以分成两个阶段:缺陷检测阶段和缺陷分类阶段。在缺陷检测阶段,作者设计了⼀个级联的⾃动编码器(CASAE),利⽤编码器对正常区域和缺陷区域的响应不同,通过阈值分割的⽅式实现缺陷区域的像素级定位。然后将缺陷区域crop出来输⼊到缺陷分类⽹络分类缺陷的类别。整个算法的流程如下图所⽰:AE Network 全卷积⽹络:(2)Mask R-CNN⽅法MaskR-CNN是⽬前最常⽤的图像实例分割⽅法之⼀, 可以被看作是⼀种基于检测和分割⽹络相结合的多任务学习⽅法. 当多个同类型缺陷存在粘连或重叠时, 实例分割能将单个缺陷进⾏分离并进⼀步统计缺陷数⽬, 然⽽语义分割往往将多个同类型缺陷当作整体进⾏处理. ⽬前⼤部分⽂献都是直接将Mask R-CNN框架应⽤于缺陷分割。Automatic defect segmentation on leather with deeplearning 实现⽪⾰表⾯缺陷,Road Damage Detection And Classiflcation In SmartphoneCaptured Images Using Mask R-CNN 实现路⾯缺陷分割。03

缺陷检测的关键问题

缺陷检测的关键问题主要是三个⽅⾯分别是⼩样本、⼩⽬标、实时性。(1)⼩样本问题,表⾯缺陷检测中⾯临的最关键的问题是⼩样本问题, 在很多真实的⼯业场景下甚⾄只有⼏张或⼏⼗张缺陷图⽚. 实际上, 针对于⼯业表⾯缺陷检测中关键问题之⼀的⼩样本问题, ⽬前有3种不同的解决⽅式:数据扩增、合成与⽣成⽹络预训练或迁移学习采⽤⽆监督与半监督模型⽅法(2)⼩⽬标问题,表⾯缺陷检测中⾯临的另⼀个问题是部分缺陷偏⼩,解决这部分问题可以通过引⼊特征⾦字塔结构,将不同阶段的特征图,都融合起来,提⾼多尺度检测的准确率;最简单的办法是放⼤图像尺⼨;如果是在两阶段检测⽹络中可以使⽤ ROI align 替换 ROI pooling;其次,也可以使⽤GAN对⼩⽬标⽣成⼀个super-resolved feature叠加在原来的⼩⽬标的特征图上,以此增强⼩⽬标特征表达。(3)实时性问题,基于深度学习的缺陷检测⽅法在⼯业应⽤中包括三个主要环节: 数据标注、模型训练与模型推断. 在实际⼯业应⽤中的实时性更关注模型推断这⼀环节。⽬前⼤多数缺陷检测⽅法都集中在分类或识别的准确性上, ⽽很少关注模型推断的效率. 有不少⽅法⽤于加速模型, 例如模型权重量化和模型剪枝等。04总结

缺陷检测是⼀个宽泛的应⽤领域, 具体包括缺陷分类、缺陷定位和缺陷分割等环节, 相⽐于传统图像处理⽅法分多个步骤和环节处理缺陷检测任务, 基于深度学习的⽅法将其统⼀为端到端的特征提取和分类。虽然表⾯缺陷检测技术已经不断地从学术研究⾛向成熟的⼯业应⽤, 但是依然有⼀些需要解决的问题。

因篇幅问题不能全部显示,请点此查看更多更全内容